[test] Let test runner only use exact matches of tests on the cmd-line.
authormachenbach <machenbach@chromium.org>
Thu, 23 Jul 2015 13:01:15 +0000 (06:01 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 23 Jul 2015 13:01:38 +0000 (13:01 +0000)
There are many test names in the v8 code base that prefix
others, which makes it hard to only run those tests.

BUG=chromium:511215
LOG=n
NOTRY=true

Review URL: https://codereview.chromium.org/1251363002

Cr-Commit-Position: refs/heads/master@{#29809}

tools/testrunner/local/testsuite.py

index 91a3e045258f3c7509b4d7cfe1806ecbd0dcbafe..133c74eefba74c13c95b4043c5f05cd4022d1522 100644 (file)
@@ -175,8 +175,15 @@ class TestSuite(object):
         print("Unused rule: %s -> %s" % (rule, self.wildcards[rule]))
 
   def FilterTestCasesByArgs(self, args):
+    """Filter test cases based on command-line arguments.
+
+    An argument with an asterisk in the end will match all test cases
+    that have the argument as a prefix. Without asterisk, only exact matches
+    will be used with the exeption of the test-suite name as argument.
+    """
     filtered = []
-    filtered_args = []
+    globs = []
+    exact_matches = []
     for a in args:
       argpath = a.split(os.path.sep)
       if argpath[0] != self.name:
@@ -186,12 +193,18 @@ class TestSuite(object):
       path = os.path.sep.join(argpath[1:])
       if path[-1] == '*':
         path = path[:-1]
-      filtered_args.append(path)
+        globs.append(path)
+      else:
+        exact_matches.append(path)
     for t in self.tests:
-      for a in filtered_args:
+      for a in globs:
         if t.path.startswith(a):
           filtered.append(t)
           break
+      for a in exact_matches:
+        if t.path == a:
+          filtered.append(t)
+          break
     self.tests = filtered
 
   def GetFlagsForTestCase(self, testcase, context):