diff options
author | Daniel Dunbar <daniel@zuster.org> | 2016-03-31 18:22:55 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2016-03-31 18:22:55 +0000 |
commit | 30a91fe472919b604e3c6704bdb0391d9d89ee76 (patch) | |
tree | 5a2599899e8fae49d13262f897786de85b42f60a /utils | |
parent | 1372b02d631b2e9cc9f163e002b1428bfc17e0e9 (diff) |
[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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265034 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
4 files changed, 67 insertions, 0 deletions
diff --git a/utils/lit/lit/formats/googletest.py b/utils/lit/lit/formats/googletest.py index 5b19d4e638f..f0250a3f96d 100644 --- a/utils/lit/lit/formats/googletest.py +++ b/utils/lit/lit/formats/googletest.py @@ -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] == ' ': diff --git a/utils/lit/tests/Inputs/googletest-upstream-format/DummySubDir/OneTest b/utils/lit/tests/Inputs/googletest-upstream-format/DummySubDir/OneTest new file mode 100755 index 00000000000..d7bc5968f26 --- /dev/null +++ b/utils/lit/tests/Inputs/googletest-upstream-format/DummySubDir/OneTest @@ -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,)) diff --git a/utils/lit/tests/Inputs/googletest-upstream-format/lit.cfg b/utils/lit/tests/Inputs/googletest-upstream-format/lit.cfg new file mode 100644 index 00000000000..9fb5d2b0247 --- /dev/null +++ b/utils/lit/tests/Inputs/googletest-upstream-format/lit.cfg @@ -0,0 +1,3 @@ +import lit.formats +config.name = 'googletest-upstream-format' +config.test_format = lit.formats.GoogleTest('DummySubDir', 'Test') diff --git a/utils/lit/tests/googletest-upstream-format.py b/utils/lit/tests/googletest-upstream-format.py new file mode 100644 index 00000000000..1fc7c7c4a5a --- /dev/null +++ b/utils/lit/tests/googletest-upstream-format.py @@ -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 |