Changeset 112404 in webkit


Ignore:
Timestamp:
Mar 28, 2012 8:47:15 AM (12 years ago)
Author:
Carlos Garcia Campos
Message:

[GTK] Use gtester -s to skip individual test cases instead of unit tests as a whole
https://bugs.webkit.org/show_bug.cgi?id=82333

Reviewed by Martin Robinson.

  • Scripts/run-gtk-tests:

(TestRunner.SkippedTest): Add SkippedTest class to store more
information about skipped tests.
(TestRunner._setup_testing_environment): Use SkippedTest to add
TestWebKitAccessibility to the skipped list.
(TestRunner._find_skipped_test): Return the SkippedTest object for
a given test path.
(TestRunner._test_cases_to_skip): Returns the list of test cases
that should be skipped for a given test path.
(TestRunner._should_run_test): Helper funtion to decide whether
the given test path should be run or not. Tests in the skipped
list that don't have a list of failing test cases are not run at
all. Tests in the skipped list that contain a list of test cases
are run with gtester -s to skip the individual test cases.
(TestRunner._run_test): Helper funtion to run a given test.
(TestRunner.run_tests): Build the list of tests to run based on
_should_run_test() and use helper function _run_test() to run
every test.

Location:
trunk/Tools
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Tools/ChangeLog

    r112397 r112404  
     12012-03-28  Carlos Garcia Campos  <cgarcia@igalia.com>
     2
     3        [GTK] Use gtester -s to skip individual test cases instead of unit tests as a whole
     4        https://bugs.webkit.org/show_bug.cgi?id=82333
     5
     6        Reviewed by Martin Robinson.
     7
     8        * Scripts/run-gtk-tests:
     9        (TestRunner.SkippedTest): Add SkippedTest class to store more
     10        information about skipped tests.
     11        (TestRunner._setup_testing_environment): Use SkippedTest to add
     12        TestWebKitAccessibility to the skipped list.
     13        (TestRunner._find_skipped_test): Return the SkippedTest object for
     14        a given test path.
     15        (TestRunner._test_cases_to_skip): Returns the list of test cases
     16        that should be skipped for a given test path.
     17        (TestRunner._should_run_test): Helper funtion to decide whether
     18        the given test path should be run or not. Tests in the skipped
     19        list that don't have a list of failing test cases are not run at
     20        all. Tests in the skipped list that contain a list of test cases
     21        are run with gtester -s to skip the individual test cases.
     22        (TestRunner._run_test): Helper funtion to run a given test.
     23        (TestRunner.run_tests): Build the list of tests to run based on
     24        _should_run_test() and use helper function _run_test() to run
     25        every test.
     26
    1272012-03-28  Csaba Osztrogonác  <ossy@webkit.org>
    228
  • trunk/Tools/Scripts/run-gtk-tests

    r112261 r112404  
    2727TIMEOUT=180 # seconds
    2828
     29class SkippedTest:
     30    def __init__(self, test, reason, bug=None, test_cases=[]):
     31        self.test = test
     32        self.reason = reason
     33        self.bug = bug
     34        self.test_cases = test_cases
     35
     36    def __str__(self):
     37        skipped_test_str = "%s" % self.test
     38        if self.test_cases:
     39            skipped_test_str += " [%s]" % ", ".join(self.test_cases)
     40        skipped_test_str += ": %s " % self.reason
     41        if self.bug is not None:
     42            skipped_test_str += "(https://bugs.webkit.org/show_bug.cgi?id=%d)" % self.bug
     43        return skipped_test_str
     44
    2945class TestRunner:
    3046
    3147    TEST_DIRS = [ "unittests", "WebKit2APITests" ]
    32     # FIXME: https://bugs.webkit.org/show_bug.cgi?id=74717
     48
    3349    SKIPPED = [
    34         # https://bugs.webkit.org/show_bug.cgi?id=82329
    35         "unittests/testdownload",
    36         # https://bugs.webkit.org/show_bug.cgi?id=82328
    37         "unittests/testwebview",
    38         # https://bugs.webkit.org/show_bug.cgi?id=82330
    39         "unittests/testwebresource"
     50        SkippedTest("unittests/testdownload",
     51                    "Test fails in GTK Linux 64-bit Release bot",
     52                    82329,
     53                    ["/webkit/download/not-found"]),
     54        SkippedTest("unittests/testwebview",
     55                    "Test times out in GTK Linux 64-bit Release bot",
     56                    82328,
     57                    ["/webkit/webview/icon-uri"]),
     58        SkippedTest("unittests/testwebresource",
     59                    "Test fails in GTK Linux 64-bit Release bot",
     60                    82330,
     61                    ["/webkit/webresource/sub_resource_loading"])
    4062    ]
    4163
     
    166188        if not self._start_accessibility_daemons():
    167189            print "Could not start accessibility bus, so skipping TestWebKitAccessibility"
    168             self._skipped_tests.append("TestWebKitAccessibility")
     190            self._skipped_tests.append(SkippedTest("WebKit2APITests/TestWebKitAccessibility",
     191                                                   "Could not start accessibility bus"))
    169192        return True
    170193
     
    176199        self._xvfb.kill();
    177200
    178     def _remove_skipped_tests(self):
    179         tests_to_remove = []
    180         for test in self._tests:
    181             for skipped in self._skipped_tests:
    182                 if test.find(skipped) != -1:
    183                     tests_to_remove.append(test)
    184                     continue
    185 
    186         for test in tests_to_remove:
    187             self._tests.remove(test)
    188             print "Skipping %s" % test
     201    def _find_skipped_test(self, test):
     202        for skipped in self._skipped_tests:
     203            if test.endswith(skipped.test):
     204                return skipped
     205        return None
     206
     207    def _test_cases_to_skip(self, test):
     208        skipped = self._find_skipped_test(test)
     209        if skipped is not None:
     210            return skipped.test_cases
     211        return []
     212
     213    def _should_run_test(self, test):
     214        skipped = self._find_skipped_test(test)
     215        return skipped is None or skipped.test_cases
     216
     217    def _run_test(self, test):
     218        tester_command = ['gtester']
     219        if self._options.verbose:
     220            tester_command.append('--verbose')
     221        for test_case in self._test_cases_to_skip(test):
     222            tester_command.extend(['-s', test_case])
     223        tester_command.append(test)
     224
     225        return not self._create_process(tester_command, env=self._test_env).wait()
    189226
    190227    def run_tests(self):
     
    199236        # Remove skipped tests now instead of when we find them, because
    200237        # some tests might be skipped while setting up the test environment.
    201         self._remove_skipped_tests()
     238        self._tests = [test for test in self._tests if self._should_run_test(test)]
    202239
    203240        failed_tests = []
     
    205242            start_time = time.time()
    206243            for test in self._tests:
    207                 tester_command = ['gtester', test]
    208                 if self._options.verbose:
    209                     tester_command.insert(1, '--verbose')
    210                 process = self._create_process(tester_command, env=self._test_env)
    211                 if process.wait():
     244                if not self._run_test(test):
    212245                    failed_tests.append(test)
    213246
     
    221254
    222255        if failed_tests:
    223             names = [os.path.basename(test) for test in failed_tests]
     256            names = [test.lstrip(self._programs_path) for test in failed_tests]
    224257            sys.stdout.write("Tests failed: %s\n" % ", ".join(names))
     258            sys.stdout.flush()
     259
     260        if self._skipped_tests:
     261            sys.stdout.write("Tests skipped:\n%s\n" % "\n".join([str(skipped) for skipped in self._skipped_tests]))
    225262            sys.stdout.flush()
    226263
Note: See TracChangeset for help on using the changeset viewer.