From 8ea53dd77821d4eb89efdffceb15077006721193 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Fri, 9 Nov 2012 10:43:11 +0100 Subject: [PATCH] Add beginning of automated test suite using pspautotests. --- pspautotests | 2 +- test.py | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 test.py diff --git a/pspautotests b/pspautotests index fc2f34b001..60d3657212 160000 --- a/pspautotests +++ b/pspautotests @@ -1 +1 @@ -Subproject commit fc2f34b001a0c28e53bf0a1ca2004575a38e6959 +Subproject commit 60d365721264c8225074e5cf324ecccdc51ba9db diff --git a/test.py b/test.py new file mode 100644 index 0000000000..473c3af086 --- /dev/null +++ b/test.py @@ -0,0 +1,95 @@ +# Automated script to run the pspautotests test suite in PPSSPP. + +import sys +import io +import os +import subprocess + + +PPSSPP_EXECUTABLES = [ "Windows/Release/PPSSPPHeadless.exe", "SDL/build/ppsspp_headless" ] +PPSSPP_EXE = None +TEST_ROOT = "pspautotests/tests/" + +# Test names are the C files without the .c extension. +# These have worked and should keep working always - regression tests. +tests_good = [ + "cpu/cpu/cpu", + "cpu/fpu/fpu", + "cpu/icache/icache", + "cpu/lsu/lsu", +] + +# These are the next tests up for fixing. +tests_next = [ + +] + +# These are the tests we ignore (not important, or impossible to run) +tests_ignored = [ + +] + + + +def init(): + global PPSSPP_EXE + if not os.path.exists("pspautotests"): + print "Please run git submodule init; git submodule update;" + sys.exit(1) + + if not os.path.exists(TEST_ROOT + "cpu/cpu/cpu.elf"): + print "Please install the pspsdk and run build.sh or build.bat in pspautotests/tests" + sys.exit(1) + + for p in PPSSPP_EXECUTABLES: + if os.path.exists(p): + PPSSPP_EXE = p + break + + if not PPSSPP_EXE: + print "PPSSPP executable missing, please build one." + sys.exit(1) + + + +def run_tests(test_list): + global PPSSPP_EXE + tests_passed = 0 + tests_failed = 0 + + flags = "" + + for test in test_list: + elf_filename = TEST_ROOT + test + ".elf" + expected_filename = TEST_ROOT + test + ".expected" + if not os.path.exists(expected_filename): + print("WARNING: expects file missing, failing test: " + expected_filename) + tests_failed += 1 + continue + + expected_output = open(expected_filename).read() + + cmdline = PPSSPP_EXE + " " + test + ".elf" + proc = subprocess.Popen(cmdline, stdin=subprocess.PIPE, stdout=subprocess.PIPE) + + output = proc.stdout.read() + print output + if output == expected_output: + print "Test passed!" + else: + print "Test failed ============== output:" + print output + print "============== expected output:" + print expected_output + + tests_passed += 1 + + print "%i tests passed, %i tests failed" % (tests_passed, tests_failed) + + +def main(): + init() + if len(sys.argv) == 1: + run_tests(tests_good) + +main()