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
21e51855
Unverified
Commit
21e51855
authored
Aug 16, 2018
by
Gennadiy Civil
Committed by
GitHub
Aug 16, 2018
Browse files
Merge branch 'master' into josh/fix_scoped_class2
parents
3e2cb754
490554aa
Changes
240
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
549 additions
and
209 deletions
+549
-209
googletest/test/gtest_test_macro_stack_footprint_test.cc
googletest/test/gtest_test_macro_stack_footprint_test.cc
+89
-0
googletest/test/gtest_test_utils.py
googletest/test/gtest_test_utils.py
+13
-19
googletest/test/gtest_testbridge_test.py
googletest/test/gtest_testbridge_test.py
+63
-0
googletest/test/gtest_testbridge_test_.cc
googletest/test/gtest_testbridge_test_.cc
+43
-0
googletest/test/gtest_throw_on_failure_ex_test.cc
googletest/test/gtest_throw_on_failure_ex_test.cc
+1
-2
googletest/test/gtest_unittest.cc
googletest/test/gtest_unittest.cc
+196
-118
googletest/test/gtest_xml_outfile1_test_.cc
googletest/test/gtest_xml_outfile1_test_.cc
+0
-2
googletest/test/gtest_xml_outfile2_test_.cc
googletest/test/gtest_xml_outfile2_test_.cc
+0
-2
googletest/test/gtest_xml_outfiles_test.py
googletest/test/gtest_xml_outfiles_test.py
+16
-8
googletest/test/gtest_xml_output_unittest.py
googletest/test/gtest_xml_output_unittest.py
+93
-21
googletest/test/gtest_xml_output_unittest_.cc
googletest/test/gtest_xml_output_unittest_.cc
+0
-2
googletest/test/gtest_xml_test_utils.py
googletest/test/gtest_xml_test_utils.py
+25
-23
googletest/test/production.cc
googletest/test/production.cc
+2
-3
googletest/test/production.h
googletest/test/production.h
+2
-3
googletest/xcode/Config/DebugProject.xcconfig
googletest/xcode/Config/DebugProject.xcconfig
+1
-1
googletest/xcode/Config/FrameworkTarget.xcconfig
googletest/xcode/Config/FrameworkTarget.xcconfig
+1
-1
googletest/xcode/Config/General.xcconfig
googletest/xcode/Config/General.xcconfig
+1
-1
googletest/xcode/Config/ReleaseProject.xcconfig
googletest/xcode/Config/ReleaseProject.xcconfig
+1
-1
googletest/xcode/Config/StaticLibraryTarget.xcconfig
googletest/xcode/Config/StaticLibraryTarget.xcconfig
+1
-1
googletest/xcode/Scripts/versiongenerate.py
googletest/xcode/Scripts/versiongenerate.py
+1
-1
No files found.
googletest/test/gtest_test_macro_stack_footprint_test.cc
0 → 100644
View file @
21e51855
// Copyright 2013, Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Each TEST() expands to some static registration logic. GCC puts all
// such static initialization logic for a translation unit in a common,
// internal function. Since Google's build system restricts how much
// stack space a function can use, there's a limit on how many TEST()s
// one can put in a single C++ test file. This test ensures that a large
// number of TEST()s can be defined in the same translation unit.
#include "gtest/gtest.h"
// This macro defines 10 dummy tests.
#define TEN_TESTS_(test_case_name) \
TEST(test_case_name, T0) {} \
TEST(test_case_name, T1) {} \
TEST(test_case_name, T2) {} \
TEST(test_case_name, T3) {} \
TEST(test_case_name, T4) {} \
TEST(test_case_name, T5) {} \
TEST(test_case_name, T6) {} \
TEST(test_case_name, T7) {} \
TEST(test_case_name, T8) {} \
TEST(test_case_name, T9) {}
// This macro defines 100 dummy tests.
#define HUNDRED_TESTS_(test_case_name_prefix) \
TEN_TESTS_(test_case_name_prefix ## 0) \
TEN_TESTS_(test_case_name_prefix ## 1) \
TEN_TESTS_(test_case_name_prefix ## 2) \
TEN_TESTS_(test_case_name_prefix ## 3) \
TEN_TESTS_(test_case_name_prefix ## 4) \
TEN_TESTS_(test_case_name_prefix ## 5) \
TEN_TESTS_(test_case_name_prefix ## 6) \
TEN_TESTS_(test_case_name_prefix ## 7) \
TEN_TESTS_(test_case_name_prefix ## 8) \
TEN_TESTS_(test_case_name_prefix ## 9)
// This macro defines 1000 dummy tests.
#define THOUSAND_TESTS_(test_case_name_prefix) \
HUNDRED_TESTS_(test_case_name_prefix ## 0) \
HUNDRED_TESTS_(test_case_name_prefix ## 1) \
HUNDRED_TESTS_(test_case_name_prefix ## 2) \
HUNDRED_TESTS_(test_case_name_prefix ## 3) \
HUNDRED_TESTS_(test_case_name_prefix ## 4) \
HUNDRED_TESTS_(test_case_name_prefix ## 5) \
HUNDRED_TESTS_(test_case_name_prefix ## 6) \
HUNDRED_TESTS_(test_case_name_prefix ## 7) \
HUNDRED_TESTS_(test_case_name_prefix ## 8) \
HUNDRED_TESTS_(test_case_name_prefix ## 9)
// Ensures that we can define 1000 TEST()s in the same translation
// unit.
THOUSAND_TESTS_
(
T
)
int
main
(
int
argc
,
char
**
argv
)
{
testing
::
InitGoogleTest
(
&
argc
,
argv
);
// We don't actually need to run the dummy tests - the purpose is to
// ensure that they compile.
return
0
;
}
googletest/test/gtest_test_utils.py
View file @
21e51855
#!/usr/bin/env python
#
# Copyright 2006, Google Inc.
# All rights reserved.
#
...
...
@@ -29,20 +27,21 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# 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 and Mocking Framework."""
# Suppresses the 'Import not at the top of the file' lint complaint.
# pylint: disable-msg=C6204
import
os
import
sys
__author__
=
'wan@google.com (Zhanyong Wan)'
IS_WINDOWS
=
os
.
name
==
'nt'
IS_CYGWIN
=
os
.
name
==
'posix'
and
'CYGWIN'
in
os
.
uname
()[
0
]
import
atexit
import
os
import
shutil
import
sys
import
tempfile
import
unittest
_test_module
=
unittest
import
unittest
as
_test_module
# Suppresses the 'Import not at the top of the file' lint complaint.
# pylint: disable-msg=C6204
try
:
import
subprocess
_SUBPROCESS_MODULE_AVAILABLE
=
True
...
...
@@ -53,9 +52,6 @@ except:
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.
PREMATURE_EXIT_FILE_ENV_VAR
=
'TEST_PREMATURE_EXIT_FILE'
...
...
@@ -74,7 +70,7 @@ def SetEnvVar(env_var, value):
# Here we expose a class from a particular module, depending on the
# environment. The comment suppresses the 'Invalid variable name' lint
# complaint.
TestCase
=
_test_module
.
TestCase
# pylint: disable
-msg
=C6409
TestCase
=
_test_module
.
TestCase
# pylint: disable=C6409
# Initially maps a flag to its default value. After
# _ParseAndStripGTestFlags() is called, maps a flag to its actual value.
...
...
@@ -88,7 +84,7 @@ def _ParseAndStripGTestFlags(argv):
# Suppresses the lint complaint about a global variable since we need it
# here to maintain module-wide state.
global
_gtest_flags_are_parsed
# pylint: disable
-msg
=W0603
global
_gtest_flags_are_parsed
# pylint: disable=W0603
if
_gtest_flags_are_parsed
:
return
...
...
@@ -145,8 +141,6 @@ atexit.register(_RemoveTempDir)
def
GetTempDir
():
"""Returns a directory for temporary files."""
global
_temp_dir
if
not
_temp_dir
:
_temp_dir
=
tempfile
.
mkdtemp
()
...
...
@@ -178,7 +172,7 @@ def GetTestExecutablePath(executable_name, build_dir=None):
'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
'
'environment variable.'
%
path
)
sys
.
stdout
.
write
(
message
)
print
>>
sys
.
stderr
,
message
sys
.
exit
(
1
)
return
path
...
...
@@ -312,7 +306,7 @@ def Main():
_ParseAndStripGTestFlags
(
sys
.
argv
)
# The tested binaries should not be writing XML output files unless the
# script explicitly instructs them to.
#
TODO(vladl@google.com)
: Move this into Subprocess when we implement
#
FIXME
: Move this into Subprocess when we implement
# passing environment into it as a parameter.
if
GTEST_OUTPUT_VAR_NAME
in
os
.
environ
:
del
os
.
environ
[
GTEST_OUTPUT_VAR_NAME
]
...
...
googletest/test/gtest_testbridge_test.py
0 → 100755
View file @
21e51855
#!/usr/bin/env python
#
# Copyright 2018 Google LLC. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above
# copyright notice, this list of conditions and the following disclaimer
# in the documentation and/or other materials provided with the
# distribution.
# * Neither the name of Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""Verifies that Google Test uses filter provided via testbridge."""
import
os
import
gtest_test_utils
binary_name
=
'gtest_testbridge_test_'
COMMAND
=
gtest_test_utils
.
GetTestExecutablePath
(
binary_name
)
TESTBRIDGE_NAME
=
'TESTBRIDGE_TEST_ONLY'
def
Assert
(
condition
):
if
not
condition
:
raise
AssertionError
class
GTestTestFilterTest
(
gtest_test_utils
.
TestCase
):
def
testTestExecutionIsFiltered
(
self
):
"""Tests that the test filter is picked up from the testbridge env var."""
subprocess_env
=
os
.
environ
.
copy
()
subprocess_env
[
TESTBRIDGE_NAME
]
=
'*.TestThatSucceeds'
p
=
gtest_test_utils
.
Subprocess
(
COMMAND
,
env
=
subprocess_env
)
self
.
assertEquals
(
0
,
p
.
exit_code
)
Assert
(
'filter = *.TestThatSucceeds'
in
p
.
output
)
Assert
(
'[ OK ] TestFilterTest.TestThatSucceeds'
in
p
.
output
)
Assert
(
'[ PASSED ] 1 test.'
in
p
.
output
)
if
__name__
==
'__main__'
:
gtest_test_utils
.
Main
()
googletest/test/gtest_testbridge_test_.cc
0 → 100644
View file @
21e51855
// Copyright 2018, Google LLC.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// This program is meant to be run by gtest_test_filter_test.py. Do not run
// it directly.
#include "gtest/gtest.h"
// These tests are used to detect if filtering is working. Only
// 'TestThatSucceeds' should ever run.
TEST
(
TestFilterTest
,
TestThatSucceeds
)
{}
TEST
(
TestFilterTest
,
TestThatFails
)
{
ASSERT_TRUE
(
false
)
<<
"This test should never be run."
;
}
googletest/test/gtest_throw_on_failure_ex_test.cc
View file @
21e51855
...
...
@@ -26,8 +26,7 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
// Tests Google Test's throw-on-failure mode with exceptions enabled.
...
...
googletest/test/gtest_unittest.cc
View file @
21e51855
...
...
@@ -26,17 +26,16 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
//
// Tests for Google Test itself. This verifies that the basic constructs of
// Google Test work.
#include "gtest/gtest.h"
// Verifies that the command line flag variables can be accessed
//
in
code once
<gtest/
gtest.h
>
has been #included.
// Do not move it after other #includes.
// Verifies that the command line flag variables can be accessed
in
// code once
"
gtest.h
"
has been #included.
// Do not move it after other
gtest
#includes.
TEST
(
CommandLineFlagsTest
,
CanBeAccessedInCodeOnceGTestHIsIncluded
)
{
bool
dummy
=
testing
::
GTEST_FLAG
(
also_run_disabled_tests
)
||
testing
::
GTEST_FLAG
(
break_on_failure
)
...
...
@@ -64,17 +63,12 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) {
#include <map>
#include <vector>
#include <ostream>
#if GTEST_LANG_CXX11
#include <unordered_set>
#endif // GTEST_LANG_CXX11
#include "gtest/gtest-spi.h"
// Indicates that this translation unit is part of Google Test's
// implementation. It must come before gtest-internal-inl.h is
// included, or there will be a compiler error. This trick is to
// prevent a user from accidentally including gtest-internal-inl.h in
// their code.
#define GTEST_IMPLEMENTATION_ 1
#include "src/gtest-internal-inl.h"
#undef GTEST_IMPLEMENTATION_
namespace
testing
{
namespace
internal
{
...
...
@@ -266,6 +260,8 @@ using testing::internal::IsContainer;
using
testing
::
internal
::
IsContainerTest
;
using
testing
::
internal
::
IsNotContainer
;
using
testing
::
internal
::
NativeArray
;
using
testing
::
internal
::
OsStackTraceGetter
;
using
testing
::
internal
::
OsStackTraceGetterInterface
;
using
testing
::
internal
::
ParseInt32Flag
;
using
testing
::
internal
::
RelationToSourceCopy
;
using
testing
::
internal
::
RelationToSourceReference
;
...
...
@@ -282,6 +278,7 @@ using testing::internal::String;
using
testing
::
internal
::
TestEventListenersAccessor
;
using
testing
::
internal
::
TestResultAccessor
;
using
testing
::
internal
::
UInt32
;
using
testing
::
internal
::
UnitTestImpl
;
using
testing
::
internal
::
WideStringToUtf8
;
using
testing
::
internal
::
edit_distance
::
CalculateOptimalEdits
;
using
testing
::
internal
::
edit_distance
::
CreateUnifiedDiff
;
...
...
@@ -382,6 +379,31 @@ TEST(GetTestTypeIdTest, ReturnsTheSameValueInsideOrOutsideOfGoogleTest) {
EXPECT_EQ
(
kTestTypeIdInGoogleTest
,
GetTestTypeId
());
}
// Tests CanonicalizeForStdLibVersioning.
using
::
testing
::
internal
::
CanonicalizeForStdLibVersioning
;
TEST
(
CanonicalizeForStdLibVersioning
,
LeavesUnversionedNamesUnchanged
)
{
EXPECT_EQ
(
"std::bind"
,
CanonicalizeForStdLibVersioning
(
"std::bind"
));
EXPECT_EQ
(
"std::_"
,
CanonicalizeForStdLibVersioning
(
"std::_"
));
EXPECT_EQ
(
"std::__foo"
,
CanonicalizeForStdLibVersioning
(
"std::__foo"
));
EXPECT_EQ
(
"gtl::__1::x"
,
CanonicalizeForStdLibVersioning
(
"gtl::__1::x"
));
EXPECT_EQ
(
"__1::x"
,
CanonicalizeForStdLibVersioning
(
"__1::x"
));
EXPECT_EQ
(
"::__1::x"
,
CanonicalizeForStdLibVersioning
(
"::__1::x"
));
}
TEST
(
CanonicalizeForStdLibVersioning
,
ElidesDoubleUnderNames
)
{
EXPECT_EQ
(
"std::bind"
,
CanonicalizeForStdLibVersioning
(
"std::__1::bind"
));
EXPECT_EQ
(
"std::_"
,
CanonicalizeForStdLibVersioning
(
"std::__1::_"
));
EXPECT_EQ
(
"std::bind"
,
CanonicalizeForStdLibVersioning
(
"std::__g::bind"
));
EXPECT_EQ
(
"std::_"
,
CanonicalizeForStdLibVersioning
(
"std::__g::_"
));
EXPECT_EQ
(
"std::bind"
,
CanonicalizeForStdLibVersioning
(
"std::__google::bind"
));
EXPECT_EQ
(
"std::_"
,
CanonicalizeForStdLibVersioning
(
"std::__google::_"
));
}
// Tests FormatTimeInMillisAsSeconds().
TEST
(
FormatTimeInMillisAsSecondsTest
,
FormatsZero
)
{
...
...
@@ -421,10 +443,10 @@ class FormatEpochTimeInMillisAsIso8601Test : public Test {
virtual
void
SetUp
()
{
saved_tz_
=
NULL
;
GTEST_DISABLE_MSC_
WARNINGS
_PUSH_
(
4996
/* getenv, strdup: deprecated */
)
GTEST_DISABLE_MSC_
DEPRECATED
_PUSH_
(
/* getenv, strdup: deprecated */
)
if
(
getenv
(
"TZ"
))
saved_tz_
=
strdup
(
getenv
(
"TZ"
));
GTEST_DISABLE_MSC_
WARNINGS
_POP_
()
GTEST_DISABLE_MSC_
DEPRECATED
_POP_
()
// Set up the time zone for FormatEpochTimeInMillisAsIso8601 to use. We
// cannot use the local time zone because the function's output depends
...
...
@@ -546,7 +568,7 @@ TEST(CodePointToUtf8Test, CanEncode8To11Bits) {
// 101 0111 0110 => 110-10101 10-110110
// Some compilers (e.g., GCC on MinGW) cannot handle non-ASCII codepoints
// in wide strings and wide chars. In order to accomodate them, we have to
// in wide strings and wide chars. In order to accom
m
odate them, we have to
// introduce such character constants as integers.
EXPECT_EQ
(
"
\xD5\xB6
"
,
CodePointToUtf8
(
static_cast
<
wchar_t
>
(
0x576
)));
...
...
@@ -1362,8 +1384,7 @@ class TestResultTest : public Test {
// In order to test TestResult, we need to modify its internal
// state, in particular the TestPartResult vector it holds.
// test_part_results() returns a const reference to this vector.
// We cast it to a non-const object s.t. it can be modified (yes,
// this is a hack).
// We cast it to a non-const object s.t. it can be modified
TPRVector
*
results1
=
const_cast
<
TPRVector
*>
(
&
TestResultAccessor
::
test_part_results
(
*
r1
));
TPRVector
*
results2
=
const_cast
<
TPRVector
*>
(
...
...
@@ -1787,7 +1808,7 @@ TEST(Int32FromEnvOrDieDeathTest, AbortsOnFailure) {
}
// Tests that Int32FromEnvOrDie() aborts with an error message
// if the variable cannot be represnted by an Int32.
// if the variable cannot be repres
e
nted by an Int32.
TEST
(
Int32FromEnvOrDieDeathTest
,
AbortsOnInt32Overflow
)
{
SetEnv
(
GTEST_FLAG_PREFIX_UPPER_
"VAR"
,
"1234567891234567891234"
);
EXPECT_DEATH_IF_SUPPORTED
(
...
...
@@ -2096,7 +2117,7 @@ class UnitTestRecordPropertyTestEnvironment : public Environment {
};
// This will test property recording outside of any test or test case.
Environment
*
record_property_env
GTEST_ATTRIBUTE_UNUSED_
=
static
Environment
*
record_property_env
=
AddGlobalTestEnvironment
(
new
UnitTestRecordPropertyTestEnvironment
);
// This group of tests is for predicate assertions (ASSERT_PRED*, etc)
...
...
@@ -2429,9 +2450,8 @@ TEST(StringAssertionTest, ASSERT_STREQ) {
const
char
p2
[]
=
"good"
;
ASSERT_STREQ
(
p1
,
p2
);
EXPECT_FATAL_FAILURE
(
ASSERT_STREQ
(
"bad"
,
"good"
),
"Expected equality of these values:
\n
\"
bad
\"\n
\"
good
\"
"
);
EXPECT_FATAL_FAILURE
(
ASSERT_STREQ
(
"bad"
,
"good"
),
"
\"
bad
\"\n
\"
good
\"
"
);
}
// Tests ASSERT_STREQ with NULL arguments.
...
...
@@ -3369,7 +3389,7 @@ class NoFatalFailureTest : public Test {
void
DoAssertNoFatalFailureOnFails
()
{
ASSERT_NO_FATAL_FAILURE
(
Fails
());
ADD_FAILURE
()
<<
"shold not reach here."
;
ADD_FAILURE
()
<<
"sho
u
ld not reach here."
;
}
void
DoExpectNoFatalFailureOnFails
()
{
...
...
@@ -3666,7 +3686,7 @@ TEST(AssertionTest, AssertFalseWithAssertionResult) {
}
#ifdef __BORLANDC__
// Restores warnings after previous "#pragma option push" supressed them
// Restores warnings after previous "#pragma option push" sup
p
ressed them
# pragma option pop
#endif
...
...
@@ -3821,7 +3841,7 @@ void TestEq1(int x) {
// Tests calling a test subroutine that's not part of a fixture.
TEST
(
AssertionTest
,
NonFixtureSubroutine
)
{
EXPECT_FATAL_FAILURE
(
TestEq1
(
2
),
"Which is: 2"
);
"
x
\n
Which is: 2"
);
}
// An uncopyable class.
...
...
@@ -3960,13 +3980,13 @@ TEST(AssertionTest, AnonymousEnum) {
// ICE's in C++Builder.
EXPECT_FATAL_FAILURE
(
ASSERT_EQ
(
kCaseA
,
kCaseB
),
"kCaseB"
);
"
kCaseB
\n
Which is:
"
);
EXPECT_FATAL_FAILURE
(
ASSERT_EQ
(
kCaseA
,
kCaseC
),
"Which is: 42"
);
"
\n
Which is: 42"
);
# endif
EXPECT_FATAL_FAILURE
(
ASSERT_EQ
(
kCaseA
,
kCaseC
),
"Which is: -1"
);
"
\n
Which is: -1"
);
}
#endif // !GTEST_OS_MAC && !defined(__SUNPRO_CC)
...
...
@@ -4392,7 +4412,7 @@ TEST(ExpectTest, ExpectFalseWithAssertionResult) {
}
#ifdef __BORLANDC__
// Restores warnings after previous "#pragma option push" supressed them
// Restores warnings after previous "#pragma option push" sup
p
ressed them
# pragma option pop
#endif
...
...
@@ -4434,7 +4454,7 @@ TEST(ExpectTest, EXPECT_EQ_NULL) {
// A failure.
int
n
=
0
;
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
NULL
,
&
n
),
"&n
\n
"
);
"
&n
\n
Which is:
"
);
}
#endif // GTEST_CAN_COMPARE_NULL
...
...
@@ -4450,7 +4470,7 @@ TEST(ExpectTest, EXPECT_EQ_0) {
// A failure.
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
0
,
5.6
),
"
Expected equality of these values:
\n
0
\n
5.6"
);
" 0
\n
5.6"
);
}
// Tests EXPECT_NE.
...
...
@@ -4550,7 +4570,7 @@ TEST(ExpectTest, EXPECT_ANY_THROW) {
TEST
(
ExpectTest
,
ExpectPrecedence
)
{
EXPECT_EQ
(
1
<
2
,
true
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
true
,
true
&&
false
),
"true && false"
);
"
true &&
false
\n
Which is:
false"
);
}
...
...
@@ -4667,7 +4687,7 @@ TEST(MacroTest, ADD_FAILURE_AT) {
// Unfortunately, we cannot verify that the failure message contains
// the right file path and line number the same way, as
// EXPECT_NONFATAL_FAILURE() doesn't get to see the file path and
// line number. Instead, we do that in gtest
_
output
_
test_.cc.
// line number. Instead, we do that in g
oogle
test
-
output
-
test_.cc.
}
// Tests FAIL.
...
...
@@ -4697,14 +4717,14 @@ TEST(EqAssertionTest, Bool) {
EXPECT_FATAL_FAILURE
({
bool
false_value
=
false
;
ASSERT_EQ
(
false_value
,
true
);
},
"Which is: false"
);
},
"
false_value
\n
Which is: false
\n
true
"
);
}
// Tests using int values in {EXPECT|ASSERT}_EQ.
TEST
(
EqAssertionTest
,
Int
)
{
ASSERT_EQ
(
32
,
32
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
32
,
33
),
"33"
);
"
32
\n
33"
);
}
// Tests using time_t values in {EXPECT|ASSERT}_EQ.
...
...
@@ -4721,9 +4741,9 @@ TEST(EqAssertionTest, Char) {
ASSERT_EQ
(
'z'
,
'z'
);
const
char
ch
=
'b'
;
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
'\0'
,
ch
),
"
ch
"
);
"
ch
\n
Which is: 'b'
"
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
'a'
,
ch
),
"
ch
"
);
"
ch
\n
Which is: 'b'
"
);
}
// Tests using wchar_t values in {EXPECT|ASSERT}_EQ.
...
...
@@ -4743,7 +4763,7 @@ TEST(EqAssertionTest, WideChar) {
"wchar"
);
wchar
=
0x8119
;
EXPECT_FATAL_FAILURE
(
ASSERT_EQ
(
static_cast
<
wchar_t
>
(
0x8120
),
wchar
),
"wchar"
);
"
wchar
\n
Which is: L'
"
);
}
// Tests using ::std::string values in {EXPECT|ASSERT}_EQ.
...
...
@@ -4772,8 +4792,7 @@ TEST(EqAssertionTest, StdString) {
static
::
std
::
string
str3
(
str1
);
str3
.
at
(
2
)
=
'\0'
;
EXPECT_FATAL_FAILURE
(
ASSERT_EQ
(
str1
,
str3
),
" str3
\n
"
" Which is:
\"
A
\\
0 in the middle
\"
"
);
" str3
\n
Which is:
\"
A
\\
0 in the middle
\"
"
);
}
#if GTEST_HAS_STD_WSTRING
...
...
@@ -4893,9 +4912,9 @@ TEST(EqAssertionTest, CharPointer) {
ASSERT_EQ
(
p1
,
p1
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
p0
,
p2
),
"
p2
"
);
"
p2
\n
Which is:
"
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
p1
,
p2
),
"
p2
"
);
"
p2
\n
Which is:
"
);
EXPECT_FATAL_FAILURE
(
ASSERT_EQ
(
reinterpret_cast
<
char
*>
(
0x1234
),
reinterpret_cast
<
char
*>
(
0xABC0
)),
"ABC0"
);
...
...
@@ -4915,9 +4934,9 @@ TEST(EqAssertionTest, WideCharPointer) {
EXPECT_EQ
(
p0
,
p0
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
p0
,
p2
),
"
p2
"
);
"
p2
\n
Which is:
"
);
EXPECT_NONFATAL_FAILURE
(
EXPECT_EQ
(
p1
,
p2
),
"
p2
"
);
"
p2
\n
Which is:
"
);
void
*
pv3
=
(
void
*
)
0x1234
;
// NOLINT
void
*
pv4
=
(
void
*
)
0xABC0
;
// NOLINT
const
wchar_t
*
p3
=
reinterpret_cast
<
const
wchar_t
*>
(
pv3
);
...
...
@@ -5462,7 +5481,8 @@ TEST_F(SetUpTestCaseTest, Test2) {
EXPECT_STREQ
(
"123"
,
shared_resource_
);
}
// The InitGoogleTestTest test case tests testing::InitGoogleTest().
// The ParseFlagsTest test case tests ParseGoogleTestFlagsOnly.
// The Flags struct stores a copy of all Google Test flags.
struct
Flags
{
...
...
@@ -5548,8 +5568,8 @@ struct Flags {
return
flags
;
}
// Creates a Flags struct where the gtest_random_seed flag has
//
the given
value.
// Creates a Flags struct where the gtest_random_seed flag has
the given
// value.
static
Flags
RandomSeed
(
Int32
random_seed
)
{
Flags
flags
;
flags
.
random_seed
=
random_seed
;
...
...
@@ -5564,8 +5584,8 @@ struct Flags {
return
flags
;
}
// Creates a Flags struct where the gtest_shuffle flag has
//
the given
value.
// Creates a Flags struct where the gtest_shuffle flag has
the given
// value.
static
Flags
Shuffle
(
bool
shuffle
)
{
Flags
flags
;
flags
.
shuffle
=
shuffle
;
...
...
@@ -5613,8 +5633,8 @@ struct Flags {
bool
throw_on_failure
;
};
// Fixture for testing
Init
GoogleTest().
class
InitGoogleTest
Test
:
public
Test
{
// Fixture for testing
Parse
GoogleTest
FlagsOnly
().
class
ParseFlags
Test
:
public
Test
{
protected:
// Clears the flags before each test.
virtual
void
SetUp
()
{
...
...
@@ -5675,16 +5695,16 @@ class InitGoogleTestTest : public Test {
const
bool
saved_help_flag
=
::
testing
::
internal
::
g_help_flag
;
::
testing
::
internal
::
g_help_flag
=
false
;
#if GTEST_HAS_STREAM_REDIRECTION
#
if GTEST_HAS_STREAM_REDIRECTION
CaptureStdout
();
#endif
#
endif
// Parses the command line.
internal
::
ParseGoogleTestFlagsOnly
(
&
argc1
,
const_cast
<
CharType
**>
(
argv1
));
#if GTEST_HAS_STREAM_REDIRECTION
#
if GTEST_HAS_STREAM_REDIRECTION
const
std
::
string
captured_stdout
=
GetCapturedStdout
();
#endif
#
endif
// Verifies the flag values.
CheckFlags
(
expected
);
...
...
@@ -5697,7 +5717,7 @@ class InitGoogleTestTest : public Test {
// help message for the flags it recognizes.
EXPECT_EQ
(
should_print_help
,
::
testing
::
internal
::
g_help_flag
);
#if GTEST_HAS_STREAM_REDIRECTION
#
if GTEST_HAS_STREAM_REDIRECTION
const
char
*
const
expected_help_fragment
=
"This program contains tests written using"
;
if
(
should_print_help
)
{
...
...
@@ -5706,7 +5726,7 @@ class InitGoogleTestTest : public Test {
EXPECT_PRED_FORMAT2
(
IsNotSubstring
,
expected_help_fragment
,
captured_stdout
);
}
#endif // GTEST_HAS_STREAM_REDIRECTION
#
endif // GTEST_HAS_STREAM_REDIRECTION
::
testing
::
internal
::
g_help_flag
=
saved_help_flag
;
}
...
...
@@ -5714,14 +5734,14 @@ class InitGoogleTestTest : public Test {
// This macro wraps TestParsingFlags s.t. the user doesn't need
// to specify the array sizes.
#define GTEST_TEST_PARSING_FLAGS_(argv1, argv2, expected, should_print_help) \
#
define GTEST_TEST_PARSING_FLAGS_(argv1, argv2, expected, should_print_help) \
TestParsingFlags(sizeof(argv1)/sizeof(*argv1) - 1, argv1, \
sizeof(argv2)/sizeof(*argv2) - 1, argv2, \
expected, should_print_help)
};
// Tests parsing an empty command line.
TEST_F
(
InitGoogleTest
Test
,
Empty
)
{
TEST_F
(
ParseFlags
Test
,
Empty
)
{
const
char
*
argv
[]
=
{
NULL
};
...
...
@@ -5734,7 +5754,7 @@ TEST_F(InitGoogleTestTest, Empty) {
}
// Tests parsing a command line that has no flag.
TEST_F
(
InitGoogleTest
Test
,
NoFlag
)
{
TEST_F
(
ParseFlags
Test
,
NoFlag
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
NULL
...
...
@@ -5749,7 +5769,7 @@ TEST_F(InitGoogleTestTest, NoFlag) {
}
// Tests parsing a bad --gtest_filter flag.
TEST_F
(
InitGoogleTest
Test
,
FilterBad
)
{
TEST_F
(
ParseFlags
Test
,
FilterBad
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_filter"
,
...
...
@@ -5766,7 +5786,7 @@ TEST_F(InitGoogleTestTest, FilterBad) {
}
// Tests parsing an empty --gtest_filter flag.
TEST_F
(
InitGoogleTest
Test
,
FilterEmpty
)
{
TEST_F
(
ParseFlags
Test
,
FilterEmpty
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_filter="
,
...
...
@@ -5782,7 +5802,7 @@ TEST_F(InitGoogleTestTest, FilterEmpty) {
}
// Tests parsing a non-empty --gtest_filter flag.
TEST_F
(
InitGoogleTest
Test
,
FilterNonEmpty
)
{
TEST_F
(
ParseFlags
Test
,
FilterNonEmpty
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_filter=abc"
,
...
...
@@ -5798,7 +5818,7 @@ TEST_F(InitGoogleTestTest, FilterNonEmpty) {
}
// Tests parsing --gtest_break_on_failure.
TEST_F
(
InitGoogleTest
Test
,
BreakOnFailureWithoutValue
)
{
TEST_F
(
ParseFlags
Test
,
BreakOnFailureWithoutValue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_break_on_failure"
,
...
...
@@ -5814,7 +5834,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureWithoutValue) {
}
// Tests parsing --gtest_break_on_failure=0.
TEST_F
(
InitGoogleTest
Test
,
BreakOnFailureFalse_0
)
{
TEST_F
(
ParseFlags
Test
,
BreakOnFailureFalse_0
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_break_on_failure=0"
,
...
...
@@ -5830,7 +5850,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureFalse_0) {
}
// Tests parsing --gtest_break_on_failure=f.
TEST_F
(
InitGoogleTest
Test
,
BreakOnFailureFalse_f
)
{
TEST_F
(
ParseFlags
Test
,
BreakOnFailureFalse_f
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_break_on_failure=f"
,
...
...
@@ -5846,7 +5866,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureFalse_f) {
}
// Tests parsing --gtest_break_on_failure=F.
TEST_F
(
InitGoogleTest
Test
,
BreakOnFailureFalse_F
)
{
TEST_F
(
ParseFlags
Test
,
BreakOnFailureFalse_F
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_break_on_failure=F"
,
...
...
@@ -5863,7 +5883,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureFalse_F) {
// Tests parsing a --gtest_break_on_failure flag that has a "true"
// definition.
TEST_F
(
InitGoogleTest
Test
,
BreakOnFailureTrue
)
{
TEST_F
(
ParseFlags
Test
,
BreakOnFailureTrue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_break_on_failure=1"
,
...
...
@@ -5879,7 +5899,7 @@ TEST_F(InitGoogleTestTest, BreakOnFailureTrue) {
}
// Tests parsing --gtest_catch_exceptions.
TEST_F
(
InitGoogleTest
Test
,
CatchExceptions
)
{
TEST_F
(
ParseFlags
Test
,
CatchExceptions
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_catch_exceptions"
,
...
...
@@ -5895,7 +5915,7 @@ TEST_F(InitGoogleTestTest, CatchExceptions) {
}
// Tests parsing --gtest_death_test_use_fork.
TEST_F
(
InitGoogleTest
Test
,
DeathTestUseFork
)
{
TEST_F
(
ParseFlags
Test
,
DeathTestUseFork
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_death_test_use_fork"
,
...
...
@@ -5912,7 +5932,7 @@ TEST_F(InitGoogleTestTest, DeathTestUseFork) {
// Tests having the same flag twice with different values. The
// expected behavior is that the one coming last takes precedence.
TEST_F
(
InitGoogleTest
Test
,
DuplicatedFlags
)
{
TEST_F
(
ParseFlags
Test
,
DuplicatedFlags
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_filter=a"
,
...
...
@@ -5929,7 +5949,7 @@ TEST_F(InitGoogleTestTest, DuplicatedFlags) {
}
// Tests having an unrecognized flag on the command line.
TEST_F
(
InitGoogleTest
Test
,
UnrecognizedFlag
)
{
TEST_F
(
ParseFlags
Test
,
UnrecognizedFlag
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_break_on_failure"
,
...
...
@@ -5951,7 +5971,7 @@ TEST_F(InitGoogleTestTest, UnrecognizedFlag) {
}
// Tests having a --gtest_list_tests flag
TEST_F
(
InitGoogleTest
Test
,
ListTestsFlag
)
{
TEST_F
(
ParseFlags
Test
,
ListTestsFlag
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_list_tests"
,
...
...
@@ -5967,7 +5987,7 @@ TEST_F(InitGoogleTestTest, ListTestsFlag) {
}
// Tests having a --gtest_list_tests flag with a "true" value
TEST_F
(
InitGoogleTest
Test
,
ListTestsTrue
)
{
TEST_F
(
ParseFlags
Test
,
ListTestsTrue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_list_tests=1"
,
...
...
@@ -5983,7 +6003,7 @@ TEST_F(InitGoogleTestTest, ListTestsTrue) {
}
// Tests having a --gtest_list_tests flag with a "false" value
TEST_F
(
InitGoogleTest
Test
,
ListTestsFalse
)
{
TEST_F
(
ParseFlags
Test
,
ListTestsFalse
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_list_tests=0"
,
...
...
@@ -5999,7 +6019,7 @@ TEST_F(InitGoogleTestTest, ListTestsFalse) {
}
// Tests parsing --gtest_list_tests=f.
TEST_F
(
InitGoogleTest
Test
,
ListTestsFalse_f
)
{
TEST_F
(
ParseFlags
Test
,
ListTestsFalse_f
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_list_tests=f"
,
...
...
@@ -6015,7 +6035,7 @@ TEST_F(InitGoogleTestTest, ListTestsFalse_f) {
}
// Tests parsing --gtest_list_tests=F.
TEST_F
(
InitGoogleTest
Test
,
ListTestsFalse_F
)
{
TEST_F
(
ParseFlags
Test
,
ListTestsFalse_F
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_list_tests=F"
,
...
...
@@ -6031,7 +6051,7 @@ TEST_F(InitGoogleTestTest, ListTestsFalse_F) {
}
// Tests parsing --gtest_output (invalid).
TEST_F
(
InitGoogleTest
Test
,
OutputEmpty
)
{
TEST_F
(
ParseFlags
Test
,
OutputEmpty
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_output"
,
...
...
@@ -6048,7 +6068,7 @@ TEST_F(InitGoogleTestTest, OutputEmpty) {
}
// Tests parsing --gtest_output=xml
TEST_F
(
InitGoogleTest
Test
,
OutputXml
)
{
TEST_F
(
ParseFlags
Test
,
OutputXml
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_output=xml"
,
...
...
@@ -6064,7 +6084,7 @@ TEST_F(InitGoogleTestTest, OutputXml) {
}
// Tests parsing --gtest_output=xml:file
TEST_F
(
InitGoogleTest
Test
,
OutputXmlFile
)
{
TEST_F
(
ParseFlags
Test
,
OutputXmlFile
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_output=xml:file"
,
...
...
@@ -6080,7 +6100,7 @@ TEST_F(InitGoogleTestTest, OutputXmlFile) {
}
// Tests parsing --gtest_output=xml:directory/path/
TEST_F
(
InitGoogleTest
Test
,
OutputXmlDirectory
)
{
TEST_F
(
ParseFlags
Test
,
OutputXmlDirectory
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_output=xml:directory/path/"
,
...
...
@@ -6097,7 +6117,7 @@ TEST_F(InitGoogleTestTest, OutputXmlDirectory) {
}
// Tests having a --gtest_print_time flag
TEST_F
(
InitGoogleTest
Test
,
PrintTimeFlag
)
{
TEST_F
(
ParseFlags
Test
,
PrintTimeFlag
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_print_time"
,
...
...
@@ -6113,7 +6133,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFlag) {
}
// Tests having a --gtest_print_time flag with a "true" value
TEST_F
(
InitGoogleTest
Test
,
PrintTimeTrue
)
{
TEST_F
(
ParseFlags
Test
,
PrintTimeTrue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_print_time=1"
,
...
...
@@ -6129,7 +6149,7 @@ TEST_F(InitGoogleTestTest, PrintTimeTrue) {
}
// Tests having a --gtest_print_time flag with a "false" value
TEST_F
(
InitGoogleTest
Test
,
PrintTimeFalse
)
{
TEST_F
(
ParseFlags
Test
,
PrintTimeFalse
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_print_time=0"
,
...
...
@@ -6145,7 +6165,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFalse) {
}
// Tests parsing --gtest_print_time=f.
TEST_F
(
InitGoogleTest
Test
,
PrintTimeFalse_f
)
{
TEST_F
(
ParseFlags
Test
,
PrintTimeFalse_f
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_print_time=f"
,
...
...
@@ -6161,7 +6181,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFalse_f) {
}
// Tests parsing --gtest_print_time=F.
TEST_F
(
InitGoogleTest
Test
,
PrintTimeFalse_F
)
{
TEST_F
(
ParseFlags
Test
,
PrintTimeFalse_F
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_print_time=F"
,
...
...
@@ -6177,7 +6197,7 @@ TEST_F(InitGoogleTestTest, PrintTimeFalse_F) {
}
// Tests parsing --gtest_random_seed=number
TEST_F
(
InitGoogleTest
Test
,
RandomSeed
)
{
TEST_F
(
ParseFlags
Test
,
RandomSeed
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_random_seed=1000"
,
...
...
@@ -6193,7 +6213,7 @@ TEST_F(InitGoogleTestTest, RandomSeed) {
}
// Tests parsing --gtest_repeat=number
TEST_F
(
InitGoogleTest
Test
,
Repeat
)
{
TEST_F
(
ParseFlags
Test
,
Repeat
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_repeat=1000"
,
...
...
@@ -6209,7 +6229,7 @@ TEST_F(InitGoogleTestTest, Repeat) {
}
// Tests having a --gtest_also_run_disabled_tests flag
TEST_F
(
InitGoogleTest
Test
,
AlsoRunDisabledTestsFlag
)
{
TEST_F
(
ParseFlags
Test
,
AlsoRunDisabledTestsFlag
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_also_run_disabled_tests"
,
...
...
@@ -6226,7 +6246,7 @@ TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFlag) {
}
// Tests having a --gtest_also_run_disabled_tests flag with a "true" value
TEST_F
(
InitGoogleTest
Test
,
AlsoRunDisabledTestsTrue
)
{
TEST_F
(
ParseFlags
Test
,
AlsoRunDisabledTestsTrue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_also_run_disabled_tests=1"
,
...
...
@@ -6243,7 +6263,7 @@ TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsTrue) {
}
// Tests having a --gtest_also_run_disabled_tests flag with a "false" value
TEST_F
(
InitGoogleTest
Test
,
AlsoRunDisabledTestsFalse
)
{
TEST_F
(
ParseFlags
Test
,
AlsoRunDisabledTestsFalse
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_also_run_disabled_tests=0"
,
...
...
@@ -6260,7 +6280,7 @@ TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFalse) {
}
// Tests parsing --gtest_shuffle.
TEST_F
(
InitGoogleTest
Test
,
ShuffleWithoutValue
)
{
TEST_F
(
ParseFlags
Test
,
ShuffleWithoutValue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_shuffle"
,
...
...
@@ -6276,7 +6296,7 @@ TEST_F(InitGoogleTestTest, ShuffleWithoutValue) {
}
// Tests parsing --gtest_shuffle=0.
TEST_F
(
InitGoogleTest
Test
,
ShuffleFalse_0
)
{
TEST_F
(
ParseFlags
Test
,
ShuffleFalse_0
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_shuffle=0"
,
...
...
@@ -6291,9 +6311,8 @@ TEST_F(InitGoogleTestTest, ShuffleFalse_0) {
GTEST_TEST_PARSING_FLAGS_
(
argv
,
argv2
,
Flags
::
Shuffle
(
false
),
false
);
}
// Tests parsing a --gtest_shuffle flag that has a "true"
// definition.
TEST_F
(
InitGoogleTestTest
,
ShuffleTrue
)
{
// Tests parsing a --gtest_shuffle flag that has a "true" definition.
TEST_F
(
ParseFlagsTest
,
ShuffleTrue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_shuffle=1"
,
...
...
@@ -6309,7 +6328,7 @@ TEST_F(InitGoogleTestTest, ShuffleTrue) {
}
// Tests parsing --gtest_stack_trace_depth=number.
TEST_F
(
InitGoogleTest
Test
,
StackTraceDepth
)
{
TEST_F
(
ParseFlags
Test
,
StackTraceDepth
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_stack_trace_depth=5"
,
...
...
@@ -6324,7 +6343,7 @@ TEST_F(InitGoogleTestTest, StackTraceDepth) {
GTEST_TEST_PARSING_FLAGS_
(
argv
,
argv2
,
Flags
::
StackTraceDepth
(
5
),
false
);
}
TEST_F
(
InitGoogleTest
Test
,
StreamResultTo
)
{
TEST_F
(
ParseFlags
Test
,
StreamResultTo
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_stream_result_to=localhost:1234"
,
...
...
@@ -6341,7 +6360,7 @@ TEST_F(InitGoogleTestTest, StreamResultTo) {
}
// Tests parsing --gtest_throw_on_failure.
TEST_F
(
InitGoogleTest
Test
,
ThrowOnFailureWithoutValue
)
{
TEST_F
(
ParseFlags
Test
,
ThrowOnFailureWithoutValue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_throw_on_failure"
,
...
...
@@ -6357,7 +6376,7 @@ TEST_F(InitGoogleTestTest, ThrowOnFailureWithoutValue) {
}
// Tests parsing --gtest_throw_on_failure=0.
TEST_F
(
InitGoogleTest
Test
,
ThrowOnFailureFalse_0
)
{
TEST_F
(
ParseFlags
Test
,
ThrowOnFailureFalse_0
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_throw_on_failure=0"
,
...
...
@@ -6374,7 +6393,7 @@ TEST_F(InitGoogleTestTest, ThrowOnFailureFalse_0) {
// Tests parsing a --gtest_throw_on_failure flag that has a "true"
// definition.
TEST_F
(
InitGoogleTest
Test
,
ThrowOnFailureTrue
)
{
TEST_F
(
ParseFlags
Test
,
ThrowOnFailureTrue
)
{
const
char
*
argv
[]
=
{
"foo.exe"
,
"--gtest_throw_on_failure=1"
,
...
...
@@ -6389,9 +6408,9 @@ TEST_F(InitGoogleTestTest, ThrowOnFailureTrue) {
GTEST_TEST_PARSING_FLAGS_
(
argv
,
argv2
,
Flags
::
ThrowOnFailure
(
true
),
false
);
}
#if GTEST_OS_WINDOWS
#
if GTEST_OS_WINDOWS
// Tests parsing wide strings.
TEST_F
(
InitGoogleTest
Test
,
WideStrings
)
{
TEST_F
(
ParseFlags
Test
,
WideStrings
)
{
const
wchar_t
*
argv
[]
=
{
L"foo.exe"
,
L"--gtest_filter=Foo*"
,
...
...
@@ -6417,10 +6436,10 @@ TEST_F(InitGoogleTestTest, WideStrings) {
# endif // GTEST_OS_WINDOWS
#if GTEST_USE_OWN_FLAGFILE_FLAG_
class
FlagfileTest
:
public
InitGoogleTest
Test
{
class
FlagfileTest
:
public
ParseFlags
Test
{
public:
virtual
void
SetUp
()
{
InitGoogleTest
Test
::
SetUp
();
ParseFlags
Test
::
SetUp
();
testdata_path_
.
Set
(
internal
::
FilePath
(
testing
::
TempDir
()
+
internal
::
GetCurrentExecutableName
().
string
()
+
...
...
@@ -6431,7 +6450,7 @@ class FlagfileTest : public InitGoogleTestTest {
virtual
void
TearDown
()
{
testing
::
internal
::
posix
::
RmDir
(
testdata_path_
.
c_str
());
InitGoogleTest
Test
::
TearDown
();
ParseFlags
Test
::
TearDown
();
}
internal
::
FilePath
CreateFlagfile
(
const
char
*
contents
)
{
...
...
@@ -6570,6 +6589,7 @@ TEST_F(CurrentTestInfoTest, WorksForSecondTestInATestCase) {
}
// namespace testing
// These two lines test that we can define tests in a namespace that
// has the name "testing" and is nested in another namespace.
namespace
my_namespace
{
...
...
@@ -6650,7 +6670,7 @@ TEST(StreamingAssertionsTest, Truth2) {
}
#ifdef __BORLANDC__
// Restores warnings after previous "#pragma option push" supressed them
// Restores warnings after previous "#pragma option push" sup
p
ressed them
# pragma option pop
#endif
...
...
@@ -6900,14 +6920,6 @@ TEST(StaticAssertTypeEqTest, CompilesForEqualTypes) {
StaticAssertTypeEq
<
int
*
,
IntAlias
*>
();
}
TEST
(
GetCurrentOsStackTraceExceptTopTest
,
ReturnsTheStackTrace
)
{
testing
::
UnitTest
*
const
unit_test
=
testing
::
UnitTest
::
GetInstance
();
// We don't have a stack walker in Google Test yet.
EXPECT_STREQ
(
""
,
GetCurrentOsStackTraceExceptTop
(
unit_test
,
0
).
c_str
());
EXPECT_STREQ
(
""
,
GetCurrentOsStackTraceExceptTop
(
unit_test
,
1
).
c_str
());
}
TEST
(
HasNonfatalFailureTest
,
ReturnsFalseWhenThereIsNoFailure
)
{
EXPECT_FALSE
(
HasNonfatalFailure
());
}
...
...
@@ -7359,7 +7371,7 @@ GTEST_TEST(AlternativeNameTest, Works) { // GTEST_TEST is the same as TEST.
// Tests for internal utilities necessary for implementation of the universal
// printing.
//
TODO(vladl@google.com)
: Find a better home for them.
//
FIXME
: Find a better home for them.
class
ConversionHelperBase
{};
class
ConversionHelperDerived
:
public
ConversionHelperBase
{};
...
...
@@ -7543,6 +7555,50 @@ TEST(IsContainerTestTest, WorksForContainer) {
sizeof
(
IsContainerTest
<
std
::
map
<
int
,
double
>
>
(
0
)));
}
#if GTEST_LANG_CXX11
struct
ConstOnlyContainerWithPointerIterator
{
using
const_iterator
=
int
*
;
const_iterator
begin
()
const
;
const_iterator
end
()
const
;
};
struct
ConstOnlyContainerWithClassIterator
{
struct
const_iterator
{
const
int
&
operator
*
()
const
;
const_iterator
&
operator
++
(
/* pre-increment */
);
};
const_iterator
begin
()
const
;
const_iterator
end
()
const
;
};
TEST
(
IsContainerTestTest
,
ConstOnlyContainer
)
{
EXPECT_EQ
(
sizeof
(
IsContainer
),
sizeof
(
IsContainerTest
<
ConstOnlyContainerWithPointerIterator
>
(
0
)));
EXPECT_EQ
(
sizeof
(
IsContainer
),
sizeof
(
IsContainerTest
<
ConstOnlyContainerWithClassIterator
>
(
0
)));
}
#endif // GTEST_LANG_CXX11
// Tests IsHashTable.
struct
AHashTable
{
typedef
void
hasher
;
};
struct
NotReallyAHashTable
{
typedef
void
hasher
;
typedef
void
reverse_iterator
;
};
TEST
(
IsHashTable
,
Basic
)
{
EXPECT_TRUE
(
testing
::
internal
::
IsHashTable
<
AHashTable
>::
value
);
EXPECT_FALSE
(
testing
::
internal
::
IsHashTable
<
NotReallyAHashTable
>::
value
);
#if GTEST_LANG_CXX11
EXPECT_FALSE
(
testing
::
internal
::
IsHashTable
<
std
::
vector
<
int
>>::
value
);
EXPECT_TRUE
(
testing
::
internal
::
IsHashTable
<
std
::
unordered_set
<
int
>>::
value
);
#endif // GTEST_LANG_CXX11
#if GTEST_HAS_HASH_SET_
EXPECT_TRUE
(
testing
::
internal
::
IsHashTable
<
__gnu_cxx
::
hash_set
<
int
>>::
value
);
#endif // GTEST_HAS_HASH_SET_
}
// Tests ArrayEq().
TEST
(
ArrayEqTest
,
WorksForDegeneratedArrays
)
{
...
...
@@ -7667,7 +7723,7 @@ TEST(NativeArrayTest, MethodsWork) {
EXPECT_EQ
(
0
,
*
it
);
++
it
;
EXPECT_EQ
(
1
,
*
it
);
++
it
;
it
++
;
EXPECT_EQ
(
2
,
*
it
);
++
it
;
EXPECT_EQ
(
na
.
end
(),
it
);
...
...
@@ -7715,3 +7771,25 @@ TEST(SkipPrefixTest, DoesNotSkipWhenPrefixDoesNotMatch) {
EXPECT_FALSE
(
SkipPrefix
(
"world!"
,
&
p
));
EXPECT_EQ
(
str
,
p
);
}
// Tests ad_hoc_test_result().
class
AdHocTestResultTest
:
public
testing
::
Test
{
protected:
static
void
SetUpTestCase
()
{
FAIL
()
<<
"A failure happened inside SetUpTestCase()."
;
}
};
TEST_F
(
AdHocTestResultTest
,
AdHocTestResultForTestCaseShowsFailure
)
{
const
testing
::
TestResult
&
test_result
=
testing
::
UnitTest
::
GetInstance
()
->
current_test_case
()
->
ad_hoc_test_result
();
EXPECT_TRUE
(
test_result
.
Failed
());
}
TEST_F
(
AdHocTestResultTest
,
AdHocTestResultTestForUnitTestDoesNotShowFailure
)
{
const
testing
::
TestResult
&
test_result
=
testing
::
UnitTest
::
GetInstance
()
->
ad_hoc_test_result
();
EXPECT_FALSE
(
test_result
.
Failed
());
}
googletest/test/gtest_xml_outfile1_test_.cc
View file @
21e51855
...
...
@@ -27,8 +27,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: keith.ray@gmail.com (Keith Ray)
//
// gtest_xml_outfile1_test_ writes some xml via TestProperty used by
// gtest_xml_outfiles_test.py
...
...
googletest/test/gtest_xml_outfile2_test_.cc
View file @
21e51855
...
...
@@ -27,8 +27,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: keith.ray@gmail.com (Keith Ray)
//
// gtest_xml_outfile2_test_ writes some xml via TestProperty used by
// gtest_xml_outfiles_test.py
...
...
googletest/test/gtest_xml_outfiles_test.py
View file @
21e51855
...
...
@@ -31,15 +31,11 @@
"""Unit test for the gtest_xml_output module."""
__author__
=
"keith.ray@gmail.com (Keith Ray)"
import
os
from
xml.dom
import
minidom
,
Node
import
gtest_test_utils
import
gtest_xml_test_utils
GTEST_OUTPUT_SUBDIR
=
"xml_outfiles"
GTEST_OUTPUT_1_TEST
=
"gtest_xml_outfile1_test_"
GTEST_OUTPUT_2_TEST
=
"gtest_xml_outfile2_test_"
...
...
@@ -47,7 +43,13 @@ GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_"
EXPECTED_XML_1
=
"""<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
<testsuite name="PropertyOne" tests="1" failures="0" disabled="0" errors="0" time="*">
<testcase name="TestSomeProperties" status="run" time="*" classname="PropertyOne" SetUpProp="1" TestSomeProperty="1" TearDownProp="1" />
<testcase name="TestSomeProperties" status="run" time="*" classname="PropertyOne">
<properties>
<property name="SetUpProp" value="1"/>
<property name="TestSomeProperty" value="1"/>
<property name="TearDownProp" value="1"/>
</properties>
</testcase>
</testsuite>
</testsuites>
"""
...
...
@@ -55,7 +57,13 @@ EXPECTED_XML_1 = """<?xml version="1.0" encoding="UTF-8"?>
EXPECTED_XML_2
=
"""<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="1" failures="0" disabled="0" errors="0" time="*" timestamp="*" name="AllTests">
<testsuite name="PropertyTwo" tests="1" failures="0" disabled="0" errors="0" time="*">
<testcase name="TestSomeProperties" status="run" time="*" classname="PropertyTwo" SetUpProp="2" TestSomeProperty="2" TearDownProp="2" />
<testcase name="TestSomeProperties" status="run" time="*" classname="PropertyTwo">
<properties>
<property name="SetUpProp" value="2"/>
<property name="TestSomeProperty" value="2"/>
<property name="TearDownProp" value="2"/>
</properties>
</testcase>
</testsuite>
</testsuites>
"""
...
...
@@ -103,11 +111,11 @@ class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase):
self
.
assert_
(
p
.
exited
)
self
.
assertEquals
(
0
,
p
.
exit_code
)
#
TODO(wan@google.com)
: libtool causes the built test binary to be
#
FIXME
: libtool causes the built test binary to be
# named lt-gtest_xml_outfiles_test_ instead of
# gtest_xml_outfiles_test_. To account for this possibility, we
# allow both names in the following code. We should remove this
#
hack when Chandler Carruth's
libtool replacement tool is ready.
#
when
libtool replacement tool is ready.
output_file_name1
=
test_name
+
".xml"
output_file1
=
os
.
path
.
join
(
self
.
output_dir_
,
output_file_name1
)
output_file_name2
=
'lt-'
+
output_file_name1
...
...
googletest/test/gtest_xml_output_unittest.py
View file @
21e51855
...
...
@@ -31,8 +31,6 @@
"""Unit test for the gtest_xml_output module"""
__author__
=
'eefacm@gmail.com (Sean Mcafee)'
import
datetime
import
errno
import
os
...
...
@@ -43,19 +41,28 @@ from xml.dom import minidom, Node
import
gtest_test_utils
import
gtest_xml_test_utils
GTEST_FILTER_FLAG
=
'--gtest_filter'
GTEST_LIST_TESTS_FLAG
=
'--gtest_list_tests'
GTEST_OUTPUT_FLAG
=
"--gtest_output"
GTEST_DEFAULT_OUTPUT_FILE
=
"test_detail.xml"
GTEST_PROGRAM_NAME
=
"gtest_xml_output_unittest_"
GTEST_OUTPUT_FLAG
=
'--gtest_output'
GTEST_DEFAULT_OUTPUT_FILE
=
'test_detail.xml'
GTEST_PROGRAM_NAME
=
'gtest_xml_output_unittest_'
# The flag indicating stacktraces are not supported
NO_STACKTRACE_SUPPORT_FLAG
=
'--no_stacktrace_support'
SUPPORTS_STACK_TRACES
=
False
# 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
=
NO_STACKTRACE_SUPPORT_FLAG
not
in
sys
.
argv
if
SUPPORTS_STACK_TRACES
:
STACK_TRACE_TEMPLATE
=
'
\n
Stack trace:
\n
*'
else
:
STACK_TRACE_TEMPLATE
=
''
# unittest.main() can't handle unknown flags
sys
.
argv
.
remove
(
NO_STACKTRACE_SUPPORT_FLAG
)
EXPECTED_NON_EMPTY_XML
=
"""<?xml version="1.0" encoding="UTF-8"?>
<testsuites tests="23" failures="4" disabled="2" errors="0" time="*" timestamp="*" name="AllTests" ad_hoc_property="42">
...
...
@@ -102,15 +109,45 @@ Invalid characters in brackets []%(stack)s]]></failure>
<testcase name="DISABLED_test_not_run" status="notrun" time="*" classname="DisabledTest"/>
</testsuite>
<testsuite name="PropertyRecordingTest" tests="4" failures="0" disabled="0" errors="0" time="*" SetUpTestCase="yes" TearDownTestCase="aye">
<testcase name="OneProperty" status="run" time="*" classname="PropertyRecordingTest" key_1="1"/>
<testcase name="IntValuedProperty" status="run" time="*" classname="PropertyRecordingTest" key_int="1"/>
<testcase name="ThreeProperties" status="run" time="*" classname="PropertyRecordingTest" key_1="1" key_2="2" key_3="3"/>
<testcase name="TwoValuesForOneKeyUsesLastValue" status="run" time="*" classname="PropertyRecordingTest" key_1="2"/>
<testcase name="OneProperty" status="run" time="*" classname="PropertyRecordingTest">
<properties>
<property name="key_1" value="1"/>
</properties>
</testcase>
<testcase name="IntValuedProperty" status="run" time="*" classname="PropertyRecordingTest">
<properties>
<property name="key_int" value="1"/>
</properties>
</testcase>
<testcase name="ThreeProperties" status="run" time="*" classname="PropertyRecordingTest">
<properties>
<property name="key_1" value="1"/>
<property name="key_2" value="2"/>
<property name="key_3" value="3"/>
</properties>
</testcase>
<testcase name="TwoValuesForOneKeyUsesLastValue" status="run" time="*" classname="PropertyRecordingTest">
<properties>
<property name="key_1" value="2"/>
</properties>
</testcase>
</testsuite>
<testsuite name="NoFixtureTest" tests="3" failures="0" disabled="0" errors="0" time="*">
<testcase name="RecordProperty" status="run" time="*" classname="NoFixtureTest" key="1"/>
<testcase name="ExternalUtilityThatCallsRecordIntValuedProperty" status="run" time="*" classname="NoFixtureTest" key_for_utility_int="1"/>
<testcase name="ExternalUtilityThatCallsRecordStringValuedProperty" status="run" time="*" classname="NoFixtureTest" key_for_utility_string="1"/>
<testcase name="RecordProperty" status="run" time="*" classname="NoFixtureTest">
<properties>
<property name="key" value="1"/>
</properties>
</testcase>
<testcase name="ExternalUtilityThatCallsRecordIntValuedProperty" status="run" time="*" classname="NoFixtureTest">
<properties>
<property name="key_for_utility_int" value="1"/>
</properties>
</testcase>
<testcase name="ExternalUtilityThatCallsRecordStringValuedProperty" status="run" time="*" classname="NoFixtureTest">
<properties>
<property name="key_for_utility_string" value="1"/>
</properties>
</testcase>
</testsuite>
<testsuite name="Single/ValueParamTest" tests="4" failures="0" disabled="0" errors="0" time="*">
<testcase name="HasValueParamAttribute/0" value_param="33" status="run" time="*" classname="Single/ValueParamTest" />
...
...
@@ -141,6 +178,23 @@ EXPECTED_FILTERED_TEST_XML = """<?xml version="1.0" encoding="UTF-8"?>
</testsuite>
</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">
<properties>
<property name="key" value="1"/>
</properties>
</testcase>
</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"?>
<testsuites tests="0" failures="0" disabled="0" errors="0" time="*"
timestamp="*" name="AllTests">
...
...
@@ -182,7 +236,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
Runs a test program that generates an empty XML output, and checks if
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
# datetime.strptime() is only available in Python 2.5+ so we have to
# parse the expected datetime manually.
...
...
@@ -212,8 +266,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
'gtest_no_test_unittest'
)
try
:
os
.
remove
(
output_file
)
except
OSError
:
e
=
sys
.
exc_info
()[
1
]
except
OSError
,
e
:
if
e
.
errno
!=
errno
.
ENOENT
:
raise
...
...
@@ -263,7 +316,22 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
self
.
_TestXmlOutput
(
GTEST_PROGRAM_NAME
,
EXPECTED_FILTERED_TEST_XML
,
0
,
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.
Furthermore, the program's exit code must be expected_exit_code.
...
...
@@ -274,7 +342,11 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
command
=
([
gtest_prog_path
,
'%s=xml:%s'
%
(
GTEST_OUTPUT_FLAG
,
xml_path
)]
+
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
:
self
.
assert_
(
False
,
'%s was killed by signal %d'
%
(
gtest_prog_name
,
p
.
signal
))
...
...
@@ -288,7 +360,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
return
actual
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
gtest_prog_name matches expected_xml, a string containing another
...
...
@@ -297,7 +369,7 @@ class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase):
"""
actual
=
self
.
_GetXmlOutput
(
gtest_prog_name
,
extra_args
or
[],
expected_exit_code
)
extra_env
or
{},
expected_exit_code
)
expected
=
minidom
.
parseString
(
expected_xml
)
self
.
NormalizeXml
(
actual
.
documentElement
)
self
.
AssertEquivalentNodes
(
expected
.
documentElement
,
...
...
googletest/test/gtest_xml_output_unittest_.cc
View file @
21e51855
...
...
@@ -27,8 +27,6 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Author: eefacm@gmail.com (Sean Mcafee)
// Unit test for Google Test XML output.
//
// A user can specify XML output in a Google Test program to run via
...
...
googletest/test/gtest_xml_test_utils.py
View file @
21e51855
#!/usr/bin/env python
#
# Copyright 2006, Google Inc.
# All rights reserved.
#
...
...
@@ -31,15 +29,10 @@
"""Unit test utilities for gtest_xml_output"""
__author__
=
'eefacm@gmail.com (Sean Mcafee)'
import
re
from
xml.dom
import
minidom
,
Node
import
gtest_test_utils
GTEST_OUTPUT_FLAG
=
'--gtest_output'
GTEST_DEFAULT_OUTPUT_FILE
=
'test_detail.xml'
class
GTestXMLTestCase
(
gtest_test_utils
.
TestCase
):
...
...
@@ -101,26 +94,29 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
self
.
assertEquals
(
len
(
expected_children
),
len
(
actual_children
),
'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
,
'<%s> is not in <%s> (in element %s)'
%
(
child_id
,
actual_children
,
actual_node
.
tagName
))
self
.
AssertEquivalentNodes
(
child
,
actual_children
[
child_id
])
identifying_attribute
=
{
'testsuites'
:
'name'
,
'testsuite'
:
'name'
,
'testcase'
:
'name'
,
'failure'
:
'message'
,
}
'testsuites'
:
'name'
,
'testsuite'
:
'name'
,
'testcase'
:
'name'
,
'failure'
:
'message'
,
'property'
:
'name'
,
}
def
_GetChildren
(
self
,
element
):
"""
Fetches all of the child nodes of element, a DOM Element object.
Returns them as the values of a dictionary keyed by the IDs of the
children. For <testsuites>, <testsuite> and <testcase> elements, the ID
is the value of their "name" attribute; for <failure> elements, it is
the value of the "message" attribute; CDATA sections and non-whitespace
children. For <testsuites>, <testsuite>, <testcase>, and <property>
elements, the ID is the value of their "name" attribute; for <failure>
elements, it is the value of the "message" attribute; for <properties>
elements, it is the value of their parent's "name" attribute plus the
literal string "properties"; CDATA sections and non-whitespace
text nodes are concatenated into a single CDATA section with ID
"detail". An exception is raised if any element other than the above
four is encountered, if two child elements with the same identifying
...
...
@@ -130,11 +126,17 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
children
=
{}
for
child
in
element
.
childNodes
:
if
child
.
nodeType
==
Node
.
ELEMENT_NODE
:
self
.
assert_
(
child
.
tagName
in
self
.
identifying_attribute
,
'Encountered unknown element <%s>'
%
child
.
tagName
)
childID
=
child
.
getAttribute
(
self
.
identifying_attribute
[
child
.
tagName
])
self
.
assert_
(
childID
not
in
children
)
children
[
childID
]
=
child
if
child
.
tagName
==
'properties'
:
self
.
assert_
(
child
.
parentNode
is
not
None
,
'Encountered <properties> element without a parent'
)
child_id
=
child
.
parentNode
.
getAttribute
(
'name'
)
+
'-properties'
else
:
self
.
assert_
(
child
.
tagName
in
self
.
identifying_attribute
,
'Encountered unknown element <%s>'
%
child
.
tagName
)
child_id
=
child
.
getAttribute
(
self
.
identifying_attribute
[
child
.
tagName
])
self
.
assert_
(
child_id
not
in
children
)
children
[
child_id
]
=
child
elif
child
.
nodeType
in
[
Node
.
TEXT_NODE
,
Node
.
CDATA_SECTION_NODE
]:
if
'detail'
not
in
children
:
if
(
child
.
nodeType
==
Node
.
CDATA_SECTION_NODE
or
...
...
@@ -187,8 +189,8 @@ class GTestXMLTestCase(gtest_test_utils.TestCase):
# Replaces the source line information with a normalized form.
cdata
=
re
.
sub
(
source_line_pat
,
'
\\
1*
\n
'
,
child
.
nodeValue
)
# Removes the actual stack trace.
child
.
nodeValue
=
re
.
sub
(
r
'
\n
Stack trace:\n(.|\n)*'
,
''
,
cdata
)
child
.
nodeValue
=
re
.
sub
(
r
'Stack trace:\n(.|\n)*'
,
'
Stack trace:
\n
*
'
,
cdata
)
for
child
in
element
.
childNodes
:
if
child
.
nodeType
==
Node
.
ELEMENT_NODE
:
self
.
NormalizeXml
(
child
)
googletest/test/production.cc
View file @
21e51855
...
...
@@ -26,10 +26,9 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
//
// This is part of the unit test for include/gtest/gtest_prod.h.
// This is part of the unit test for gtest_prod.h.
#include "production.h"
...
...
googletest/test/production.h
View file @
21e51855
...
...
@@ -26,10 +26,9 @@
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
// Author: wan@google.com (Zhanyong Wan)
//
// This is part of the unit test for include/gtest/gtest_prod.h.
// This is part of the unit test for gtest_prod.h.
#ifndef GTEST_TEST_PRODUCTION_H_
#define GTEST_TEST_PRODUCTION_H_
...
...
googletest/xcode/Config/DebugProject.xcconfig
View file @
21e51855
...
...
@@ -5,7 +5,7 @@
// examples. It is set in the "Based On:" dropdown in the "Project" info
// dialog.
// This file is based on the Xcode Configuration files in:
// http://
code.google.com/p
/google-toolbox-for-mac
/
// http
s
://
github.com/google
/google-toolbox-for-mac
//
#include "General.xcconfig"
...
...
googletest/xcode/Config/FrameworkTarget.xcconfig
View file @
21e51855
...
...
@@ -4,7 +4,7 @@
// These are Framework target settings for the gtest framework and examples. It
// is set in the "Based On:" dropdown in the "Target" info dialog.
// This file is based on the Xcode Configuration files in:
// http://
code.google.com/p
/google-toolbox-for-mac
/
// http
s
://
github.com/google
/google-toolbox-for-mac
//
// Dynamic libs need to be position independent
...
...
googletest/xcode/Config/General.xcconfig
View file @
21e51855
...
...
@@ -4,7 +4,7 @@
// These are General configuration settings for the gtest framework and
// examples.
// This file is based on the Xcode Configuration files in:
// http://
code.google.com/p
/google-toolbox-for-mac
/
// http
s
://
github.com/google
/google-toolbox-for-mac
//
// Build for PPC and Intel, 32- and 64-bit
...
...
googletest/xcode/Config/ReleaseProject.xcconfig
View file @
21e51855
...
...
@@ -5,7 +5,7 @@
// and examples. It is set in the "Based On:" dropdown in the "Project" info
// dialog.
// This file is based on the Xcode Configuration files in:
// http://
code.google.com/p
/google-toolbox-for-mac
/
// http
s
://
github.com/google
/google-toolbox-for-mac
//
#include "General.xcconfig"
...
...
googletest/xcode/Config/StaticLibraryTarget.xcconfig
View file @
21e51855
...
...
@@ -4,7 +4,7 @@
// These are static library target settings for libgtest.a. It
// is set in the "Based On:" dropdown in the "Target" info dialog.
// This file is based on the Xcode Configuration files in:
// http://
code.google.com/p
/google-toolbox-for-mac
/
// http
s
://
github.com/google
/google-toolbox-for-mac
//
// Static libs can be included in bundles so make them position independent
...
...
googletest/xcode/Scripts/versiongenerate.py
View file @
21e51855
...
...
@@ -29,7 +29,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""A script to prepare version informtion for use the gtest Info.plist file.
"""A script to prepare version inform
a
tion for use the gtest Info.plist file.
This script extracts the version information from the configure.ac file and
uses it to generate a header file containing the same information. The
...
...
Prev
1
…
8
9
10
11
12
Next
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