Index: tools/testrunner/local/testsuite.py |
diff --git a/tools/testrunner/local/testsuite.py b/tools/testrunner/local/testsuite.py |
index 0fd3f3a3000a35ac2c06549b36e7c4cecd907e80..e831c48c3a0d28ae6636e9a786f4e04918ba6cf9 100644 |
--- a/tools/testrunner/local/testsuite.py |
+++ b/tools/testrunner/local/testsuite.py |
@@ -41,11 +41,13 @@ class TestSuite(object): |
try: |
(f, pathname, description) = imp.find_module("testcfg", [root]) |
module = imp.load_module("testcfg", f, pathname, description) |
- suite = module.GetSuite(name, root) |
+ return module.GetSuite(name, root) |
+ except: |
+ # Use default if no testcfg is present. |
+ return GoogleTestSuite(name, root) |
finally: |
if f: |
f.close() |
- return suite |
def __init__(self, name, root): |
self.name = name # string |
@@ -214,3 +216,40 @@ class TestSuite(object): |
for t in self.tests: |
self.total_duration += t.duration |
return self.total_duration |
+ |
+ |
+class GoogleTestSuite(TestSuite): |
+ def __init__(self, name, root): |
+ super(GoogleTestSuite, self).__init__(name, root) |
+ |
+ def ListTests(self, context): |
+ shell = os.path.abspath(os.path.join(context.shell_dir, self.shell())) |
+ if utils.IsWindows(): |
+ shell += ".exe" |
+ output = commands.Execute(context.command_prefix + |
+ [shell, "--gtest_list_tests"] + |
+ context.extra_flags) |
+ if output.exit_code != 0: |
+ print output.stdout |
+ print output.stderr |
+ return [] |
+ tests = [] |
+ test_case = '' |
+ for line in output.stdout.splitlines(): |
+ test_desc = line.strip().split()[0] |
+ if test_desc.endswith('.'): |
+ test_case = test_desc |
+ elif test_case and test_desc: |
+ test = testcase.TestCase(self, test_case + test_desc, dependency=None) |
+ tests.append(test) |
+ tests.sort() |
+ return tests |
+ |
+ def GetFlagsForTestCase(self, testcase, context): |
+ return (testcase.flags + ["--gtest_filter=" + testcase.path] + |
+ ["--gtest_random_seed=%s" % context.random_seed] + |
+ ["--gtest_print_time=0"] + |
+ context.mode_flags) |
+ |
+ def shell(self): |
+ return self.name |