Merge pull request #3390 from GalaxyGamingFR/fix/check-skips-device-messages
fix(ci): recognise every device-limitation skip message in check_skips
This commit is contained in:
commit
5c4bc7d607
|
|
@ -55,6 +55,8 @@ if(BUILD_TESTING)
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/tools/tests/test_check_conventions_comments.py)
|
||||
add_test(NAME test_registration COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tools/tests/test_test_registration.py)
|
||||
add_test(NAME check_skips COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tools/tests/test_check_skips.py)
|
||||
add_test(NAME hardware_oracle COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/tools/hw-oracle/test_hw_oracle.py)
|
||||
add_test(NAME pr_overlap_exports COMMAND ${Python3_EXECUTABLE}
|
||||
|
|
|
|||
|
|
@ -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|no display)", re.IGNORECASE)
|
||||
DEVICE_LIMITATION = re.compile(r"skipped,.*(subgroup|the device (has no|reports|lacks|does not|imports no|flushes|binds fewer)|no display|no usable Vulkan device|host imports are unavailable)", re.IGNORECASE)
|
||||
|
||||
NO_DISPLAY = re.compile(r"skipped,.*no display", re.IGNORECASE)
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
from pathlib import Path
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
||||
import check_skips
|
||||
|
||||
TOOL = Path(__file__).resolve().parents[1] / "check_skips.py"
|
||||
|
||||
LIMITATIONS = [
|
||||
"skipped, the device lacks fragmentShaderPixelInterlock",
|
||||
"skipped, the device lacks geometryShader",
|
||||
"skipped, the device lacks shaderSubgroupClock",
|
||||
"skipped, the device does not import guest memory",
|
||||
"skipped, the device imports no host memory",
|
||||
"skipped, the device flushes f64 subnormals without DenormPreserve",
|
||||
"skipped, the device binds fewer than 8 storage buffers per stage or set",
|
||||
"skipped, no usable Vulkan device: ErrorInitializationFailed",
|
||||
"skipped, unit shadows or host imports are unavailable",
|
||||
"skipped, the device has no compute queue",
|
||||
"skipped, the device reports 4 lanes",
|
||||
"skipped, subgroup size 8",
|
||||
"skipped, no display",
|
||||
]
|
||||
|
||||
OTHER = [
|
||||
"skipped, flaky",
|
||||
"skipped, APS5_RAYTRACING replaces the node",
|
||||
"skipped, interpolation modes require",
|
||||
]
|
||||
|
||||
|
||||
class CheckSkipsTests(unittest.TestCase):
|
||||
def test_device_limitations_match(self):
|
||||
for message in LIMITATIONS:
|
||||
with self.subTest(message=message):
|
||||
self.assertTrue(check_skips.DEVICE_LIMITATION.search(message))
|
||||
|
||||
def test_other_reasons_do_not_match(self):
|
||||
for message in OTHER:
|
||||
with self.subTest(message=message):
|
||||
self.assertFalse(check_skips.DEVICE_LIMITATION.search(message))
|
||||
|
||||
def test_only_unexpected_skip_is_reported(self):
|
||||
xml = (
|
||||
'<testsuites><testsuite>'
|
||||
'<testcase name="geometry"><skipped/><system-out>skipped, the device lacks geometryShader</system-out></testcase>'
|
||||
'<testcase name="odd"><skipped/><system-out>skipped, flaky</system-out></testcase>'
|
||||
'</testsuite></testsuites>'
|
||||
)
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
junit = Path(directory) / "junit.xml"
|
||||
junit.write_text(xml, encoding="utf-8")
|
||||
result = subprocess.run([sys.executable, "-I", str(TOOL), str(junit), "--job", "linux"], capture_output=True, text=True)
|
||||
self.assertEqual(result.returncode, 1)
|
||||
self.assertIn("error: odd skipped", result.stdout)
|
||||
self.assertNotIn("error: geometry skipped", result.stdout)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Reference in New Issue