run-tests: add support for marking tests as very slow
I want to add tests for our packaging rules, but those necessarily run
a whole build, or possibly two if both native packaging and docker are
available. This lets us flag such tests with a `#require slow` so that
they don't unnecessarily slow down normal test runs.
--- a/tests/hghave.py Tue Aug 25 00:02:44 2015 -0400
+++ b/tests/hghave.py Mon Aug 24 22:23:45 2015 -0400
@@ -427,3 +427,7 @@
@check("pure", "running with pure Python code")
def has_pure():
return os.environ.get("HGTEST_RUN_TESTS_PURE") == "--pure"
+
+@check("slow", "allow slow tests")
+def has_slow():
+ return os.environ.get('HGTEST_SLOW') == 'slow'
--- a/tests/run-tests.py Tue Aug 25 00:02:44 2015 -0400
+++ b/tests/run-tests.py Mon Aug 24 22:23:45 2015 -0400
@@ -259,6 +259,8 @@
help='run tests in random order')
parser.add_option('--profile-runner', action='store_true',
help='run statprof on run-tests')
+ parser.add_option('--allow-slow-tests', action='store_true',
+ help='allow extremely slow tests')
for option, (envvar, default) in defaults.items():
defaults[option] = type(default)(os.environ.get(envvar, default))
@@ -1835,6 +1837,11 @@
if self.options.pure:
os.environ["HGTEST_RUN_TESTS_PURE"] = "--pure"
+ if self.options.allow_slow_tests:
+ os.environ["HGTEST_SLOW"] = "slow"
+ elif 'HGTEST_SLOW' in os.environ:
+ del os.environ['HGTEST_SLOW']
+
self._coveragefile = os.path.join(self._testdir, b'.coverage')
vlog("# Using TESTDIR", self._testdir)
--- a/tests/test-run-tests.t Tue Aug 25 00:02:44 2015 -0400
+++ b/tests/test-run-tests.t Mon Aug 24 22:23:45 2015 -0400
@@ -621,3 +621,17 @@
# Ran 1 tests, 0 skipped, 0 warned, 0 failed.
#endif
+
+test support for --allow-slow-tests
+ $ cat > test-very-slow-test.t <<EOF
+ > #require slow
+ > $ echo pass
+ > pass
+ > EOF
+ $ run-tests.py test-very-slow-test.t
+ s
+ Skipped test-very-slow-test.t: skipped
+ # Ran 0 tests, 1 skipped, 0 warned, 0 failed.
+ $ run-tests.py --allow-slow-tests test-very-slow-test.t
+ .
+ # Ran 1 tests, 0 skipped, 0 warned, 0 failed.