tests: bt2: add `--test-case` argument to testrunner.py
[babeltrace.git] / tests / utils / python / testrunner.py
index cb1bdcda3e16f177c0faf744496acb63f78a323f..d3879b6a00ab9ff36e6f2b8b5409e43cca3587a7 100644 (file)
@@ -31,14 +31,24 @@ if __name__ == '__main__':
     argparser.add_argument('-f', '--failfast',
                            help='Stop on first fail or error',
                            action='store_true')
+
     argparser.add_argument('start_dir',
                            help='Base directory where to search for tests',
                            type=str)
-    argparser.add_argument('pattern',
-                           help='Glob-style pattern of tests to run',
-                           type=str,
-                           nargs='?',
-                           default='test*.py')
+
+    mut_exclu_group = argparser.add_mutually_exclusive_group(required=True)
+
+    mut_exclu_group.add_argument('-p', '--pattern',
+                           help='Glob-style pattern of test files to run '
+                           '(e.g. test_event*.py)',
+                           type=str)
+
+    mut_exclu_group.add_argument('-t', '--test-case',
+                           help='Run a specfic test module name, test class '
+                           'name, or test method name '
+                           '(e.g. test_event.EventTestCase.test_clock_value)',
+                           type=str)
+
 
     args = argparser.parse_args()
 
@@ -47,8 +57,19 @@ if __name__ == '__main__':
     start_dir = args.start_dir
     pattern = args.pattern
     failfast = args.failfast
+    test_case = args.test_case
+
+    if test_case:
+        sys.path.append(start_dir)
+        tests = loader.loadTestsFromName(test_case)
+    elif pattern:
+        tests = loader.discover(start_dir, pattern)
+    else:
+        # This will never happen because the mutual exclusion group has the
+        # `required` parameter set to True. So one or the other must be set or
+        # else it will fail to parse.
+        sys.exit(1)
 
-    tests = loader.discover(start_dir, pattern)
 
     if tests.countTestCases() < 1:
         print("No tests matching '%s' found in '%s'" % (pattern, start_dir))
This page took 0.024592 seconds and 4 git commands to generate.