mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[lit][googletest] Handle upstream gtest output
Summary: Upstream googletest prints "Running main() from gtest_main.cc" to stdout prior to running tests. LLVM removed that print statement in r61540. If a user were to use lit to run tests that use upstream googletest, however, lit reports "Running main()" as an invalid test name. To avoid such a failure, add an extra conditional to `formats/googletest.py`. Also add tests to demonstrate the modified behavior. Reviewers: abdulras, ddunbar Subscribers: ddunbar, llvm-commits, kastiglione Differential Revision: http://reviews.llvm.org/D18606 llvm-svn: 265034
This commit is contained in:
parent
d35aaca112
commit
5f81d65876
@ -43,6 +43,12 @@ class GoogleTest(TestFormat):
|
||||
if not ln.strip():
|
||||
continue
|
||||
|
||||
if 'Running main() from gtest_main.cc' in ln:
|
||||
# Upstream googletest prints this to stdout prior to running
|
||||
# tests. LLVM removed that print statement in r61540, but we
|
||||
# handle it here in case upstream googletest is being used.
|
||||
continue
|
||||
|
||||
prefix = ''
|
||||
index = 0
|
||||
while ln[index*2:index*2+2] == ' ':
|
||||
|
38
utils/lit/tests/Inputs/googletest-upstream-format/DummySubDir/OneTest
Executable file
38
utils/lit/tests/Inputs/googletest-upstream-format/DummySubDir/OneTest
Executable file
@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
|
||||
if len(sys.argv) != 2:
|
||||
raise ValueError("unexpected number of args")
|
||||
|
||||
if sys.argv[1] == "--gtest_list_tests":
|
||||
print("""\
|
||||
Running main() from gtest_main.cc
|
||||
FirstTest.
|
||||
subTestA
|
||||
subTestB
|
||||
ParameterizedTest/0.
|
||||
subTest
|
||||
ParameterizedTest/1.
|
||||
subTest""")
|
||||
sys.exit(0)
|
||||
elif not sys.argv[1].startswith("--gtest_filter="):
|
||||
raise ValueError("unexpected argument: %r" % (sys.argv[1]))
|
||||
|
||||
test_name = sys.argv[1].split('=',1)[1]
|
||||
print('Running main() from gtest_main.cc')
|
||||
if test_name == 'FirstTest.subTestA':
|
||||
print('I am subTest A, I PASS')
|
||||
print('[ PASSED ] 1 test.')
|
||||
sys.exit(0)
|
||||
elif test_name == 'FirstTest.subTestB':
|
||||
print('I am subTest B, I FAIL')
|
||||
print('And I have two lines of output')
|
||||
sys.exit(1)
|
||||
elif test_name in ('ParameterizedTest/0.subTest',
|
||||
'ParameterizedTest/1.subTest'):
|
||||
print('I am a parameterized test, I also PASS')
|
||||
print('[ PASSED ] 1 test.')
|
||||
sys.exit(0)
|
||||
else:
|
||||
raise SystemExit("error: invalid test name: %r" % (test_name,))
|
@ -0,0 +1,3 @@
|
||||
import lit.formats
|
||||
config.name = 'googletest-upstream-format'
|
||||
config.test_format = lit.formats.GoogleTest('DummySubDir', 'Test')
|
20
utils/lit/tests/googletest-upstream-format.py
Normal file
20
utils/lit/tests/googletest-upstream-format.py
Normal file
@ -0,0 +1,20 @@
|
||||
# Check the various features of the GoogleTest format.
|
||||
#
|
||||
# RUN: not %{lit} -j 1 -v %{inputs}/googletest-upstream-format > %t.out
|
||||
# RUN: FileCheck < %t.out %s
|
||||
#
|
||||
# END.
|
||||
|
||||
# CHECK: -- Testing:
|
||||
# CHECK: PASS: googletest-upstream-format :: DummySubDir/OneTest/FirstTest.subTestA
|
||||
# CHECK: FAIL: googletest-upstream-format :: DummySubDir/OneTest/FirstTest.subTestB
|
||||
# CHECK-NEXT: *** TEST 'googletest-upstream-format :: DummySubDir/OneTest/FirstTest.subTestB' FAILED ***
|
||||
# CHECK-NEXT: Running main() from gtest_main.cc
|
||||
# CHECK-NEXT: I am subTest B, I FAIL
|
||||
# CHECK-NEXT: And I have two lines of output
|
||||
# CHECK: ***
|
||||
# CHECK: PASS: googletest-upstream-format :: DummySubDir/OneTest/ParameterizedTest/0.subTest
|
||||
# CHECK: PASS: googletest-upstream-format :: DummySubDir/OneTest/ParameterizedTest/1.subTest
|
||||
# CHECK: Failing Tests (1)
|
||||
# CHECK: Expected Passes : 3
|
||||
# CHECK: Unexpected Failures: 1
|
Loading…
x
Reference in New Issue
Block a user