Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
eddd9e85
Commit
eddd9e85
authored
Apr 08, 2010
by
vladlosev
Browse files
Fixes gtest_filter_unittest and gtest_help_test on systems without death tests.
parent
d21c142e
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
83 additions
and
64 deletions
+83
-64
test/gtest_filter_unittest.py
test/gtest_filter_unittest.py
+68
-60
test/gtest_help_test.py
test/gtest_help_test.py
+11
-4
test/gtest_help_test_.cc
test/gtest_help_test_.cc
+4
-0
No files found.
test/gtest_filter_unittest.py
View file @
eddd9e85
...
...
@@ -108,6 +108,14 @@ TEST_CASE_REGEX = re.compile(r'^\[\-+\] \d+ tests? from (\w+(/\w+)?)')
# Regex for parsing test names from Google Test's output.
TEST_REGEX
=
re
.
compile
(
r
'^\[\s*RUN\s*\].*\.(\w+(/\w+)?)'
)
# The command line flag to tell Google Test to output the list of tests it
# will run.
LIST_TESTS_FLAG
=
'--gtest_list_tests'
# Indicates whether Google Test supports death tests.
SUPPORTS_DEATH_TESTS
=
'HasDeathTest'
in
gtest_test_utils
.
Subprocess
(
[
COMMAND
,
LIST_TESTS_FLAG
]).
output
# Full names of all tests in gtest_filter_unittests_.
PARAM_TESTS
=
[
'SeqP/ParamTest.TestX/0'
,
...
...
@@ -129,6 +137,14 @@ DISABLED_TESTS = [
'DISABLED_FoobarbazTest.TestA'
,
]
if
SUPPORTS_DEATH_TESTS
:
DEATH_TESTS
=
[
'HasDeathTest.Test1'
,
'HasDeathTest.Test2'
,
]
else
:
DEATH_TESTS
=
[]
# All the non-disabled tests.
ACTIVE_TESTS
=
[
'FooTest.Abc'
,
...
...
@@ -141,10 +157,7 @@ ACTIVE_TESTS = [
'BazTest.TestOne'
,
'BazTest.TestA'
,
'BazTest.TestB'
,
'HasDeathTest.Test1'
,
'HasDeathTest.Test2'
,
]
+
PARAM_TESTS
]
+
DEATH_TESTS
+
PARAM_TESTS
param_tests_present
=
None
...
...
@@ -210,7 +223,7 @@ def RunWithSharding(total_shards, shard_index, command):
class
GTestFilterUnitTest
(
gtest_test_utils
.
TestCase
):
"""Tests
GTEST_FILTER
env variable or
--gtest_filter
flag to filter tests."""
"""Tests
the
env variable or
the command line
flag to filter tests."""
# Utilities.
...
...
@@ -242,17 +255,17 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
return
tests_to_run
def
RunAndVerify
(
self
,
gtest_filter
,
tests_to_run
):
"""Checks that the binary runs correct set of tests for
the
given filter."""
"""Checks that the binary runs correct set of tests for
a
given filter."""
tests_to_run
=
self
.
AdjustForParameterizedTests
(
tests_to_run
)
# First, tests using
GTEST_FILTER
.
# First, tests using
the environment variable
.
# Windows removes empty variables from the environment when passing it
# to a new process. This means it is impossible to pass an empty filter
# into a process using the
GTEST_FILTER
environment variable. However,
#
we can still
test the case when the variable is not supplied (i.e.,
#
gtest_filter is
None).
# to a new process.
This means it is impossible to pass an empty filter
# into a process using the environment variable.
However,
we can still
# test the case when the variable is not supplied (i.e.,
gtest_filter is
# None).
# pylint: disable-msg=C6403
if
CAN_TEST_EMPTY_FILTER
or
gtest_filter
!=
''
:
SetEnvVar
(
FILTER_ENV_VAR
,
gtest_filter
)
...
...
@@ -261,7 +274,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
self
.
AssertSetEqual
(
tests_run
,
tests_to_run
)
# pylint: enable-msg=C6403
# Next, tests using
--gtest_filter
.
# Next, tests using
the command line flag
.
if
gtest_filter
is
None
:
args
=
[]
...
...
@@ -291,10 +304,10 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
tests_to_run
=
self
.
AdjustForParameterizedTests
(
tests_to_run
)
# Windows removes empty variables from the environment when passing it
# to a new process. This means it is impossible to pass an empty filter
# into a process using the
GTEST_FILTER
environment variable. However,
#
we can still
test the case when the variable is not supplied (i.e.,
#
gtest_filter is
None).
# to a new process.
This means it is impossible to pass an empty filter
# into a process using the environment variable.
However,
we can still
# test the case when the variable is not supplied (i.e.,
gtest_filter is
# None).
# pylint: disable-msg=C6403
if
CAN_TEST_EMPTY_FILTER
or
gtest_filter
!=
''
:
SetEnvVar
(
FILTER_ENV_VAR
,
gtest_filter
)
...
...
@@ -435,10 +448,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
'BazTest.TestOne'
,
'BazTest.TestA'
,
'BazTest.TestB'
,
'HasDeathTest.Test1'
,
'HasDeathTest.Test2'
,
]
+
PARAM_TESTS
)
'BazTest.TestB'
,
]
+
DEATH_TESTS
+
PARAM_TESTS
)
def
testWildcardInTestName
(
self
):
"""Tests using wildcard in the test name."""
...
...
@@ -499,7 +509,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
])
def
testNegativeFilters
(
self
):
self
.
RunAndVerify
(
'*-
HasDeath
Test.Test
1
'
,
[
self
.
RunAndVerify
(
'*-
Baz
Test.Test
One
'
,
[
'FooTest.Abc'
,
'FooTest.Xyz'
,
...
...
@@ -507,24 +517,17 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
'BarTest.TestTwo'
,
'BarTest.TestThree'
,
'BazTest.TestOne'
,
'BazTest.TestA'
,
'BazTest.TestB'
,
]
+
DEATH_TESTS
+
PARAM_TESTS
)
'HasDeathTest.Test2'
,
]
+
PARAM_TESTS
)
self
.
RunAndVerify
(
'*-FooTest.Abc:HasDeathTest.*'
,
[
self
.
RunAndVerify
(
'*-FooTest.Abc:BazTest.*'
,
[
'FooTest.Xyz'
,
'BarTest.TestOne'
,
'BarTest.TestTwo'
,
'BarTest.TestThree'
,
'BazTest.TestOne'
,
'BazTest.TestA'
,
'BazTest.TestB'
,
]
+
PARAM_TESTS
)
]
+
DEATH_TESTS
+
PARAM_TESTS
)
self
.
RunAndVerify
(
'BarTest.*-BarTest.TestOne'
,
[
'BarTest.TestTwo'
,
...
...
@@ -532,15 +535,11 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
])
# Tests without leading '*'.
self
.
RunAndVerify
(
'-FooTest.Abc:FooTest.Xyz:
HasDeath
Test.*'
,
[
self
.
RunAndVerify
(
'-FooTest.Abc:FooTest.Xyz:
Baz
Test.*'
,
[
'BarTest.TestOne'
,
'BarTest.TestTwo'
,
'BarTest.TestThree'
,
'BazTest.TestOne'
,
'BazTest.TestA'
,
'BazTest.TestB'
,
]
+
PARAM_TESTS
)
]
+
DEATH_TESTS
+
PARAM_TESTS
)
# Value parameterized tests.
self
.
RunAndVerify
(
'*/*'
,
PARAM_TESTS
)
...
...
@@ -586,7 +585,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
os
.
remove
(
shard_status_file
)
def
testShardStatusFileIsCreatedWithListTests
(
self
):
"""Tests that the shard file is created with
--gtest_
list_tests."""
"""Tests that the shard file is created with
the "
list_tests
" flag
."""
shard_status_file
=
os
.
path
.
join
(
gtest_test_utils
.
GetTempDir
(),
'shard_status_file2'
)
...
...
@@ -594,32 +593,41 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
extra_env
=
{
SHARD_STATUS_FILE_ENV_VAR
:
shard_status_file
}
try
:
InvokeWithModifiedEnv
(
extra_env
,
RunAndReturnOutput
,
[
'--gtest_list_tests'
])
output
=
InvokeWithModifiedEnv
(
extra_env
,
RunAndReturnOutput
,
[
LIST_TESTS_FLAG
])
finally
:
# This assertion ensures that Google Test enumerated the tests as
# opposed to running them.
self
.
assert_
(
'[==========]'
not
in
output
,
'Unexpected output during test enumeration.
\n
'
'Please ensure that LIST_TESTS_FLAG is assigned the
\n
'
'correct flag value for listing Google Test tests.'
)
self
.
assert_
(
os
.
path
.
exists
(
shard_status_file
))
os
.
remove
(
shard_status_file
)
def
testShardingWorksWithDeathTests
(
self
):
"""Tests integration with death tests and sharding."""
gtest_filter
=
'HasDeathTest.*:SeqP/*'
expected_tests
=
[
'HasDeathTest.Test1'
,
'HasDeathTest.Test2'
,
'SeqP/ParamTest.TestX/0'
,
'SeqP/ParamTest.TestX/1'
,
'SeqP/ParamTest.TestY/0'
,
'SeqP/ParamTest.TestY/1'
,
]
for
flag
in
[
'--gtest_death_test_style=threadsafe'
,
'--gtest_death_test_style=fast'
]:
self
.
RunAndVerifyWithSharding
(
gtest_filter
,
3
,
expected_tests
,
check_exit_0
=
True
,
args
=
[
flag
])
self
.
RunAndVerifyWithSharding
(
gtest_filter
,
5
,
expected_tests
,
check_exit_0
=
True
,
args
=
[
flag
])
if
SUPPORTS_DEATH_TESTS
:
def
testShardingWorksWithDeathTests
(
self
):
"""Tests integration with death tests and sharding."""
gtest_filter
=
'HasDeathTest.*:SeqP/*'
expected_tests
=
[
'HasDeathTest.Test1'
,
'HasDeathTest.Test2'
,
'SeqP/ParamTest.TestX/0'
,
'SeqP/ParamTest.TestX/1'
,
'SeqP/ParamTest.TestY/0'
,
'SeqP/ParamTest.TestY/1'
,
]
for
flag
in
[
'--gtest_death_test_style=threadsafe'
,
'--gtest_death_test_style=fast'
]:
self
.
RunAndVerifyWithSharding
(
gtest_filter
,
3
,
expected_tests
,
check_exit_0
=
True
,
args
=
[
flag
])
self
.
RunAndVerifyWithSharding
(
gtest_filter
,
5
,
expected_tests
,
check_exit_0
=
True
,
args
=
[
flag
])
if
__name__
==
'__main__'
:
gtest_test_utils
.
Main
()
test/gtest_help_test.py
View file @
eddd9e85
...
...
@@ -51,11 +51,15 @@ FLAG_PREFIX = '--gtest_'
CATCH_EXCEPTIONS_FLAG
=
FLAG_PREFIX
+
'catch_exceptions'
DEATH_TEST_STYLE_FLAG
=
FLAG_PREFIX
+
'death_test_style'
UNKNOWN_FLAG
=
FLAG_PREFIX
+
'unknown_flag_for_testing'
INCORRECT_FLAG_VARIANTS
=
[
re
.
sub
(
'^--'
,
'-'
,
DEATH_TEST_STYLE_FLAG
),
re
.
sub
(
'^--'
,
'/'
,
DEATH_TEST_STYLE_FLAG
),
re
.
sub
(
'_'
,
'-'
,
DEATH_TEST_STYLE_FLAG
)]
LIST_TESTS_FLAG
=
FLAG_PREFIX
+
'list_tests'
INCORRECT_FLAG_VARIANTS
=
[
re
.
sub
(
'^--'
,
'-'
,
LIST_TESTS_FLAG
),
re
.
sub
(
'^--'
,
'/'
,
LIST_TESTS_FLAG
),
re
.
sub
(
'_'
,
'-'
,
LIST_TESTS_FLAG
)]
INTERNAL_FLAG_FOR_TESTING
=
FLAG_PREFIX
+
'internal_flag_for_testing'
SUPPORTS_DEATH_TESTS
=
"DeathTest"
in
gtest_test_utils
.
Subprocess
(
[
PROGRAM_PATH
,
LIST_TESTS_FLAG
]).
output
# The help message must match this regex.
HELP_REGEX
=
re
.
compile
(
FLAG_PREFIX
+
r
'list_tests.*'
+
...
...
@@ -107,10 +111,13 @@ class GTestHelpTest(gtest_test_utils.TestCase):
self
.
assert_
(
HELP_REGEX
.
search
(
output
),
output
)
if
IS_WINDOWS
:
self
.
assert_
(
CATCH_EXCEPTIONS_FLAG
in
output
,
output
)
self
.
assert_
(
DEATH_TEST_STYLE_FLAG
not
in
output
,
output
)
else
:
self
.
assert_
(
CATCH_EXCEPTIONS_FLAG
not
in
output
,
output
)
if
SUPPORTS_DEATH_TESTS
and
not
IS_WINDOWS
:
self
.
assert_
(
DEATH_TEST_STYLE_FLAG
in
output
,
output
)
else
:
self
.
assert_
(
DEATH_TEST_STYLE_FLAG
not
in
output
,
output
)
def
TestNonHelpFlag
(
self
,
flag
):
"""Verifies correct behavior when no help flag is specified.
...
...
test/gtest_help_test_.cc
View file @
eddd9e85
...
...
@@ -40,3 +40,7 @@
TEST
(
HelpFlagTest
,
ShouldNotBeRun
)
{
ASSERT_TRUE
(
false
)
<<
"Tests shouldn't be run when --help is specified."
;
}
#if GTEST_HAS_DEATH_TEST
TEST
(
DeathTest
,
UsedByPythonScriptToDetectSupportForDeathTestsInThisBinary
)
{}
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment