diff --git a/lib/spack/spack/test/__init__.py b/lib/spack/spack/test/__init__.py index 0a946ff2fff4836af014e8c2171b793925c3a364..f6847d29292699ab897df840bfdfb80a47f0d469 100644 --- a/lib/spack/spack/test/__init__.py +++ b/lib/spack/spack/test/__init__.py @@ -107,25 +107,33 @@ def run(names, outputDir, verbose=False): sys.exit(1) tally = Tally() - for test in names: - module = 'spack.test.' + test - print(module) - tty.msg("Running test: %s" % test) + modules = ['spack.test.' + test for test in names] + runOpts = ["--with-%s" % spack.test.tally_plugin.Tally.name] - runOpts = ["--with-%s" % spack.test.tally_plugin.Tally.name] - - if outputDir: - xmlOutputFname = "unittests-{0}.xml".format(test) - xmlOutputPath = join_path(outputDir, xmlOutputFname) - runOpts += ["--with-xunit", - "--xunit-file={0}".format(xmlOutputPath)] - argv = [""] + runOpts + [module] - nose.run(argv=argv, addplugins=[tally]) + if outputDir: + xmlOutputFname = "unittests-{0}.xml".format(test) + xmlOutputPath = join_path(outputDir, xmlOutputFname) + runOpts += ["--with-xunit", + "--xunit-file={0}".format(xmlOutputPath)] + argv = [""] + runOpts + modules + nose.run(argv=argv, addplugins=[tally]) succeeded = not tally.failCount and not tally.errorCount - tty.msg("Tests Complete.", "%5d tests run" % tally.numberOfTestsRun, - "%5d failures" % tally.failCount, "%5d errors" % tally.errorCount) + tty.msg( + "Tests Complete.", + "%5d tests run" % tally.numberOfTestsRun, + "%5d failures" % tally.failCount, + "%5d errors" % tally.errorCount + ) + + if tally.fail_list: + items = [x for x in tally.fail_list] + tty.msg('List of failing tests:', *items) + + if tally.error_list: + items = [x for x in tally.error_list] + tty.msg('List of tests with errors:', *items) if succeeded: tty.info("OK", format='g') diff --git a/lib/spack/spack/test/tally_plugin.py b/lib/spack/spack/test/tally_plugin.py index 808694d186cafe49e5f0c9e8f2e97b3fe78d5dcc..d848f2cb9fcad361eb6ce8cb4e7128df5eaf096e 100644 --- a/lib/spack/spack/test/tally_plugin.py +++ b/lib/spack/spack/test/tally_plugin.py @@ -35,6 +35,8 @@ def __init__(self): self.successCount = 0 self.failCount = 0 self.errorCount = 0 + self.error_list = [] + self.fail_list = [] @property def numberOfTestsRun(self): @@ -52,9 +54,11 @@ def addSuccess(self, test): def addError(self, test, err): self.errorCount += 1 + self.error_list.append(test) def addFailure(self, test, err): self.failCount += 1 + self.fail_list.append(test) def finalize(self, result): pass