7 class GoogleTest(object):
8 def __init__(self
, test_sub_dir
, test_suffix
):
9 self
.test_sub_dir
= str(test_sub_dir
)
10 self
.test_suffix
= str(test_suffix
)
12 def getGTestTests(self
, path
):
13 """getGTestTests(path) - [name]
15 Return the tests available in gtest executable."""
17 lines
= Util
.capture([path
, '--gtest_list_tests']).split('\n')
25 while ln
[index
*2:index
*2+2] == ' ':
27 while len(nested_tests
) > index
:
32 nested_tests
.append(ln
)
34 yield ''.join(nested_tests
) + ln
36 def getTestsInDirectory(self
, testSuite
, path_in_suite
,
37 litConfig
, localConfig
):
38 source_path
= testSuite
.getSourcePath(path_in_suite
)
39 for filename
in os
.listdir(source_path
):
40 # Check for the one subdirectory (build directory) tests will be in.
41 if filename
!= self
.test_sub_dir
:
44 filepath
= os
.path
.join(source_path
, filename
)
45 for subfilename
in os
.listdir(filepath
):
46 if subfilename
.endswith(self
.test_suffix
):
47 execpath
= os
.path
.join(filepath
, subfilename
)
49 # Discover the tests in this executable.
50 for name
in self
.getGTestTests(execpath
):
51 testPath
= path_in_suite
+ (filename
, subfilename
, name
)
52 yield Test
.Test(testSuite
, testPath
, localConfig
)
54 def execute(self
, test
, litConfig
):
55 testPath
,testName
= os
.path
.split(test
.getSourcePath())
57 cmd
= [testPath
, '--gtest_filter=' + testName
]
58 out
, err
, exitCode
= TestRunner
.executeCommand(cmd
)
63 return Test
.FAIL
, out
+ err
67 class FileBasedTest(object):
68 def getTestsInDirectory(self
, testSuite
, path_in_suite
,
69 litConfig
, localConfig
):
70 source_path
= testSuite
.getSourcePath(path_in_suite
)
71 for filename
in os
.listdir(source_path
):
72 filepath
= os
.path
.join(source_path
, filename
)
73 if not os
.path
.isdir(filepath
):
74 base
,ext
= os
.path
.splitext(filename
)
75 if ext
in localConfig
.suffixes
:
76 yield Test
.Test(testSuite
, path_in_suite
+ (filename
,),
79 class ShTest(FileBasedTest
):
80 def __init__(self
, execute_external
= False, require_and_and
= False):
81 self
.execute_external
= execute_external
82 self
.require_and_and
= require_and_and
84 def execute(self
, test
, litConfig
):
85 return TestRunner
.executeShTest(test
, litConfig
,
86 self
.execute_external
,
89 class TclTest(FileBasedTest
):
90 def execute(self
, test
, litConfig
):
91 return TestRunner
.executeTclTest(test
, litConfig
)