diff options
author | Thomas Miedema <thomasmiedema@gmail.com> | 2015-10-28 12:28:59 +0100 |
---|---|---|
committer | Thomas Miedema <thomasmiedema@gmail.com> | 2015-10-29 09:23:10 +0100 |
commit | 032be43b66db29ca6893bd4219c0d6036201a94e (patch) | |
tree | 21ac0e13f7a8fd6a647b8ec3f8fe2eb7757e4291 /testsuite/driver | |
parent | 08f5c4e3590609c1a9603bd78b089dbb28cff9f8 (diff) | |
download | haskell-032be43b66db29ca6893bd4219c0d6036201a94e.tar.gz |
Testsuite: report and error out on unfound tests
Users are sometimes confused why their test doesn't run. It is usually
because of a misspelled testname, for example using 'TEST=1234' instead
of 'TEST=T1234'. After this patch it is hopefully more clear what the
problem is, showing:
ERROR: tests not found: ['1234']
Instead of:
0 total tests, which gave rise to
0 test cases, of which
0 were skipped
Reviewed by: austin, bgamari
Differential Revision: https://phabricator.haskell.org/D1388
Diffstat (limited to 'testsuite/driver')
-rw-r--r-- | testsuite/driver/runtests.py | 8 | ||||
-rw-r--r-- | testsuite/driver/testglobals.py | 3 | ||||
-rw-r--r-- | testsuite/driver/testlib.py | 12 |
3 files changed, 19 insertions, 4 deletions
diff --git a/testsuite/driver/runtests.py b/testsuite/driver/runtests.py index 491335d29a..0f751f2151 100644 --- a/testsuite/driver/runtests.py +++ b/testsuite/driver/runtests.py @@ -79,7 +79,8 @@ for opt,arg in opts: config.no_print_summary = True if opt == '--only': - config.only.append(arg) + config.run_only_some_tests = True + config.only.add(arg) if opt == '--way': if (arg not in config.run_ways and arg not in config.compile_ways and arg not in config.other_ways): @@ -287,6 +288,11 @@ for file in t_files: t.n_framework_failures = t.n_framework_failures + 1 traceback.print_exc() +if config.only: + # See Note [Mutating config.only] + sys.stderr.write("ERROR: tests not found: {0}\n".format(list(config.only))) + sys.exit(1) + if config.list_broken: global brokens print('') diff --git a/testsuite/driver/testglobals.py b/testsuite/driver/testglobals.py index 95168f3c5e..0891624473 100644 --- a/testsuite/driver/testglobals.py +++ b/testsuite/driver/testglobals.py @@ -23,7 +23,8 @@ class TestConfig: self.rootdirs = [] # Run these tests only (run all tests if empty) - self.only = [] + self.run_only_some_tests = False + self.only = set() # Accept new output which differs from the sample? self.accept = 0 diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py index 3ca5d026f5..45e8d3e295 100644 --- a/testsuite/driver/testlib.py +++ b/testsuite/driver/testlib.py @@ -591,8 +591,16 @@ def runTest (opts, name, func, args): # name :: String # setup :: TestOpts -> IO () def test (name, setup, func, args): - if config.only and name not in config.only: - return + if config.run_only_some_tests: + if name not in config.only: + return + else: + # Note [Mutating config.only] + # config.only is initiallly the set of tests requested by + # the user (via 'make TEST='). We then remove all tests that + # we've already seen (in .T files), so that we can later + # report on any tests we couldn't find and error out. + config.only.remove(name) global aloneTests global parallelTests |