diff --git a/avocado/plugins/list.py b/avocado/plugins/list.py index 9bec95d3e6ae277265105c253672cd83aca52686..e906ac76812540651a8f27b26d2eede3ccda194a 100644 --- a/avocado/plugins/list.py +++ b/avocado/plugins/list.py @@ -57,6 +57,7 @@ class TestLister(object): decorator_mapping = loader.loader.get_decorator_mapping() stats = {} + tag_stats = {} for value in type_label_mapping.values(): stats[value.lower()] = 0 @@ -83,14 +84,19 @@ class TestLister(object): tags = params['tags'] else: tags = set() + for tag in tags: + if tag not in tag_stats: + tag_stats[tag] = 1 + else: + tag_stats[tag] += 1 tags = ",".join(tags) test_matrix.append((type_label, id_label, tags)) else: test_matrix.append((type_label, id_label)) - return test_matrix, stats + return test_matrix, stats, tag_stats - def _display(self, test_matrix, stats): + def _display(self, test_matrix, stats, tag_stats): header = None if self.args.verbose: header = (output.TERM_SUPPORT.header_str('Type'), @@ -101,10 +107,19 @@ class TestLister(object): LOG_UI.debug(line) if self.args.verbose: - LOG_UI.debug("") + LOG_UI.info("") + LOG_UI.info("TEST TYPES SUMMARY") + LOG_UI.info("==================") for key in sorted(stats): LOG_UI.info("%s: %s", key.upper(), stats[key]) + if tag_stats: + LOG_UI.info("") + LOG_UI.info("TEST TAGS SUMMARY") + LOG_UI.info("=================") + for key in sorted(tag_stats): + LOG_UI.info("%s: %s", key, tag_stats[key]) + def _list(self): self._extra_listing() test_suite = self._get_test_suite(self.args.reference) @@ -113,8 +128,8 @@ class TestLister(object): test_suite, self.args.filter_by_tags, self.args.filter_by_tags_include_empty) - test_matrix, stats = self._get_test_matrix(test_suite) - self._display(test_matrix, stats) + test_matrix, stats, tag_stats = self._get_test_matrix(test_suite) + self._display(test_matrix, stats, tag_stats) def list(self): try: diff --git a/docs/source/GetStartedGuide.rst b/docs/source/GetStartedGuide.rst index 18a738e71cc67ae8bf2a0f79eae505e1f361189a..fd0c2cfa7439c492579d0952c4e28cf80b429ced 100644 --- a/docs/source/GetStartedGuide.rst +++ b/docs/source/GetStartedGuide.rst @@ -268,6 +268,8 @@ display files that were found by Avocado, but are not considered Avocado tests:: NOT_A_TEST examples/gdb-prerun-scripts/README NOT_A_TEST examples/gdb-prerun-scripts/pass-sigusr1 + TEST TYPES SUMMARY + ================== SIMPLE: 0 INSTRUMENTED: 0 MISSING: 0 diff --git a/docs/source/WritingTests.rst b/docs/source/WritingTests.rst index 2f638557c613785c391f8a836675c0049a0204bb..244969fbcba1f1cfe994a09c88f845140999de29 100644 --- a/docs/source/WritingTests.rst +++ b/docs/source/WritingTests.rst @@ -1186,6 +1186,8 @@ If you try to list the tests in that file, this is what you'll get:: Type Test Tag(s) NOT_A_TEST mytest.py + TEST TYPES SUMMARY + ================== ACCESS_DENIED: 0 BROKEN_SYMLINK: 0 EXTERNAL: 0 @@ -1224,6 +1226,8 @@ Now, trying to list the tests on the ``mytest.py`` file again:: INSTRUMENTED mytest.py:MyTest.test1 INSTRUMENTED mytest.py:MyTest.test2 + TEST TYPES SUMMARY + ================== ACCESS_DENIED: 0 BROKEN_SYMLINK: 0 EXTERNAL: 0 diff --git a/man/avocado.rst b/man/avocado.rst index 150332554a48c9edbbc847753a38ad496a2bdfe8..b31501bcf2c7bf4ca343bc8f49f3bac206d6b064 100644 --- a/man/avocado.rst +++ b/man/avocado.rst @@ -608,6 +608,8 @@ are not avocado tests, along with summary information:: NOT_A_TEST examples/gdb-prerun-scripts/README NOT_A_TEST examples/gdb-prerun-scripts/pass-sigusr1 + TEST TYPES SUMMARY + ================== SIMPLE: 0 INSTRUMENTED: 0 MISSING: 0 diff --git a/selftests/functional/test_basic.py b/selftests/functional/test_basic.py index 67c030808b3e9b5b6abf10f2247f56d30b165a89..18d29ac29d2507adcd4acfef60796b960be467d0 100644 --- a/selftests/functional/test_basic.py +++ b/selftests/functional/test_basic.py @@ -934,6 +934,8 @@ class PluginsTest(AbsPluginsTest, unittest.TestCase): % (exit_codes.AVOCADO_ALL_OK, result)) exp = ("Type Test Tag(s)\n" "MISSING this-wont-be-matched \n\n" + "TEST TYPES SUMMARY\n" + "==================\n" "EXTERNAL: 0\n" "MISSING: 1\n") self.assertEqual(exp, result.stdout, "Stdout mismatch:\n%s\n\n%s" @@ -957,6 +959,10 @@ class PluginsTest(AbsPluginsTest, unittest.TestCase): full_test_name = "%s:MyTest.test" % test self.assertEquals("INSTRUMENTED %s BIG_TAG_NAME" % full_test_name, stdout_lines[1]) + self.assertIn("TEST TYPES SUMMARY", stdout_lines) + self.assertIn("INSTRUMENTED: 1", stdout_lines) + self.assertIn("TEST TAGS SUMMARY", stdout_lines) + self.assertEquals("BIG_TAG_NAME: 1", stdout_lines[-1]) def test_plugin_list(self): os.chdir(basedir)