When iterating on a test, I like using the -f|--failfast option of the
unittest module. This patch adds the option to pass it to our
testrunner.
Here's one way to use it (with the babeltrace build dir as the current working
directory):
tests/utils/test_python_bt2_env python3 /home/smarchi/src/babeltrace/tests/utils/python/testrunner.py /home/smarchi/src/babeltrace/tests/bindings/python/bt2/ -f
Note that this is not absolutely essential, it is also possible to call
unittest directly:
tests/utils/test_python_bt2_env python3 -m unittest discover -s /home/smarchi/src/babeltrace/tests/bindings/python/bt2/ -f
However, I prefer using the same runner as what the testsuite uses.
To facilitate the handling of optional arguments, I made the script use
argparse.
Change-Id: Ia4c082dc0952cc8649491b2410ab2d99f1477c1b
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1528
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
from tap import TAPTestRunner
import unittest
import sys
from tap import TAPTestRunner
import unittest
import sys
if __name__ == '__main__':
if __name__ == '__main__':
+ argparser = argparse.ArgumentParser()
+ 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')
+
+ args = argparser.parse_args()
+
loader = unittest.TestLoader()
loader = unittest.TestLoader()
- if len(sys.argv) >= 3:
- pattern = sys.argv[2]
- else:
- pattern = 'test*.py'
+ start_dir = args.start_dir
+ pattern = args.pattern
+ failfast = args.failfast
- tests = loader.discover(sys.argv[1], pattern)
- runner = TAPTestRunner()
+ tests = loader.discover(start_dir, pattern)
+ runner = TAPTestRunner(failfast=failfast)
runner.set_stream(True)
runner.set_format('{method_name}')
sys.exit(0 if runner.run(tests).wasSuccessful() else 1)
runner.set_stream(True)
runner.set_format('{method_name}')
sys.exit(0 if runner.run(tests).wasSuccessful() else 1)