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
ad0146bf
Unverified
Commit
ad0146bf
authored
Jan 23, 2018
by
Gennadiy Civil
Committed by
GitHub
Jan 23, 2018
Browse files
Merge branch 'master' into win-libcxx
parents
20b53ad7
3c5e064c
Changes
15
Show whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
117 additions
and
84 deletions
+117
-84
googletest/include/gtest/gtest.h
googletest/include/gtest/gtest.h
+7
-4
googletest/include/gtest/internal/gtest-port-arch.h
googletest/include/gtest/internal/gtest-port-arch.h
+3
-0
googletest/src/gtest.cc
googletest/src/gtest.cc
+6
-5
googletest/test/gtest_color_test.py
googletest/test/gtest_color_test.py
+0
-1
googletest/test/gtest_filter_unittest.py
googletest/test/gtest_filter_unittest.py
+20
-18
googletest/test/gtest_output_test.py
googletest/test/gtest_output_test.py
+8
-5
googletest/test/gtest_repeat_test.cc
googletest/test/gtest_repeat_test.cc
+1
-1
googletest/test/gtest_test_utils.py
googletest/test/gtest_test_utils.py
+10
-12
googletest/test/gtest_throw_on_failure_test.py
googletest/test/gtest_throw_on_failure_test.py
+1
-1
googletest/test/gtest_uninitialized_test.py
googletest/test/gtest_uninitialized_test.py
+5
-5
googletest/test/gtest_uninitialized_test_.cc
googletest/test/gtest_uninitialized_test_.cc
+2
-2
googletest/test/gtest_unittest.cc
googletest/test/gtest_unittest.cc
+3
-3
googletest/test/gtest_xml_outfiles_test.py
googletest/test/gtest_xml_outfiles_test.py
+0
-4
googletest/test/gtest_xml_output_unittest.py
googletest/test/gtest_xml_output_unittest.py
+46
-13
googletest/test/gtest_xml_test_utils.py
googletest/test/gtest_xml_test_utils.py
+5
-10
No files found.
googletest/include/gtest/gtest.h
View file @
ad0146bf
...
@@ -687,6 +687,9 @@ class GTEST_API_ TestInfo {
...
@@ -687,6 +687,9 @@ class GTEST_API_ TestInfo {
// Returns the line where this test is defined.
// Returns the line where this test is defined.
int
line
()
const
{
return
location_
.
line
;
}
int
line
()
const
{
return
location_
.
line
;
}
// Return true if this test should not be run because it's in another shard.
bool
is_in_another_shard
()
const
{
return
is_in_another_shard_
;
}
// Returns true if this test should run, that is if the test is not
// Returns true if this test should run, that is if the test is not
// disabled (or it is disabled but the also_run_disabled_tests flag has
// disabled (or it is disabled but the also_run_disabled_tests flag has
// been specified) and its full name matches the user-specified filter.
// been specified) and its full name matches the user-specified filter.
...
@@ -707,10 +710,9 @@ class GTEST_API_ TestInfo {
...
@@ -707,10 +710,9 @@ class GTEST_API_ TestInfo {
// Returns true iff this test will appear in the XML report.
// Returns true iff this test will appear in the XML report.
bool
is_reportable
()
const
{
bool
is_reportable
()
const
{
// The XML report includes tests matching the filter.
// The XML report includes tests matching the filter, excluding those
// In the future, we may trim tests that are excluded because of
// run in other shards.
// sharding.
return
matches_filter_
&&
!
is_in_another_shard_
;
return
matches_filter_
;
}
}
// Returns the result of the test.
// Returns the result of the test.
...
@@ -774,6 +776,7 @@ class GTEST_API_ TestInfo {
...
@@ -774,6 +776,7 @@ class GTEST_API_ TestInfo {
bool
is_disabled_
;
// True iff this test is disabled
bool
is_disabled_
;
// True iff this test is disabled
bool
matches_filter_
;
// True if this test matches the
bool
matches_filter_
;
// True if this test matches the
// user-specified filter.
// user-specified filter.
bool
is_in_another_shard_
;
// Will be run in another shard.
internal
::
TestFactoryBase
*
const
factory_
;
// The factory that creates
internal
::
TestFactoryBase
*
const
factory_
;
// The factory that creates
// the test object
// the test object
...
...
googletest/include/gtest/internal/gtest-port-arch.h
View file @
ad0146bf
...
@@ -54,6 +54,9 @@
...
@@ -54,6 +54,9 @@
# define GTEST_OS_WINDOWS_PHONE 1
# define GTEST_OS_WINDOWS_PHONE 1
# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
# define GTEST_OS_WINDOWS_RT 1
# define GTEST_OS_WINDOWS_RT 1
# elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
# define GTEST_OS_WINDOWS_PHONE 1
# define GTEST_OS_WINDOWS_TV_TITLE 1
# else
# else
// WINAPI_FAMILY defined but no known partition matched.
// WINAPI_FAMILY defined but no known partition matched.
// Default to desktop.
// Default to desktop.
...
...
googletest/src/gtest.cc
View file @
ad0146bf
...
@@ -1655,7 +1655,7 @@ namespace {
...
@@ -1655,7 +1655,7 @@ namespace {
AssertionResult
HRESULTFailureHelper
(
const
char
*
expr
,
AssertionResult
HRESULTFailureHelper
(
const
char
*
expr
,
const
char
*
expected
,
const
char
*
expected
,
long
hr
)
{
// NOLINT
long
hr
)
{
// NOLINT
# if GTEST_OS_WINDOWS_MOBILE
# if GTEST_OS_WINDOWS_MOBILE
|| GTEST_OS_WINDOWS_TV_TITLE
// Windows CE doesn't support FormatMessage.
// Windows CE doesn't support FormatMessage.
const
char
error_text
[]
=
""
;
const
char
error_text
[]
=
""
;
...
@@ -4813,10 +4813,11 @@ int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
...
@@ -4813,10 +4813,11 @@ int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
(
GTEST_FLAG
(
also_run_disabled_tests
)
||
!
is_disabled
)
&&
(
GTEST_FLAG
(
also_run_disabled_tests
)
||
!
is_disabled
)
&&
matches_filter
;
matches_filter
;
const
bool
is_selected
=
is_runnable
&&
const
bool
is_in_another_shard
=
(
shard_tests
==
IGNORE_SHARDING_PROTOCOL
||
shard_tests
!=
IGNORE_SHARDING_PROTOCOL
&&
ShouldRunTestOnShard
(
total_shards
,
shard_index
,
!
ShouldRunTestOnShard
(
total_shards
,
shard_index
,
num_runnable_tests
);
num_runnable_tests
));
test_info
->
is_in_another_shard_
=
is_in_another_shard
;
const
bool
is_selected
=
is_runnable
&&
!
is_in_another_shard
;
num_runnable_tests
+=
is_runnable
;
num_runnable_tests
+=
is_runnable
;
num_selected_tests
+=
is_selected
;
num_selected_tests
+=
is_selected
;
...
...
googletest/test/gtest_color_test.py
View file @
ad0146bf
...
@@ -36,7 +36,6 @@ __author__ = 'wan@google.com (Zhanyong Wan)'
...
@@ -36,7 +36,6 @@ __author__ = 'wan@google.com (Zhanyong Wan)'
import
os
import
os
import
gtest_test_utils
import
gtest_test_utils
IS_WINDOWS
=
os
.
name
=
'nt'
IS_WINDOWS
=
os
.
name
=
'nt'
COLOR_ENV_VAR
=
'GTEST_COLOR'
COLOR_ENV_VAR
=
'GTEST_COLOR'
...
...
googletest/test/gtest_filter_unittest.py
View file @
ad0146bf
...
@@ -44,12 +44,8 @@ __author__ = 'wan@google.com (Zhanyong Wan)'
...
@@ -44,12 +44,8 @@ __author__ = 'wan@google.com (Zhanyong Wan)'
import
os
import
os
import
re
import
re
try
:
import
sets
from
sets
import
Set
as
set
# For Python 2.3 compatibility
except
ImportError
:
pass
import
sys
import
sys
import
gtest_test_utils
import
gtest_test_utils
# Constants.
# Constants.
...
@@ -59,10 +55,12 @@ import gtest_test_utils
...
@@ -59,10 +55,12 @@ import gtest_test_utils
# script in a subprocess to print whether the variable is STILL in
# script in a subprocess to print whether the variable is STILL in
# os.environ. We then use 'eval' to parse the child's output so that an
# os.environ. We then use 'eval' to parse the child's output so that an
# exception is thrown if the input is anything other than 'True' nor 'False'.
# exception is thrown if the input is anything other than 'True' nor 'False'.
os
.
environ
[
'EMPTY_VAR'
]
=
''
CAN_PASS_EMPTY_ENV
=
False
child
=
gtest_test_utils
.
Subprocess
(
if
sys
.
executable
:
[
sys
.
executable
,
'-c'
,
'import os; print(
\'
EMPTY_VAR
\'
in os.environ)'
])
os
.
environ
[
'EMPTY_VAR'
]
=
''
CAN_PASS_EMPTY_ENV
=
eval
(
child
.
output
)
child
=
gtest_test_utils
.
Subprocess
(
[
sys
.
executable
,
'-c'
,
'import os; print
\'
EMPTY_VAR
\'
in os.environ'
])
CAN_PASS_EMPTY_ENV
=
eval
(
child
.
output
)
# Check if this platform can unset environment variables in child processes.
# Check if this platform can unset environment variables in child processes.
...
@@ -71,11 +69,14 @@ CAN_PASS_EMPTY_ENV = eval(child.output)
...
@@ -71,11 +69,14 @@ CAN_PASS_EMPTY_ENV = eval(child.output)
# is NO LONGER in os.environ.
# is NO LONGER in os.environ.
# We use 'eval' to parse the child's output so that an exception
# We use 'eval' to parse the child's output so that an exception
# is thrown if the input is neither 'True' nor 'False'.
# is thrown if the input is neither 'True' nor 'False'.
os
.
environ
[
'UNSET_VAR'
]
=
'X'
CAN_UNSET_ENV
=
False
del
os
.
environ
[
'UNSET_VAR'
]
if
sys
.
executable
:
child
=
gtest_test_utils
.
Subprocess
(
os
.
environ
[
'UNSET_VAR'
]
=
'X'
[
sys
.
executable
,
'-c'
,
'import os; print(
\'
UNSET_VAR
\'
not in os.environ)'
])
del
os
.
environ
[
'UNSET_VAR'
]
CAN_UNSET_ENV
=
eval
(
child
.
output
)
child
=
gtest_test_utils
.
Subprocess
(
[
sys
.
executable
,
'-c'
,
'import os; print
\'
UNSET_VAR
\'
not in os.environ'
])
CAN_UNSET_ENV
=
eval
(
child
.
output
)
# Checks if we should test with an empty filter. This doesn't
# Checks if we should test with an empty filter. This doesn't
...
@@ -97,7 +98,7 @@ SHARD_STATUS_FILE_ENV_VAR = 'GTEST_SHARD_STATUS_FILE'
...
@@ -97,7 +98,7 @@ SHARD_STATUS_FILE_ENV_VAR = 'GTEST_SHARD_STATUS_FILE'
FILTER_FLAG
=
'gtest_filter'
FILTER_FLAG
=
'gtest_filter'
# The command line flag for including disabled tests.
# The command line flag for including disabled tests.
ALSO_RUN_DISABED_TESTS_FLAG
=
'gtest_also_run_disabled_tests'
ALSO_RUN_DISAB
L
ED_TESTS_FLAG
=
'gtest_also_run_disabled_tests'
# Command to run the gtest_filter_unittest_ program.
# Command to run the gtest_filter_unittest_ program.
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest_filter_unittest_'
)
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest_filter_unittest_'
)
...
@@ -246,14 +247,14 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
...
@@ -246,14 +247,14 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
for
slice_var
in
list_of_sets
:
for
slice_var
in
list_of_sets
:
full_partition
.
extend
(
slice_var
)
full_partition
.
extend
(
slice_var
)
self
.
assertEqual
(
len
(
set_var
),
len
(
full_partition
))
self
.
assertEqual
(
len
(
set_var
),
len
(
full_partition
))
self
.
assertEqual
(
set
(
set_var
),
set
(
full_partition
))
self
.
assertEqual
(
set
s
.
Set
(
set_var
),
set
s
.
Set
(
full_partition
))
def
AdjustForParameterizedTests
(
self
,
tests_to_run
):
def
AdjustForParameterizedTests
(
self
,
tests_to_run
):
"""Adjust tests_to_run in case value parameterized tests are disabled."""
"""Adjust tests_to_run in case value parameterized tests are disabled."""
global
param_tests_present
global
param_tests_present
if
not
param_tests_present
:
if
not
param_tests_present
:
return
list
(
set
(
tests_to_run
)
-
set
(
PARAM_TESTS
))
return
list
(
set
s
.
Set
(
tests_to_run
)
-
set
s
.
Set
(
PARAM_TESTS
))
else
:
else
:
return
tests_to_run
return
tests_to_run
...
@@ -294,6 +295,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
...
@@ -294,6 +295,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
Runs all shards of gtest_filter_unittest_ with the given filter, and
Runs all shards of gtest_filter_unittest_ with the given filter, and
verifies that the right set of tests were run. The union of tests run
verifies that the right set of tests were run. The union of tests run
on each shard should be identical to tests_to_run, without duplicates.
on each shard should be identical to tests_to_run, without duplicates.
If check_exit_0, .
Args:
Args:
gtest_filter: A filter to apply to the tests.
gtest_filter: A filter to apply to the tests.
...
@@ -339,7 +341,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
...
@@ -339,7 +341,7 @@ class GTestFilterUnitTest(gtest_test_utils.TestCase):
tests_to_run
=
self
.
AdjustForParameterizedTests
(
tests_to_run
)
tests_to_run
=
self
.
AdjustForParameterizedTests
(
tests_to_run
)
# Construct the command line.
# Construct the command line.
args
=
[
'--%s'
%
ALSO_RUN_DISABED_TESTS_FLAG
]
args
=
[
'--%s'
%
ALSO_RUN_DISAB
L
ED_TESTS_FLAG
]
if
gtest_filter
is
not
None
:
if
gtest_filter
is
not
None
:
args
.
append
(
'--%s=%s'
%
(
FILTER_FLAG
,
gtest_filter
))
args
.
append
(
'--%s=%s'
%
(
FILTER_FLAG
,
gtest_filter
))
...
...
googletest/test/gtest_output_test.py
View file @
ad0146bf
...
@@ -31,6 +31,7 @@
...
@@ -31,6 +31,7 @@
"""Tests the text output of Google C++ Testing Framework.
"""Tests the text output of Google C++ Testing Framework.
SYNOPSIS
SYNOPSIS
gtest_output_test.py --build_dir=BUILD/DIR --gengolden
gtest_output_test.py --build_dir=BUILD/DIR --gengolden
# where BUILD/DIR contains the built gtest_output_test_ file.
# where BUILD/DIR contains the built gtest_output_test_ file.
...
@@ -51,6 +52,7 @@ import gtest_test_utils
...
@@ -51,6 +52,7 @@ import gtest_test_utils
GENGOLDEN_FLAG
=
'--gengolden'
GENGOLDEN_FLAG
=
'--gengolden'
CATCH_EXCEPTIONS_ENV_VAR_NAME
=
'GTEST_CATCH_EXCEPTIONS'
CATCH_EXCEPTIONS_ENV_VAR_NAME
=
'GTEST_CATCH_EXCEPTIONS'
IS_LINUX
=
os
.
name
==
'posix'
and
os
.
uname
()[
0
]
==
'Linux'
IS_WINDOWS
=
os
.
name
==
'nt'
IS_WINDOWS
=
os
.
name
==
'nt'
# TODO(vladl@google.com): remove the _lin suffix.
# TODO(vladl@google.com): remove the _lin suffix.
...
@@ -250,11 +252,12 @@ test_list = GetShellCommandOutput(COMMAND_LIST_TESTS)
...
@@ -250,11 +252,12 @@ test_list = GetShellCommandOutput(COMMAND_LIST_TESTS)
SUPPORTS_DEATH_TESTS
=
'DeathTest'
in
test_list
SUPPORTS_DEATH_TESTS
=
'DeathTest'
in
test_list
SUPPORTS_TYPED_TESTS
=
'TypedTest'
in
test_list
SUPPORTS_TYPED_TESTS
=
'TypedTest'
in
test_list
SUPPORTS_THREADS
=
'ExpectFailureWithThreadsTest'
in
test_list
SUPPORTS_THREADS
=
'ExpectFailureWithThreadsTest'
in
test_list
SUPPORTS_STACK_TRACES
=
False
SUPPORTS_STACK_TRACES
=
IS_LINUX
CAN_GENERATE_GOLDEN_FILE
=
(
SUPPORTS_DEATH_TESTS
and
CAN_GENERATE_GOLDEN_FILE
=
(
SUPPORTS_DEATH_TESTS
and
SUPPORTS_TYPED_TESTS
and
SUPPORTS_TYPED_TESTS
and
SUPPORTS_THREADS
and
SUPPORTS_THREADS
and
SUPPORTS_STACK_TRACES
and
not
IS_WINDOWS
)
not
IS_WINDOWS
)
class
GTestOutputTest
(
gtest_test_utils
.
TestCase
):
class
GTestOutputTest
(
gtest_test_utils
.
TestCase
):
...
@@ -280,7 +283,7 @@ class GTestOutputTest(gtest_test_utils.TestCase):
...
@@ -280,7 +283,7 @@ class GTestOutputTest(gtest_test_utils.TestCase):
def
testOutput
(
self
):
def
testOutput
(
self
):
output
=
GetOutputOfAllCommands
()
output
=
GetOutputOfAllCommands
()
golden_file
=
open
(
GOLDEN_PATH
,
'r'
)
golden_file
=
open
(
GOLDEN_PATH
,
'r
b
'
)
# A mis-configured source control system can cause \r appear in EOL
# A mis-configured source control system can cause \r appear in EOL
# sequences when we read the golden file irrespective of an operating
# sequences when we read the golden file irrespective of an operating
# system used. Therefore, we need to strip those \r's from newlines
# system used. Therefore, we need to strip those \r's from newlines
...
@@ -331,9 +334,9 @@ if __name__ == '__main__':
...
@@ -331,9 +334,9 @@ if __name__ == '__main__':
else
:
else
:
message
=
(
message
=
(
"""Unable to write a golden file when compiled in an environment
"""Unable to write a golden file when compiled in an environment
that does not support all the required features (death tests,
typed tests,
that does not support all the required features (death tests,
and multiple threads). Please generate the golden file using a binary built
typed tests, stack traces, and multiple threads).
with those features enabled
."""
)
Please build this test and generate the golden file using Blaze on Linux
."""
)
sys
.
stderr
.
write
(
message
)
sys
.
stderr
.
write
(
message
)
sys
.
exit
(
1
)
sys
.
exit
(
1
)
...
...
googletest/test/gtest_repeat_test.cc
View file @
ad0146bf
...
@@ -67,7 +67,7 @@ namespace {
...
@@ -67,7 +67,7 @@ namespace {
// Used for verifying that global environment set-up and tear-down are
// Used for verifying that global environment set-up and tear-down are
// inside the gtest_repeat loop.
// inside the
--
gtest_repeat loop.
int
g_environment_set_up_count
=
0
;
int
g_environment_set_up_count
=
0
;
int
g_environment_tear_down_count
=
0
;
int
g_environment_tear_down_count
=
0
;
...
...
googletest/test/gtest_test_utils.py
View file @
ad0146bf
#!/usr/bin/env python
#
# Copyright 2006, Google Inc.
# Copyright 2006, Google Inc.
# All rights reserved.
# All rights reserved.
#
#
...
@@ -30,19 +28,24 @@
...
@@ -30,19 +28,24 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Unit test utilities for Google C++ Testing Framework."""
"""Unit test utilities for Google C++ Testing Framework."""
# Suppresses the 'Import not at the top of the file' lint complaint.
# pylint: disable-msg=C6204
__author__
=
'wan@google.com (Zhanyong Wan)'
__author__
=
'wan@google.com (Zhanyong Wan)'
import
atexit
import
os
import
os
import
shutil
import
sys
import
sys
IS_LINUX
=
os
.
name
==
'posix'
and
os
.
uname
()[
0
]
==
'Linux'
IS_WINDOWS
=
os
.
name
==
'nt'
IS_CYGWIN
=
os
.
name
==
'posix'
and
'CYGWIN'
in
os
.
uname
()[
0
]
import
atexit
import
shutil
import
tempfile
import
tempfile
import
unittest
import
unittest
_test_module
=
unittest
_test_module
=
unittest
# Suppresses the 'Import not at the top of the file' lint complaint.
# pylint: disable-msg=C6204
try
:
try
:
import
subprocess
import
subprocess
_SUBPROCESS_MODULE_AVAILABLE
=
True
_SUBPROCESS_MODULE_AVAILABLE
=
True
...
@@ -53,9 +56,6 @@ except:
...
@@ -53,9 +56,6 @@ except:
GTEST_OUTPUT_VAR_NAME
=
'GTEST_OUTPUT'
GTEST_OUTPUT_VAR_NAME
=
'GTEST_OUTPUT'
IS_WINDOWS
=
os
.
name
==
'nt'
IS_CYGWIN
=
os
.
name
==
'posix'
and
'CYGWIN'
in
os
.
uname
()[
0
]
# The environment variable for specifying the path to the premature-exit file.
# The environment variable for specifying the path to the premature-exit file.
PREMATURE_EXIT_FILE_ENV_VAR
=
'TEST_PREMATURE_EXIT_FILE'
PREMATURE_EXIT_FILE_ENV_VAR
=
'TEST_PREMATURE_EXIT_FILE'
...
@@ -145,8 +145,6 @@ atexit.register(_RemoveTempDir)
...
@@ -145,8 +145,6 @@ atexit.register(_RemoveTempDir)
def
GetTempDir
():
def
GetTempDir
():
"""Returns a directory for temporary files."""
global
_temp_dir
global
_temp_dir
if
not
_temp_dir
:
if
not
_temp_dir
:
_temp_dir
=
tempfile
.
mkdtemp
()
_temp_dir
=
tempfile
.
mkdtemp
()
...
@@ -178,7 +176,7 @@ def GetTestExecutablePath(executable_name, build_dir=None):
...
@@ -178,7 +176,7 @@ def GetTestExecutablePath(executable_name, build_dir=None):
'Unable to find the test binary "%s". Please make sure to provide
\n
'
'Unable to find the test binary "%s". Please make sure to provide
\n
'
'a path to the binary via the --build_dir flag or the BUILD_DIR
\n
'
'a path to the binary via the --build_dir flag or the BUILD_DIR
\n
'
'environment variable.'
%
path
)
'environment variable.'
%
path
)
sys
.
stdout
.
write
(
message
)
print
>>
sys
.
stderr
,
message
sys
.
exit
(
1
)
sys
.
exit
(
1
)
return
path
return
path
...
...
googletest/test/gtest_throw_on_failure_test.py
View file @
ad0146bf
...
@@ -70,7 +70,7 @@ def SetEnvVar(env_var, value):
...
@@ -70,7 +70,7 @@ def SetEnvVar(env_var, value):
def
Run
(
command
):
def
Run
(
command
):
"""Runs a command; returns True/False if its exit code is/isn't 0."""
"""Runs a command; returns True/False if its exit code is/isn't 0."""
print
(
'Running "%s". . .'
%
' '
.
join
(
command
)
)
print
'Running "%s". . .'
%
' '
.
join
(
command
)
p
=
gtest_test_utils
.
Subprocess
(
command
)
p
=
gtest_test_utils
.
Subprocess
(
command
)
return
p
.
exited
and
p
.
exit_code
==
0
return
p
.
exited
and
p
.
exit_code
==
0
...
...
googletest/test/gtest_uninitialized_test.py
View file @
ad0146bf
...
@@ -33,9 +33,9 @@
...
@@ -33,9 +33,9 @@
__author__
=
'wan@google.com (Zhanyong Wan)'
__author__
=
'wan@google.com (Zhanyong Wan)'
import
os
import
gtest_test_utils
import
gtest_test_utils
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest_uninitialized_test_'
)
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
'gtest_uninitialized_test_'
)
...
@@ -46,8 +46,8 @@ def Assert(condition):
...
@@ -46,8 +46,8 @@ def Assert(condition):
def
AssertEq
(
expected
,
actual
):
def
AssertEq
(
expected
,
actual
):
if
expected
!=
actual
:
if
expected
!=
actual
:
print
(
'Expected: %s'
%
(
expected
,)
)
print
'Expected: %s'
%
(
expected
,)
print
(
' Actual: %s'
%
(
actual
,)
)
print
' Actual: %s'
%
(
actual
,)
raise
AssertionError
raise
AssertionError
...
@@ -56,8 +56,8 @@ def TestExitCodeAndOutput(command):
...
@@ -56,8 +56,8 @@ def TestExitCodeAndOutput(command):
# Verifies that 'command' exits with code 1.
# Verifies that 'command' exits with code 1.
p
=
gtest_test_utils
.
Subprocess
(
command
)
p
=
gtest_test_utils
.
Subprocess
(
command
)
Assert
(
p
.
exited
)
if
p
.
exited
and
p
.
exit_code
==
0
:
Assert
Eq
(
1
,
p
.
exit_code
)
Assert
(
'IMPORTANT NOTICE'
in
p
.
output
);
Assert
(
'InitGoogleTest'
in
p
.
output
)
Assert
(
'InitGoogleTest'
in
p
.
output
)
...
...
googletest/test/gtest_uninitialized_test_.cc
View file @
ad0146bf
...
@@ -34,8 +34,8 @@
...
@@ -34,8 +34,8 @@
TEST
(
DummyTest
,
Dummy
)
{
TEST
(
DummyTest
,
Dummy
)
{
// This test doesn't verify anything. We just need it to create a
// This test doesn't verify anything. We just need it to create a
// realistic stage for testing the behavior of Google Test when
// realistic stage for testing the behavior of Google Test when
// RUN_ALL_TESTS() is called without
testing::InitGoogleTest() being
// RUN_ALL_TESTS() is called without
// called first.
//
testing::InitGoogleTest() being
called first.
}
}
int
main
()
{
int
main
()
{
...
...
googletest/test/gtest_unittest.cc
View file @
ad0146bf
...
@@ -34,9 +34,9 @@
...
@@ -34,9 +34,9 @@
#include "gtest/gtest.h"
#include "gtest/gtest.h"
// Verifies that the command line flag variables can be accessed
// Verifies that the command line flag variables can be accessed
in
//
in
code once
<
gtest/gtest.h
>
has been
#included.
// code once
"
gtest/gtest.h
"
has been
// Do not move it after other #includes.
//
#included.
Do not move it after other
gtest
#includes.
TEST
(
CommandLineFlagsTest
,
CanBeAccessedInCodeOnceGTestHIsIncluded
)
{
TEST
(
CommandLineFlagsTest
,
CanBeAccessedInCodeOnceGTestHIsIncluded
)
{
bool
dummy
=
testing
::
GTEST_FLAG
(
also_run_disabled_tests
)
bool
dummy
=
testing
::
GTEST_FLAG
(
also_run_disabled_tests
)
||
testing
::
GTEST_FLAG
(
break_on_failure
)
||
testing
::
GTEST_FLAG
(
break_on_failure
)
...
...
googletest/test/gtest_xml_outfiles_test.py
View file @
ad0146bf
...
@@ -31,15 +31,11 @@
...
@@ -31,15 +31,11 @@
"""Unit test for the gtest_xml_output module."""
"""Unit test for the gtest_xml_output module."""
__author__
=
"keith.ray@gmail.com (Keith Ray)"
import
os
import
os
from
xml.dom
import
minidom
,
Node
from
xml.dom
import
minidom
,
Node
import
gtest_test_utils
import
gtest_test_utils
import
gtest_xml_test_utils
import
gtest_xml_test_utils
GTEST_OUTPUT_SUBDIR
=
"xml_outfiles"
GTEST_OUTPUT_SUBDIR
=
"xml_outfiles"
GTEST_OUTPUT_1_TEST
=
"gtest_xml_outfile1_test_"
GTEST_OUTPUT_1_TEST
=
"gtest_xml_outfile1_test_"
GTEST_OUTPUT_2_TEST
=
"gtest_xml_outfile2_test_"
GTEST_OUTPUT_2_TEST
=
"gtest_xml_outfile2_test_"
...
...
googletest/test/gtest_xml_output_unittest.py
View file @
ad0146bf
...
@@ -31,8 +31,6 @@
...
@@ -31,8 +31,6 @@
"""Unit test for the gtest_xml_output module"""
"""Unit test for the gtest_xml_output module"""
__author__
=
'eefacm@gmail.com (Sean Mcafee)'
import
datetime
import
datetime
import
errno
import
errno
import
os
import
os
...
@@ -43,12 +41,16 @@ from xml.dom import minidom, Node
...
@@ -43,12 +41,16 @@ from xml.dom import minidom, Node
import
gtest_test_utils
import
gtest_test_utils
import
gtest_xml_test_utils
import
gtest_xml_test_utils
GTEST_FILTER_FLAG
=
'--gtest_filter'
GTEST_FILTER_FLAG
=
'--gtest_filter'
GTEST_LIST_TESTS_FLAG
=
'--gtest_list_tests'
GTEST_LIST_TESTS_FLAG
=
'--gtest_list_tests'
GTEST_OUTPUT_FLAG
=
"--gtest_output"
GTEST_OUTPUT_FLAG
=
'--gtest_output'
GTEST_DEFAULT_OUTPUT_FILE
=
"test_detail.xml"
GTEST_DEFAULT_OUTPUT_FILE
=
'test_detail.xml'
GTEST_PROGRAM_NAME
=
"gtest_xml_output_unittest_"
GTEST_PROGRAM_NAME
=
'gtest_xml_output_unittest_'
# The environment variables for test sharding.
TOTAL_SHARDS_ENV_VAR
=
'GTEST_TOTAL_SHARDS'
SHARD_INDEX_ENV_VAR
=
'GTEST_SHARD_INDEX'
SHARD_STATUS_FILE_ENV_VAR
=
'GTEST_SHARD_STATUS_FILE'
SUPPORTS_STACK_TRACES
=
False
SUPPORTS_STACK_TRACES
=
False
...
@@ -141,6 +143,19 @@ EXPECTED_FILTERED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
...
@@ -141,6 +143,19 @@ EXPECTED_FILTERED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
</testsuite>
</testsuite>
</testsuites>"""
</testsuites>"""
EXPECTED_SHARDED_TEST_XML
=
"""<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="3" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
<testsuite name="SuccessfulTest" tests="1" failures="0" disabled="0" errors="0" time="*">
<testcase name="Succeeds" status="run" time="*" classname="SuccessfulTest"/>
</testsuite>
<testsuite name="NoFixtureTest" tests="1" failures="0" disabled="0" errors="0" time="*">
<testcase name="RecordProperty" status="run" time="*" classname="NoFixtureTest" key="1"/>
</testsuite>
<testsuite name="Single/ValueParamTest" tests="1" failures="0" disabled="0" errors="0" time="*">
<testcase name="AnotherTestThatHasValueParamAttribute/1" value_param="42" status="run" time="*" classname="Single/ValueParamTest" />
</testsuite>
</testsuites>"""
EXPECTED_EMPTY_XML
=
"""<?xml version="1.0" encoding="UTF-8"?>
EXPECTED_EMPTY_XML
=
"""<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="0" failures="0" disabled="0" errors="0" time="*"
<testsuites tests="0" failures="0" disabled="0" errors="0" time="*"
timestamp="*" name="AllTests">
timestamp="*" name="AllTests">
...
@@ -182,7 +197,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
...
@@ -182,7 +197,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
Runs a test program that generates an empty XML output, and checks if
Runs a test program that generates an empty XML output, and checks if
the timestamp attribute in the testsuites tag is valid.
the timestamp attribute in the testsuites tag is valid.
"""
"""
actual
=
self
.
_GetXmlOutput
(
'gtest_no_test_unittest'
,
[],
0
)
actual
=
self
.
_GetXmlOutput
(
'gtest_no_test_unittest'
,
[],
{},
0
)
date_time_str
=
actual
.
documentElement
.
getAttributeNode
(
'timestamp'
).
value
date_time_str
=
actual
.
documentElement
.
getAttributeNode
(
'timestamp'
).
value
# datetime.strptime() is only available in Python 2.5+ so we have to
# datetime.strptime() is only available in Python 2.5+ so we have to
# parse the expected datetime manually.
# parse the expected datetime manually.
...
@@ -212,8 +227,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
...
@@ -212,8 +227,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
'gtest_no_test_unittest'
)
'gtest_no_test_unittest'
)
try
:
try
:
os
.
remove
(
output_file
)
os
.
remove
(
output_file
)
except
OSError
:
except
OSError
,
e
:
e
=
sys
.
exc_info
()[
1
]
if
e
.
errno
!=
errno
.
ENOENT
:
if
e
.
errno
!=
errno
.
ENOENT
:
raise
raise
...
@@ -263,7 +277,22 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
...
@@ -263,7 +277,22 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
self
.
_TestXmlOutput
(
GTEST_PROGRAM_NAME
,
EXPECTED_FILTERED_TEST_XML
,
0
,
self
.
_TestXmlOutput
(
GTEST_PROGRAM_NAME
,
EXPECTED_FILTERED_TEST_XML
,
0
,
extra_args
=
[
'%s=SuccessfulTest.*'
%
GTEST_FILTER_FLAG
])
extra_args
=
[
'%s=SuccessfulTest.*'
%
GTEST_FILTER_FLAG
])
def
_GetXmlOutput
(
self
,
gtest_prog_name
,
extra_args
,
expected_exit_code
):
def
testShardedTestXmlOutput
(
self
):
"""Verifies XML output when run using multiple shards.
Runs a test program that executes only one shard and verifies that tests
from other shards do not show up in the XML output.
"""
self
.
_TestXmlOutput
(
GTEST_PROGRAM_NAME
,
EXPECTED_SHARDED_TEST_XML
,
0
,
extra_env
=
{
SHARD_INDEX_ENV_VAR
:
'0'
,
TOTAL_SHARDS_ENV_VAR
:
'10'
})
def
_GetXmlOutput
(
self
,
gtest_prog_name
,
extra_args
,
extra_env
,
expected_exit_code
):
"""
"""
Returns the xml output generated by running the program gtest_prog_name.
Returns the xml output generated by running the program gtest_prog_name.
Furthermore, the program's exit code must be expected_exit_code.
Furthermore, the program's exit code must be expected_exit_code.
...
@@ -274,7 +303,11 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
...
@@ -274,7 +303,11 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
command
=
([
gtest_prog_path
,
'%s=xml:%s'
%
(
GTEST_OUTPUT_FLAG
,
xml_path
)]
+
command
=
([
gtest_prog_path
,
'%s=xml:%s'
%
(
GTEST_OUTPUT_FLAG
,
xml_path
)]
+
extra_args
)
extra_args
)
p
=
gtest_test_utils
.
Subprocess
(
command
)
environ_copy
=
os
.
environ
.
copy
()
if
extra_env
:
environ_copy
.
update
(
extra_env
)
p
=
gtest_test_utils
.
Subprocess
(
command
,
env
=
environ_copy
)
if
p
.
terminated_by_signal
:
if
p
.
terminated_by_signal
:
self
.
assert_
(
False
,
self
.
assert_
(
False
,
'%s was killed by signal %d'
%
(
gtest_prog_name
,
p
.
signal
))
'%s was killed by signal %d'
%
(
gtest_prog_name
,
p
.
signal
))
...
@@ -288,7 +321,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
...
@@ -288,7 +321,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
return
actual
return
actual
def
_TestXmlOutput
(
self
,
gtest_prog_name
,
expected_xml
,
def
_TestXmlOutput
(
self
,
gtest_prog_name
,
expected_xml
,
expected_exit_code
,
extra_args
=
None
):
expected_exit_code
,
extra_args
=
None
,
extra_env
=
None
):
"""
"""
Asserts that the XML document generated by running the program
Asserts that the XML document generated by running the program
gtest_prog_name matches expected_xml, a string containing another
gtest_prog_name matches expected_xml, a string containing another
...
@@ -297,7 +330,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
...
@@ -297,7 +330,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
"""
"""
actual
=
self
.
_GetXmlOutput
(
gtest_prog_name
,
extra_args
or
[],
actual
=
self
.
_GetXmlOutput
(
gtest_prog_name
,
extra_args
or
[],
expected_exit_code
)
extra_env
or
{},
expected_exit_code
)
expected
=
minidom
.
parseString
(
expected_xml
)
expected
=
minidom
.
parseString
(
expected_xml
)
self
.
NormalizeXml
(
actual
.
documentElement
)
self
.
NormalizeXml
(
actual
.
documentElement
)
self
.
AssertEquivalentNodes
(
expected
.
documentElement
,
self
.
AssertEquivalentNodes
(
expected
.
documentElement
,
...
...
googletest/test/gtest_xml_test_utils.py
View file @
ad0146bf
#!/usr/bin/env python
#
# Copyright 2006, Google Inc.
# Copyright 2006, Google Inc.
# All rights reserved.
# All rights reserved.
#
#
...
@@ -31,15 +29,12 @@
...
@@ -31,15 +29,12 @@
"""Unit test utilities for gtest_xml_output"""
"""Unit test utilities for gtest_xml_output"""
__author__
=
'eefacm@gmail.com (Sean Mcafee)'
import
os
import
re
import
re
from
xml.dom
import
minidom
,
Node
import
gtest_test_utils
import
gtest_test_utils
from
xml.dom
import
minidom
,
Node
GTEST_OUTPUT_FLAG
=
'--gtest_output'
GTEST_DEFAULT_OUTPUT_FILE
=
'test_detail.xml'
GTEST_DEFAULT_OUTPUT_FILE
=
'test_detail.xml'
class
GTestXMLTestCase
(
gtest_test_utils
.
TestCase
):
class
GTestXMLTestCase
(
gtest_test_utils
.
TestCase
):
...
@@ -101,7 +96,7 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
...
@@ -101,7 +96,7 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
self
.
assertEquals
(
self
.
assertEquals
(
len
(
expected_children
),
len
(
actual_children
),
len
(
expected_children
),
len
(
actual_children
),
'number of child elements differ in element '
+
actual_node
.
tagName
)
'number of child elements differ in element '
+
actual_node
.
tagName
)
for
child_id
,
child
in
expected_children
.
items
():
for
child_id
,
child
in
expected_children
.
iter
items
():
self
.
assert_
(
child_id
in
actual_children
,
self
.
assert_
(
child_id
in
actual_children
,
'<%s> is not in <%s> (in element %s)'
%
'<%s> is not in <%s> (in element %s)'
%
(
child_id
,
actual_children
,
actual_node
.
tagName
))
(
child_id
,
actual_children
,
actual_node
.
tagName
))
...
@@ -187,8 +182,8 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
...
@@ -187,8 +182,8 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
# Replaces the source line information with a normalized form.
# Replaces the source line information with a normalized form.
cdata
=
re
.
sub
(
source_line_pat
,
'
\\
1*
\n
'
,
child
.
nodeValue
)
cdata
=
re
.
sub
(
source_line_pat
,
'
\\
1*
\n
'
,
child
.
nodeValue
)
# Removes the actual stack trace.
# Removes the actual stack trace.
child
.
nodeValue
=
re
.
sub
(
r
'
\n
Stack trace:\n(.|\n)*'
,
child
.
nodeValue
=
re
.
sub
(
r
'Stack trace:\n(.|\n)*'
,
''
,
cdata
)
'
Stack trace:
\n
*
'
,
cdata
)
for
child
in
element
.
childNodes
:
for
child
in
element
.
childNodes
:
if
child
.
nodeType
==
Node
.
ELEMENT_NODE
:
if
child
.
nodeType
==
Node
.
ELEMENT_NODE
:
self
.
NormalizeXml
(
child
)
self
.
NormalizeXml
(
child
)
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