fix(ci): skip the VideoOut window tests without a display, as check_skips expects
Main's Linux job fails since #1028 and #1714: guest_video_out_resolution_status aborts when SDL's offscreen driver has no Vulkan window, and check_skips.py rejects the skips of guest_video_out_wqhd_detection and the flip tests because "no display" is not among the device limitations it accepts. The resolution status test now skips with code 77 like its wqhd sibling, the flip tests print the same skip reason, and check_skips.py accepts "no display" as a device limitation. ANYPS5_REQUIRE_DISPLAY still turns the skip into a failure.
This commit is contained in:
parent
1f0c9fef56
commit
df270d59eb
|
|
@ -76,7 +76,7 @@ if(BUILD_TESTING)
|
|||
target_link_libraries(guest_video_out_resolution_status_tests PRIVATE libSceVideoOut libSceAgcDriver libkernel libc)
|
||||
configure_windows_unwind(guest_video_out_resolution_status_tests)
|
||||
add_test(NAME guest_video_out_resolution_status COMMAND guest_video_out_resolution_status_tests)
|
||||
set_tests_properties(guest_video_out_resolution_status PROPERTIES TIMEOUT 20)
|
||||
set_tests_properties(guest_video_out_resolution_status PROPERTIES TIMEOUT 20 SKIP_RETURN_CODE 77)
|
||||
if(WIN32)
|
||||
set_tests_properties(guest_video_out_resolution_status PROPERTIES ENVIRONMENT_MODIFICATION
|
||||
"PATH=path_list_prepend:$<TARGET_FILE_DIR:libc>")
|
||||
|
|
|
|||
|
|
@ -563,7 +563,10 @@ int main(int argc, char** argv) {
|
|||
std::fprintf(stderr, "%s\n", error.what());
|
||||
try { LibcRunShutdown_nid_postfix(); }
|
||||
catch (const std::exception& shutdown) { std::fprintf(stderr, "shutdown: %s\n", shutdown.what()); }
|
||||
if (std::string(error.what()).find("Vulkan support") != std::string::npos && !std::getenv("ANYPS5_REQUIRE_DISPLAY")) return 77;
|
||||
if (std::string(error.what()).find("Vulkan support") != std::string::npos && !std::getenv("ANYPS5_REQUIRE_DISPLAY")) {
|
||||
std::printf("skipped, no display or Vulkan device: %s\n", error.what());
|
||||
return 77;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "SceTypes.hpp"
|
||||
#include "prx/libc/include/Shutdown.hpp"
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <stdexcept>
|
||||
|
|
@ -27,7 +28,14 @@ static bool Rejects(int handle, VideoOutResolutionStatus* status) {
|
|||
}
|
||||
|
||||
int main() {
|
||||
const int handle = sceVideoOutOpen(SYSTEM_USER, MAIN_BUS, 0, nullptr);
|
||||
int handle = 0;
|
||||
try {
|
||||
handle = sceVideoOutOpen(SYSTEM_USER, MAIN_BUS, 0, nullptr);
|
||||
} catch (const std::runtime_error& error) {
|
||||
if (std::getenv("ANYPS5_REQUIRE_DISPLAY") != nullptr) throw;
|
||||
std::printf("skipped, no display or Vulkan device: %s\n", error.what());
|
||||
return 77;
|
||||
}
|
||||
Require(handle > 0);
|
||||
|
||||
VideoOutResolutionStatus status;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import re
|
|||
import xml.etree.ElementTree as ET
|
||||
from pathlib import Path
|
||||
|
||||
DEVICE_LIMITATION = re.compile(r"skipped,.*(subgroup|the device has no|the device reports)", re.IGNORECASE)
|
||||
DEVICE_LIMITATION = re.compile(r"skipped,.*(subgroup|the device has no|the device reports|no display)", re.IGNORECASE)
|
||||
|
||||
WINDOWS_PREFIX = "agc"
|
||||
|
||||
|
|
@ -36,7 +36,7 @@ if __name__ == "__main__":
|
|||
expected = f"any {WINDOWS_PREFIX}* test, which the runner has no Vulkan driver for"
|
||||
else:
|
||||
unexpected = [name for name, output in found if not DEVICE_LIMITATION.search(output)]
|
||||
expected = "any test that reports the device limitation it needs, such as narrow subgroups or a missing extension"
|
||||
expected = "any test that reports the device limitation it needs, such as narrow subgroups, a missing extension or no display for a Vulkan window"
|
||||
for name in unexpected:
|
||||
print(f"error: {name} skipped")
|
||||
if unexpected:
|
||||
|
|
|
|||
Loading…
Reference in New Issue