# The retro-remote-debug-controller conformance suite against the x16emu the # build job made on narvi-1, as .github/workflows/conformance.yml runs it on # x86: headless (SDL's dummy drivers), -warp, on a loopback port, with a # zero-filled ROM, since the suite exercises the control API, not the ROM. # pytest's JUnit XML goes to the hub's Tests tab, kept when the job fails too. set -eu chmod +x x16emu truncate -s 262144 dummy-rom.bin export RRDC_PORT=8080 export RRDC_BOOT_TIMEOUT=60 export RRDC_EMU_CMD="SDL_VIDEODRIVER=dummy SDL_AUDIODRIVER=dummy $PWD/x16emu -rom $PWD/dummy-rom.bin -warp -controlport {port}" status=0 (cd src/extern/retro-remote-debug-controller/conformance && python3 -m pytest -v -rs -p no:cacheprovider --junitxml=/src/junit.xml) || status=$? # A suite that skipped every test never reached the emulator: that is a # failure here, where one is always there to reach. python3 - <<'PY' import sys import xml.etree.ElementTree as ET root = ET.parse("/src/junit.xml").getroot() suites = [root] if root.tag == "testsuite" else list(root) tests = sum(int(s.get("tests", 0)) for s in suites) skipped = sum(int(s.get("skipped", 0)) for s in suites) print(f"conformance: {tests} tests, {skipped} skipped") if tests == 0 or skipped == tests: sys.exit("conformance: every test skipped: the emulator did not answer on its control port") PY exit $status