changeset b5435e0310c7 in /z/repo/gem5
details: http://repo.gem5.org/gem5?cmd=changeset;node=b5435e0310c7
description:
        tests: Add a test command to get test status as an exit code

        Add a "test" command to tests.py that queries a test pickle file and
        returns different exit codes depending on the outcome of the tests in
        the file. The following exit codes can currently be returned:

          * 0: All tests were successful or skipped.

          * 1: General fault in the script such as incorrect parameters or
            failing to parse a pickle file.

          * 2: At least one test failed to run. This is what the summary
            formatter usually shows as a 'FAILED'.

          * 3: All tests ran correctly, but at least one failed to verify
            its output. When displaying test output using the summary
            formatter, such a test would show up as 'CHANGED'.

        The command can be invoked like this:

        ./tests/tests.py test `find build/ARM/tests/opt/ -name status.pickle`

        Change-Id: I7e6bc661516f38ff08dfda7c4359a1e10bf97864
        Signed-off-by: Andreas Sandberg <[email protected]>
        Reviewed-by: Curtis Dunham <[email protected]>

diffstat:

 tests/tests.py |  42 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 42 insertions(+), 0 deletions(-)

diffs (56 lines):

diff -r ecd058e3dcbe -r b5435e0310c7 tests/tests.py
--- a/tests/tests.py    Mon Jun 20 14:50:34 2016 +0100
+++ b/tests/tests.py    Mon Jun 20 14:50:43 2016 +0100
@@ -241,10 +241,52 @@
     suites = sum([ pickle.load(f) for f in args.result ], [])
     formatter.dump_suites(suites)
 
+def _test_args(subparsers):
+    parser = subparsers.add_parser(
+        "test",
+        formatter_class=ParagraphHelpFormatter,
+        help='Probe test results and set exit code',
+        epilog="""
+
+        Load one or more pickled test file and return an exit code
+        corresponding to the test outcome. The following exit codes
+        can be returned:
+
+        0: All tests were successful or skipped.
+
+        1: General fault in the script such as incorrect parameters or
+        failing to parse a pickle file.
+
+        2: At least one test failed to run. This is what the summary
+        formatter usually shows as a 'FAILED'.
+
+        3: All tests ran correctly, but at least one failed to
+        verify its output. When displaying test output using the
+        summary formatter, such a test would show up as 'CHANGED'.
+        """)
+
+    _add_format_args(parser)
+
+    parser.add_argument("result", type=argparse.FileType("rb"), nargs="*",
+                        help="Pickled test results")
+
+def _test(args):
+    suites = sum([ pickle.load(f) for f in args.result ], [])
+
+    if all(s for s in suites):
+        sys.exit(0)
+    elif any([ s.failed_run() for s in suites ]):
+        sys.exit(2)
+    elif any([ s.changed() for s in suites ]):
+        sys.exit(3)
+    else:
+        assert False, "Unexpected return status from test"
+
 _commands = {
     "list" : (_list_tests, _list_tests_args),
     "run" : (_run_tests, _run_tests_args),
     "show" : (_show, _show_args),
+    "test" : (_test, _test_args),
 }
 
 def main():
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to