Title: [253947] trunk/Tools
Revision
253947
Author
[email protected]
Date
2019-12-30 09:17:00 -0800 (Mon, 30 Dec 2019)

Log Message

[GTK][WPE] Report number of total tests run and failed in API test runner like run-api-tests does
https://bugs.webkit.org/show_bug.cgi?id=205608

Reviewed by Carlos Garcia Campos.

Calculate the total number of tests (including subtests) executed
and report it at the end of the step in the same format than run-api-tests does.

* glib/api_test_runner.py:
(TestRunner._run_test_glib): Pass the list of skipped tests instead of calculating it here to avoid calculating it twice.
(TestRunner._get_tests_from_google_test_suite): Ditto.
(TestRunner._run_google_test_suite): Ditto.
(TestRunner._run_test): Ditto.
(TestRunner.run_tests):
(TestRunner.run_tests.number_of_tests):
(TestRunner.run_tests.report):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (253946 => 253947)


--- trunk/Tools/ChangeLog	2019-12-30 17:10:13 UTC (rev 253946)
+++ trunk/Tools/ChangeLog	2019-12-30 17:17:00 UTC (rev 253947)
@@ -1,5 +1,24 @@
 2019-12-30  Carlos Alberto Lopez Perez  <[email protected]>
 
+        [GTK][WPE] Report number of total tests run and failed in API test runner like run-api-tests does
+        https://bugs.webkit.org/show_bug.cgi?id=205608
+
+        Reviewed by Carlos Garcia Campos.
+
+        Calculate the total number of tests (including subtests) executed
+        and report it at the end of the step in the same format than run-api-tests does.
+
+        * glib/api_test_runner.py:
+        (TestRunner._run_test_glib): Pass the list of skipped tests instead of calculating it here to avoid calculating it twice.
+        (TestRunner._get_tests_from_google_test_suite): Ditto.
+        (TestRunner._run_google_test_suite): Ditto.
+        (TestRunner._run_test): Ditto.
+        (TestRunner.run_tests):
+        (TestRunner.run_tests.number_of_tests):
+        (TestRunner.run_tests.report):
+
+2019-12-30  Carlos Alberto Lopez Perez  <[email protected]>
+
         [GTK][WPE] support output of results in json format in API test runner.
         https://bugs.webkit.org/show_bug.cgi?id=205579
 

Modified: trunk/Tools/glib/api_test_runner.py (253946 => 253947)


--- trunk/Tools/glib/api_test_runner.py	2019-12-30 17:10:13 UTC (rev 253946)
+++ trunk/Tools/glib/api_test_runner.py	2019-12-30 17:17:00 UTC (rev 253947)
@@ -159,13 +159,13 @@
                     return 0
                 raise
 
-    def _run_test_glib(self, test_program):
+    def _run_test_glib(self, test_program, skipped_test_cases):
         timeout = self._options.timeout
 
         def is_slow_test(test, subtest):
             return self._expectations.is_slow(test, subtest)
 
-        return GLibTestRunner(test_program, timeout, is_slow_test, timeout * 10).run(skipped=self._test_cases_to_skip(test_program), env=self._test_env)
+        return GLibTestRunner(test_program, timeout, is_slow_test, timeout * 10).run(skipped=skipped_test_cases, env=self._test_env)
 
     def _run_test_qt(self, test_program):
         env = self._test_env
@@ -194,7 +194,7 @@
             print("**PASS** %s" % name)
         return {name: result}
 
-    def _get_tests_from_google_test_suite(self, test_program):
+    def _get_tests_from_google_test_suite(self, test_program, skipped_test_cases):
         try:
             output = subprocess.check_output([test_program, '--gtest_list_tests'], env=self._test_env)
         except subprocess.CalledProcessError:
@@ -202,8 +202,6 @@
             sys.stderr.flush()
             return 1
 
-        skipped_test_cases = self._test_cases_to_skip(test_program)
-
         tests = []
         prefix = None
         for line in output.split('\n'):
@@ -247,9 +245,9 @@
 
         return {subtest: "PASS"}
 
-    def _run_google_test_suite(self, test_program):
+    def _run_google_test_suite(self, test_program, skipped_test_cases):
         result = {}
-        for subtest in self._get_tests_from_google_test_suite(test_program):
+        for subtest in self._get_tests_from_google_test_suite(test_program, skipped_test_cases):
             result.update(self._run_google_test(test_program, subtest))
         return result
 
@@ -262,13 +260,14 @@
     def is_qt_test(self, test_program):
         raise NotImplementedError
 
-    def _run_test(self, test_program):
+    def _run_test(self, test_program, skipped_test_cases):
         if self.is_glib_test(test_program):
-            return self._run_test_glib(test_program)
+            return self._run_test_glib(test_program, skipped_test_cases)
 
         if self.is_google_test(test_program):
-            return self._run_google_test_suite(test_program)
+            return self._run_google_test_suite(test_program, skipped_test_cases)
 
+        # FIXME: support skipping Qt subtests
         if self.is_qt_test(test_program):
             return self._run_test_qt(test_program)
 
@@ -282,9 +281,11 @@
 
         self._setup_testing_environment()
 
+        number_of_total_tests = len(self._tests)
         # Remove skipped tests now instead of when we find them, because
         # some tests might be skipped while setting up the test environment.
         self._tests = [test for test in self._tests if self._should_run_test_program(test)]
+        number_of_executed_tests = len(self._tests)
 
         crashed_tests = {}
         failed_tests = {}
@@ -292,7 +293,13 @@
         passed_tests = {}
         try:
             for test in self._tests:
-                results = self._run_test(test)
+                skipped_subtests = self._test_cases_to_skip(test)
+                number_of_total_tests += len(skipped_subtests)
+                results = self._run_test(test, skipped_subtests)
+                number_of_executed_subtests_for_test = len(results)
+                if number_of_executed_subtests_for_test > 1:
+                    number_of_executed_tests += number_of_executed_subtests_for_test
+                    number_of_total_tests += number_of_executed_subtests_for_test
                 for test_case, result in results.iteritems():
                     if result in self._expectations.get_expectation(os.path.basename(test), test_case):
                         continue
@@ -308,10 +315,13 @@
         finally:
             self._tear_down_testing_environment()
 
+        def number_of_tests(tests):
+            return sum(len(value) for value in tests.itervalues())
+
         def report(tests, title, base_dir):
             if not tests:
                 return
-            sys.stdout.write("\nUnexpected %s (%d)\n" % (title, sum(len(value) for value in tests.itervalues())))
+            sys.stdout.write("\nUnexpected %s (%d)\n" % (title, number_of_tests(tests)))
             for test in tests:
                 sys.stdout.write("    %s\n" % (test.replace(base_dir, '', 1)))
                 for test_case in tests[test]:
@@ -340,9 +350,16 @@
             result_dictionary['Timedout'] = generate_test_list_for_json_output(self._test_programs_base_dir(), timed_out_tests)
             self._port.host.filesystem.write_text_file(self._options.json_output, json.dumps(result_dictionary, indent=4))
 
-        return len(failed_tests) + len(timed_out_tests)
+        number_of_failed_tests = number_of_tests(failed_tests) + number_of_tests(timed_out_tests) + number_of_tests(crashed_tests)
+        number_of_successful_tests = number_of_executed_tests - number_of_failed_tests
 
+        sys.stdout.write("\nRan %d tests of %d with %d successful\n" % (number_of_executed_tests, number_of_total_tests, number_of_successful_tests))
+        sys.stdout.flush()
 
+        return number_of_failed_tests
+
+
+
 def add_options(option_parser):
     option_parser.add_option('-r', '--release',
                              action='', dest='release',
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to