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
0c3c8111
Commit
0c3c8111
authored
Aug 14, 2017
by
gpetit
Browse files
Merge remote-tracking branch 'origin/master' into user_logger_instead_of_printf
parents
8f04622c
673c975a
Changes
111
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
182 additions
and
122 deletions
+182
-122
googletest/include/gtest/internal/gtest-internal.h
googletest/include/gtest/internal/gtest-internal.h
+4
-3
googletest/include/gtest/internal/gtest-param-util.h
googletest/include/gtest/internal/gtest-param-util.h
+9
-10
googletest/include/gtest/internal/gtest-port-arch.h
googletest/include/gtest/internal/gtest-port-arch.h
+2
-0
googletest/include/gtest/internal/gtest-port.h
googletest/include/gtest/internal/gtest-port.h
+38
-10
googletest/samples/sample1.cc
googletest/samples/sample1.cc
+1
-1
googletest/samples/sample10_unittest.cc
googletest/samples/sample10_unittest.cc
+0
-3
googletest/samples/sample1_unittest.cc
googletest/samples/sample1_unittest.cc
+2
-1
googletest/samples/sample2_unittest.cc
googletest/samples/sample2_unittest.cc
+2
-1
googletest/samples/sample3_unittest.cc
googletest/samples/sample3_unittest.cc
+7
-6
googletest/samples/sample4_unittest.cc
googletest/samples/sample4_unittest.cc
+2
-1
googletest/samples/sample5_unittest.cc
googletest/samples/sample5_unittest.cc
+2
-2
googletest/samples/sample6_unittest.cc
googletest/samples/sample6_unittest.cc
+2
-1
googletest/samples/sample7_unittest.cc
googletest/samples/sample7_unittest.cc
+10
-10
googletest/samples/sample8_unittest.cc
googletest/samples/sample8_unittest.cc
+2
-1
googletest/samples/sample9_unittest.cc
googletest/samples/sample9_unittest.cc
+0
-3
googletest/scripts/upload.py
googletest/scripts/upload.py
+1
-1
googletest/src/gtest-death-test.cc
googletest/src/gtest-death-test.cc
+4
-5
googletest/src/gtest-internal-inl.h
googletest/src/gtest-internal-inl.h
+15
-15
googletest/src/gtest-port.cc
googletest/src/gtest-port.cc
+3
-21
googletest/src/gtest.cc
googletest/src/gtest.cc
+76
-27
No files found.
googletest/include/gtest/internal/gtest-internal.h
View file @
0c3c8111
...
...
@@ -175,7 +175,7 @@ namespace edit_distance {
// Returns the optimal edits to go from 'left' to 'right'.
// All edits cost the same, with replace having lower priority than
// add/remove.
// Simple implementation of the Wagner
–
Fischer algorithm.
// Simple implementation of the Wagner
-
Fischer algorithm.
// See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
enum
EditType
{
kMatch
,
kAdd
,
kRemove
,
kReplace
};
GTEST_API_
std
::
vector
<
EditType
>
CalculateOptimalEdits
(
...
...
@@ -502,9 +502,10 @@ typedef void (*SetUpTestCaseFunc)();
typedef
void
(
*
TearDownTestCaseFunc
)();
struct
CodeLocation
{
CodeLocation
(
const
string
&
a_file
,
int
a_line
)
:
file
(
a_file
),
line
(
a_line
)
{}
CodeLocation
(
const
std
::
string
&
a_file
,
int
a_line
)
:
file
(
a_file
),
line
(
a_line
)
{}
string
file
;
std
::
string
file
;
int
line
;
};
...
...
googletest/include/gtest/internal/gtest-param-util.h
View file @
0c3c8111
...
...
@@ -472,7 +472,7 @@ class ParameterizedTestCaseInfoBase {
virtual
~
ParameterizedTestCaseInfoBase
()
{}
// Base part of test case name for display purposes.
virtual
const
string
&
GetTestCaseName
()
const
=
0
;
virtual
const
std
::
string
&
GetTestCaseName
()
const
=
0
;
// Test case id to verify identity.
virtual
TypeId
GetTestCaseTypeId
()
const
=
0
;
// UnitTest class invokes this method to register tests in this
...
...
@@ -511,7 +511,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
:
test_case_name_
(
name
),
code_location_
(
code_location
)
{}
// Test case base name for display purposes.
virtual
const
string
&
GetTestCaseName
()
const
{
return
test_case_name_
;
}
virtual
const
std
::
string
&
GetTestCaseName
()
const
{
return
test_case_name_
;
}
// Test case id to verify identity.
virtual
TypeId
GetTestCaseTypeId
()
const
{
return
GetTypeId
<
TestCase
>
();
}
// TEST_P macro uses AddTestPattern() to record information
...
...
@@ -529,11 +529,10 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
}
// INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information
// about a generator.
int
AddTestCaseInstantiation
(
const
string
&
instantiation_name
,
int
AddTestCaseInstantiation
(
const
std
::
string
&
instantiation_name
,
GeneratorCreationFunc
*
func
,
ParamNameGeneratorFunc
*
name_func
,
const
char
*
file
,
int
line
)
{
const
char
*
file
,
int
line
)
{
instantiations_
.
push_back
(
InstantiationInfo
(
instantiation_name
,
func
,
name_func
,
file
,
line
));
return
0
;
// Return value used only to run this method in namespace scope.
...
...
@@ -550,13 +549,13 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
for
(
typename
InstantiationContainer
::
iterator
gen_it
=
instantiations_
.
begin
();
gen_it
!=
instantiations_
.
end
();
++
gen_it
)
{
const
string
&
instantiation_name
=
gen_it
->
name
;
const
std
::
string
&
instantiation_name
=
gen_it
->
name
;
ParamGenerator
<
ParamType
>
generator
((
*
gen_it
->
generator
)());
ParamNameGeneratorFunc
*
name_func
=
gen_it
->
name_func
;
const
char
*
file
=
gen_it
->
file
;
int
line
=
gen_it
->
line
;
string
test_case_name
;
std
::
string
test_case_name
;
if
(
!
instantiation_name
.
empty
()
)
test_case_name
=
instantiation_name
+
"/"
;
test_case_name
+=
test_info
->
test_case_base_name
;
...
...
@@ -609,8 +608,8 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
test_base_name
(
a_test_base_name
),
test_meta_factory
(
a_test_meta_factory
)
{}
const
string
test_case_base_name
;
const
string
test_base_name
;
const
std
::
string
test_case_base_name
;
const
std
::
string
test_base_name
;
const
scoped_ptr
<
TestMetaFactoryBase
<
ParamType
>
>
test_meta_factory
;
};
typedef
::
std
::
vector
<
linked_ptr
<
TestInfo
>
>
TestInfoContainer
;
...
...
@@ -651,7 +650,7 @@ class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase {
return
true
;
}
const
string
test_case_name_
;
const
std
::
string
test_case_name_
;
CodeLocation
code_location_
;
TestInfoContainer
tests_
;
InstantiationContainer
instantiations_
;
...
...
googletest/include/gtest/internal/gtest-port-arch.h
View file @
0c3c8111
...
...
@@ -84,6 +84,8 @@
# define GTEST_OS_HPUX 1
#elif defined __native_client__
# define GTEST_OS_NACL 1
#elif defined __NetBSD__
# define GTEST_OS_NETBSD 1
#elif defined __OpenBSD__
# define GTEST_OS_OPENBSD 1
#elif defined __QNX__
...
...
googletest/include/gtest/internal/gtest-port.h
View file @
0c3c8111
...
...
@@ -128,6 +128,7 @@
// GTEST_OS_MAC - Mac OS X
// GTEST_OS_IOS - iOS
// GTEST_OS_NACL - Google Native Client (NaCl)
// GTEST_OS_NETBSD - NetBSD
// GTEST_OS_OPENBSD - OpenBSD
// GTEST_OS_QNX - QNX
// GTEST_OS_SOLARIS - Sun Solaris
...
...
@@ -607,7 +608,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
// to your compiler flags.
# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \
|| GTEST_OS_QNX || GTEST_OS_FREEBSD || GTEST_OS_NACL)
|| GTEST_OS_QNX || GTEST_OS_FREEBSD || GTEST_OS_NACL
|| GTEST_OS_NETBSD
)
#endif // GTEST_HAS_PTHREAD
#if GTEST_HAS_PTHREAD
...
...
@@ -622,7 +623,7 @@ typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
// Determines if hash_map/hash_set are available.
// Only used for testing against those containers.
#if !defined(GTEST_HAS_HASH_MAP_)
# if
_MSC_VER
# if
defined(_MSC_VER) && (_MSC_VER < 1900)
# define GTEST_HAS_HASH_MAP_ 1 // Indicates that hash_map is available.
# define GTEST_HAS_HASH_SET_ 1 // Indicates that hash_set is available.
# endif // _MSC_VER
...
...
@@ -800,7 +801,7 @@ using ::std::tuple_size;
(GTEST_OS_MAC && !GTEST_OS_IOS) || \
(GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD)
GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD
|| GTEST_OS_NETBSD
)
# define GTEST_HAS_DEATH_TEST 1
#endif
...
...
@@ -874,6 +875,23 @@ using ::std::tuple_size;
# define GTEST_ATTRIBUTE_UNUSED_
#endif
// Use this annotation before a function that takes a printf format string.
#if defined(__GNUC__) && !defined(COMPILER_ICC)
# if defined(__MINGW_PRINTF_FORMAT)
// MinGW has two different printf implementations. Ensure the format macro
// matches the selected implementation. See
// https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/.
# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
__attribute__((__format__(__MINGW_PRINTF_FORMAT, string_index, \
first_to_check)))
# else
# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
__attribute__((__format__(__printf__, string_index, first_to_check)))
# endif
#else
# define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
#endif
// A macro to disallow operator=
// This should be used in the private: declarations for a class.
#define GTEST_DISALLOW_ASSIGN_(type)\
...
...
@@ -930,6 +948,11 @@ using ::std::tuple_size;
#endif // GTEST_HAS_SEH
// GTEST_API_ qualifies all symbols that must be exported. The definitions below
// are guarded by #ifndef to give embedders a chance to define GTEST_API_ in
// gtest/internal/custom/gtest-port.h
#ifndef GTEST_API_
#ifdef _MSC_VER
# if GTEST_LINKED_AS_SHARED_LIBRARY
# define GTEST_API_ __declspec(dllimport)
...
...
@@ -940,9 +963,11 @@ using ::std::tuple_size;
# define GTEST_API_ __attribute__((visibility ("default")))
#endif // _MSC_VER
#endif // GTEST_API_
#ifndef GTEST_API_
# define GTEST_API_
#endif
#endif
// GTEST_API_
#ifdef __GNUC__
// Ask the compiler to never inline a given function.
...
...
@@ -1428,9 +1453,6 @@ GTEST_API_ std::string GetCapturedStderr();
#endif // GTEST_HAS_STREAM_REDIRECTION
// Returns a path to temporary directory.
GTEST_API_
std
::
string
TempDir
();
// Returns the size (in bytes) of a file.
GTEST_API_
size_t
GetFileSize
(
FILE
*
file
);
...
...
@@ -2188,12 +2210,13 @@ class ThreadLocal {
GTEST_API_
size_t
GetThreadCount
();
// Passing non-POD classes through ellipsis (...) crashes the ARM
// compiler and generates a warning in Sun Studio
.
The Nokia Symbian
// compiler and generates a warning in Sun Studio
before 12u4.
The Nokia Symbian
// and the IBM XL C/C++ compiler try to instantiate a copy constructor
// for objects passed through ellipsis (...), failing for uncopyable
// objects. We define this to ensure that only POD is passed through
// ellipsis on these systems.
#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || \
(defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5130)
// We lose support for NULL detection where the compiler doesn't like
// passing non-POD classes through ellipsis (...).
# define GTEST_ELLIPSIS_NEEDS_POD_ 1
...
...
@@ -2395,7 +2418,7 @@ inline int Close(int fd) { return close(fd); }
inline
const
char
*
StrError
(
int
errnum
)
{
return
strerror
(
errnum
);
}
#endif
inline
const
char
*
GetEnv
(
const
char
*
name
)
{
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE | GTEST_OS_WINDOWS_RT
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE |
|
GTEST_OS_WINDOWS_RT
// We are on Windows CE, which has no environment variables.
static_cast
<
void
>
(
name
);
// To prevent 'unused argument' warning.
return
NULL
;
...
...
@@ -2559,6 +2582,11 @@ GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
std
::
string
StringFromGTestEnv
(
const
char
*
flag
,
const
char
*
default_val
);
}
// namespace internal
// Returns a path to temporary directory.
// Tries to determine an appropriate directory for the platform.
GTEST_API_
std
::
string
TempDir
();
}
// namespace testing
#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
googletest/samples/sample1.cc
View file @
0c3c8111
...
...
@@ -55,7 +55,7 @@ bool IsPrime(int n) {
// Try to divide n by every odd number i, starting from 3
for
(
int
i
=
3
;
;
i
+=
2
)
{
// We only have to try i up to the squre root of n
// We only have to try i up to the squ
a
re root of n
if
(
i
>
n
/
i
)
break
;
// Now, we have i <= n/i < n.
...
...
googletest/samples/sample10_unittest.cc
View file @
0c3c8111
...
...
@@ -35,7 +35,6 @@
#include <stdlib.h>
#include "gtest/gtest.h"
using
::
testing
::
EmptyTestEventListener
;
using
::
testing
::
InitGoogleTest
;
using
::
testing
::
Test
;
...
...
@@ -46,7 +45,6 @@ using ::testing::TestPartResult;
using
::
testing
::
UnitTest
;
namespace
{
// We will track memory used by this class.
class
Water
{
public:
...
...
@@ -106,7 +104,6 @@ TEST(ListenersTest, LeaksWater) {
Water
*
water
=
new
Water
;
EXPECT_TRUE
(
water
!=
NULL
);
}
}
// namespace
int
main
(
int
argc
,
char
**
argv
)
{
...
...
googletest/samples/sample1_unittest.cc
View file @
0c3c8111
...
...
@@ -46,7 +46,7 @@
#include <limits.h>
#include "sample1.h"
#include "gtest/gtest.h"
namespace
{
// Step 2. Use the TEST macro to define your tests.
//
...
...
@@ -139,6 +139,7 @@ TEST(IsPrimeTest, Positive) {
EXPECT_FALSE
(
IsPrime
(
6
));
EXPECT_TRUE
(
IsPrime
(
23
));
}
}
// namespace
// Step 3. Call RUN_ALL_TESTS() in main().
//
...
...
googletest/samples/sample2_unittest.cc
View file @
0c3c8111
...
...
@@ -42,7 +42,7 @@
#include "sample2.h"
#include "gtest/gtest.h"
namespace
{
// In this example, we test the MyString class (a simple string).
// Tests the default c'tor.
...
...
@@ -107,3 +107,4 @@ TEST(MyString, Set) {
s
.
Set
(
NULL
);
EXPECT_STREQ
(
NULL
,
s
.
c_string
());
}
}
// namespace
googletest/samples/sample3_unittest.cc
View file @
0c3c8111
...
...
@@ -65,14 +65,14 @@
#include "sample3-inl.h"
#include "gtest/gtest.h"
namespace
{
// To use a test fixture, derive a class from testing::Test.
class
QueueTest
:
public
testing
::
Test
{
class
QueueTest
Smpl3
:
public
testing
::
Test
{
protected:
// You should make the members protected s.t. they can be
// accessed from sub-classes.
// virtual void SetUp() will be called before each test is run. You
// should define it if you need to initialize the var
a
ibles.
// should define it if you need to initialize the vari
a
bles.
// Otherwise, this can be skipped.
virtual
void
SetUp
()
{
q1_
.
Enqueue
(
1
);
...
...
@@ -120,13 +120,13 @@ class QueueTest : public testing::Test {
// instead of TEST.
// Tests the default c'tor.
TEST_F
(
QueueTest
,
DefaultConstructor
)
{
TEST_F
(
QueueTest
Smpl3
,
DefaultConstructor
)
{
// You can access data in the test fixture here.
EXPECT_EQ
(
0u
,
q0_
.
Size
());
}
// Tests Dequeue().
TEST_F
(
QueueTest
,
Dequeue
)
{
TEST_F
(
QueueTest
Smpl3
,
Dequeue
)
{
int
*
n
=
q0_
.
Dequeue
();
EXPECT_TRUE
(
n
==
NULL
);
...
...
@@ -144,8 +144,9 @@ TEST_F(QueueTest, Dequeue) {
}
// Tests the Queue::Map() function.
TEST_F
(
QueueTest
,
Map
)
{
TEST_F
(
QueueTest
Smpl3
,
Map
)
{
MapTester
(
&
q0_
);
MapTester
(
&
q1_
);
MapTester
(
&
q2_
);
}
}
// namespace
googletest/samples/sample4_unittest.cc
View file @
0c3c8111
...
...
@@ -31,7 +31,7 @@
#include "gtest/gtest.h"
#include "sample4.h"
namespace
{
// Tests the Increment() method.
TEST
(
Counter
,
Increment
)
{
Counter
c
;
...
...
@@ -43,3 +43,4 @@ TEST(Counter, Increment) {
EXPECT_EQ
(
1
,
c
.
Increment
());
EXPECT_EQ
(
2
,
c
.
Increment
());
}
}
// namespace
googletest/samples/sample5_unittest.cc
View file @
0c3c8111
...
...
@@ -49,7 +49,7 @@
#include "sample3-inl.h"
#include "gtest/gtest.h"
#include "sample1.h"
namespace
{
// In this sample, we want to ensure that every test finishes within
// ~5 seconds. If a test takes longer to run, we consider it a
// failure.
...
...
@@ -191,7 +191,7 @@ TEST_F(QueueTest, Dequeue) {
EXPECT_EQ
(
1u
,
q2_
.
Size
());
delete
n
;
}
}
// namespace
// If necessary, you can derive further test fixtures from a derived
// fixture itself. For example, you can derive another fixture from
// QueueTest. Google Test imposes no limit on how deep the hierarchy
...
...
googletest/samples/sample6_unittest.cc
View file @
0c3c8111
...
...
@@ -36,7 +36,7 @@
#include "prime_tables.h"
#include "gtest/gtest.h"
namespace
{
// First, we define some factory functions for creating instances of
// the implementations. You may be able to skip this step if all your
// implementations can be constructed the same way.
...
...
@@ -222,3 +222,4 @@ INSTANTIATE_TYPED_TEST_CASE_P(OnTheFlyAndPreCalculated, // Instance name
PrimeTableImplementations
);
// Type list
#endif // GTEST_HAS_TYPED_TEST_P
}
// namespace
googletest/samples/sample7_unittest.cc
View file @
0c3c8111
...
...
@@ -39,7 +39,7 @@
#include "prime_tables.h"
#include "gtest/gtest.h"
namespace
{
#if GTEST_HAS_PARAM_TEST
using
::
testing
::
TestWithParam
;
...
...
@@ -65,9 +65,9 @@ PrimeTable* CreatePreCalculatedPrimeTable() {
// can refer to the test parameter by GetParam(). In this case, the test
// parameter is a factory function which we call in fixture's SetUp() to
// create and store an instance of PrimeTable.
class
PrimeTableTest
:
public
TestWithParam
<
CreatePrimeTableFunc
*>
{
class
PrimeTableTest
Smpl7
:
public
TestWithParam
<
CreatePrimeTableFunc
*>
{
public:
virtual
~
PrimeTableTest
()
{
delete
table_
;
}
virtual
~
PrimeTableTest
Smpl7
()
{
delete
table_
;
}
virtual
void
SetUp
()
{
table_
=
(
*
GetParam
())();
}
virtual
void
TearDown
()
{
delete
table_
;
...
...
@@ -78,7 +78,7 @@ class PrimeTableTest : public TestWithParam<CreatePrimeTableFunc*> {
PrimeTable
*
table_
;
};
TEST_P
(
PrimeTableTest
,
ReturnsFalseForNonPrimes
)
{
TEST_P
(
PrimeTableTest
Smpl7
,
ReturnsFalseForNonPrimes
)
{
EXPECT_FALSE
(
table_
->
IsPrime
(
-
5
));
EXPECT_FALSE
(
table_
->
IsPrime
(
0
));
EXPECT_FALSE
(
table_
->
IsPrime
(
1
));
...
...
@@ -87,7 +87,7 @@ TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) {
EXPECT_FALSE
(
table_
->
IsPrime
(
100
));
}
TEST_P
(
PrimeTableTest
,
ReturnsTrueForPrimes
)
{
TEST_P
(
PrimeTableTest
Smpl7
,
ReturnsTrueForPrimes
)
{
EXPECT_TRUE
(
table_
->
IsPrime
(
2
));
EXPECT_TRUE
(
table_
->
IsPrime
(
3
));
EXPECT_TRUE
(
table_
->
IsPrime
(
5
));
...
...
@@ -96,7 +96,7 @@ TEST_P(PrimeTableTest, ReturnsTrueForPrimes) {
EXPECT_TRUE
(
table_
->
IsPrime
(
131
));
}
TEST_P
(
PrimeTableTest
,
CanGetNextPrime
)
{
TEST_P
(
PrimeTableTest
Smpl7
,
CanGetNextPrime
)
{
EXPECT_EQ
(
2
,
table_
->
GetNextPrime
(
0
));
EXPECT_EQ
(
3
,
table_
->
GetNextPrime
(
2
));
EXPECT_EQ
(
5
,
table_
->
GetNextPrime
(
3
));
...
...
@@ -112,10 +112,9 @@ TEST_P(PrimeTableTest, CanGetNextPrime) {
//
// Here, we instantiate our tests with a list of two PrimeTable object
// factory functions:
INSTANTIATE_TEST_CASE_P
(
OnTheFlyAndPreCalculated
,
PrimeTableTest
,
Values
(
&
CreateOnTheFlyPrimeTable
,
&
CreatePreCalculatedPrimeTable
<
1000
>
));
INSTANTIATE_TEST_CASE_P
(
OnTheFlyAndPreCalculated
,
PrimeTableTestSmpl7
,
Values
(
&
CreateOnTheFlyPrimeTable
,
&
CreatePreCalculatedPrimeTable
<
1000
>
));
#else
...
...
@@ -128,3 +127,4 @@ INSTANTIATE_TEST_CASE_P(
TEST
(
DummyTest
,
ValueParameterizedTestsAreNotSupportedOnThisPlatform
)
{}
#endif // GTEST_HAS_PARAM_TEST
}
// namespace
googletest/samples/sample8_unittest.cc
View file @
0c3c8111
...
...
@@ -37,7 +37,7 @@
#include "prime_tables.h"
#include "gtest/gtest.h"
namespace
{
#if GTEST_HAS_COMBINE
// Suppose we want to introduce a new, improved implementation of PrimeTable
...
...
@@ -171,3 +171,4 @@ INSTANTIATE_TEST_CASE_P(MeaningfulTestParameters,
TEST
(
DummyTest
,
CombineIsNotSupportedOnThisPlatform
)
{}
#endif // GTEST_HAS_COMBINE
}
// namespace
googletest/samples/sample9_unittest.cc
View file @
0c3c8111
...
...
@@ -44,9 +44,7 @@ using ::testing::TestEventListeners;
using
::
testing
::
TestInfo
;
using
::
testing
::
TestPartResult
;
using
::
testing
::
UnitTest
;
namespace
{
// Provides alternative output mode which produces minimal amount of
// information about tests.
class
TersePrinter
:
public
EmptyTestEventListener
{
...
...
@@ -102,7 +100,6 @@ TEST(CustomOutputTest, Fails) {
EXPECT_EQ
(
1
,
2
)
<<
"This test fails in order to demonstrate alternative failure messages"
;
}
}
// namespace
int
main
(
int
argc
,
char
**
argv
)
{
...
...
googletest/scripts/upload.py
View file @
0c3c8111
...
...
@@ -732,7 +732,7 @@ class SubversionVCS(VersionControlSystem):
else
:
self
.
rev_start
=
self
.
rev_end
=
None
# Cache output from "svn list -r REVNO dirname".
# Keys: dirname, Values: 2-tuple (ouput for start rev and end rev).
# Keys: dirname, Values: 2-tuple (ou
t
put for start rev and end rev).
self
.
svnls_cache
=
{}
# SVN base URL is required to fetch files deleted in an older revision.
# Result is cached to not guess it over and over again in GetBaseFile().
...
...
googletest/src/gtest-death-test.cc
View file @
0c3c8111
...
...
@@ -883,11 +883,10 @@ class ExecDeathTest : public ForkingDeathTest {
ForkingDeathTest
(
a_statement
,
a_regex
),
file_
(
file
),
line_
(
line
)
{
}
virtual
TestRole
AssumeRole
();
private:
static
::
std
::
vector
<
testing
::
internal
::
string
>
GetArgvsForDeathTestChildProcess
()
{
::
std
::
vector
<
testing
::
internal
::
string
>
args
=
GetInjectableArgvs
();
static
::
std
::
vector
<
std
::
string
>
GetArgvsForDeathTestChildProcess
()
{
::
std
::
vector
<
std
::
string
>
args
=
GetInjectableArgvs
();
# if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
::
std
::
vector
<
testing
::
internal
::
string
>
extra_args
=
::
std
::
vector
<
std
::
string
>
extra_args
=
GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_
();
args
.
insert
(
args
.
end
(),
extra_args
.
begin
(),
extra_args
.
end
());
# endif // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
...
...
@@ -1243,7 +1242,7 @@ int GetStatusFileDescriptor(unsigned int parent_process_id,
reinterpret_cast
<
HANDLE
>
(
write_handle_as_size_t
);
HANDLE
dup_write_handle
;
// The newly initialized handle is accessible only in
in
the parent
// The newly initialized handle is accessible only in the parent
// process. To obtain one accessible within the child, we need to use
// DuplicateHandle.
if
(
!::
DuplicateHandle
(
parent_process_handle
.
Get
(),
write_handle
,
...
...
googletest/src/gtest-internal-inl.h
View file @
0c3c8111
...
...
@@ -426,7 +426,7 @@ class OsStackTraceGetterInterface {
// in the trace.
// skip_count - the number of top frames to be skipped; doesn't count
// against max_depth.
virtual
string
CurrentStackTrace
(
int
max_depth
,
int
skip_count
)
=
0
;
virtual
std
::
string
CurrentStackTrace
(
int
max_depth
,
int
skip_count
)
=
0
;
// UponLeavingGTest() should be called immediately before Google Test calls
// user code. It saves some information about the current stack that
...
...
@@ -446,7 +446,7 @@ class OsStackTraceGetter : public OsStackTraceGetterInterface {
public:
OsStackTraceGetter
()
{}
virtual
string
CurrentStackTrace
(
int
max_depth
,
int
skip_count
);
virtual
std
::
string
CurrentStackTrace
(
int
max_depth
,
int
skip_count
);
virtual
void
UponLeavingGTest
();
private:
...
...
@@ -1040,21 +1040,19 @@ class GTEST_API_ StreamingListener : public EmptyTestEventListener {
virtual
~
AbstractSocketWriter
()
{}
// Sends a string to the socket.
virtual
void
Send
(
const
string
&
message
)
=
0
;
virtual
void
Send
(
const
std
::
string
&
message
)
=
0
;
// Closes the socket.
virtual
void
CloseConnection
()
{}
// Sends a string and a newline to the socket.
void
SendLn
(
const
string
&
message
)
{
Send
(
message
+
"
\n
"
);
}
void
SendLn
(
const
std
::
string
&
message
)
{
Send
(
message
+
"
\n
"
);
}
};
// Concrete class for actually writing strings to a socket.
class
SocketWriter
:
public
AbstractSocketWriter
{
public:
SocketWriter
(
const
string
&
host
,
const
string
&
port
)
SocketWriter
(
const
std
::
string
&
host
,
const
std
::
string
&
port
)
:
sockfd_
(
-
1
),
host_name_
(
host
),
port_num_
(
port
)
{
MakeConnection
();
}
...
...
@@ -1065,7 +1063,7 @@ class GTEST_API_ StreamingListener : public EmptyTestEventListener {
}
// Sends a string to the socket.
virtual
void
Send
(
const
string
&
message
)
{
virtual
void
Send
(
const
std
::
string
&
message
)
{
GTEST_CHECK_
(
sockfd_
!=
-
1
)
<<
"Send() can be called only when there is a connection."
;
...
...
@@ -1091,17 +1089,19 @@ class GTEST_API_ StreamingListener : public EmptyTestEventListener {
}
int
sockfd_
;
// socket file descriptor
const
string
host_name_
;
const
string
port_num_
;
const
std
::
string
host_name_
;
const
std
::
string
port_num_
;
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
SocketWriter
);
};
// class SocketWriter
// Escapes '=', '&', '%', and '\n' characters in str as "%xx".
static
string
UrlEncode
(
const
char
*
str
);
static
std
::
string
UrlEncode
(
const
char
*
str
);
StreamingListener
(
const
string
&
host
,
const
string
&
port
)
:
socket_writer_
(
new
SocketWriter
(
host
,
port
))
{
Start
();
}
StreamingListener
(
const
std
::
string
&
host
,
const
std
::
string
&
port
)
:
socket_writer_
(
new
SocketWriter
(
host
,
port
))
{
Start
();
}
explicit
StreamingListener
(
AbstractSocketWriter
*
socket_writer
)
:
socket_writer_
(
socket_writer
)
{
Start
();
}
...
...
@@ -1162,13 +1162,13 @@ class GTEST_API_ StreamingListener : public EmptyTestEventListener {
private:
// Sends the given message and a newline to the socket.
void
SendLn
(
const
string
&
message
)
{
socket_writer_
->
SendLn
(
message
);
}
void
SendLn
(
const
std
::
string
&
message
)
{
socket_writer_
->
SendLn
(
message
);
}
// Called at the start of streaming to notify the receiver what
// protocol we are using.
void
Start
()
{
SendLn
(
"gtest_streaming_protocol_version=1.0"
);
}
string
FormatBool
(
bool
value
)
{
return
value
?
"1"
:
"0"
;
}
std
::
string
FormatBool
(
bool
value
)
{
return
value
?
"1"
:
"0"
;
}
const
scoped_ptr
<
AbstractSocketWriter
>
socket_writer_
;
...
...
googletest/src/gtest-port.cc
View file @
0c3c8111
...
...
@@ -93,7 +93,7 @@ const int kStdErrFileno = STDERR_FILENO;
namespace
{
template
<
typename
T
>
T
ReadProcFileField
(
const
string
&
filename
,
int
field
)
{
T
ReadProcFileField
(
const
std
::
string
&
filename
,
int
field
)
{
std
::
string
dummy
;
std
::
ifstream
file
(
filename
.
c_str
());
while
(
field
--
>
0
)
{
...
...
@@ -107,7 +107,7 @@ T ReadProcFileField(const string& filename, int field) {
// Returns the number of active threads, or 0 when there is an error.
size_t
GetThreadCount
()
{
const
string
filename
=
const
std
::
string
filename
=
(
Message
()
<<
"/proc/"
<<
getpid
()
<<
"/stat"
).
GetString
();
return
ReadProcFileField
<
int
>
(
filename
,
19
);
}
...
...
@@ -496,7 +496,7 @@ class ThreadLocalRegistryImpl {
FALSE
,
thread_id
);
GTEST_CHECK_
(
thread
!=
NULL
);
// We need to
to
pass a valid thread ID pointer into CreateThread for it
// We need to pass a valid thread ID pointer into CreateThread for it
// to work correctly under Win98.
DWORD
watcher_thread_id
;
HANDLE
watcher_thread
=
::
CreateThread
(
...
...
@@ -1055,24 +1055,6 @@ std::string GetCapturedStderr() {
#endif // GTEST_HAS_STREAM_REDIRECTION
std
::
string
TempDir
()
{
#if GTEST_OS_WINDOWS_MOBILE
return
"
\\
temp
\\
"
;
#elif GTEST_OS_WINDOWS
const
char
*
temp_dir
=
posix
::
GetEnv
(
"TEMP"
);
if
(
temp_dir
==
NULL
||
temp_dir
[
0
]
==
'\0'
)
return
"
\\
temp
\\
"
;
else
if
(
temp_dir
[
strlen
(
temp_dir
)
-
1
]
==
'\\'
)
return
temp_dir
;
else
return
std
::
string
(
temp_dir
)
+
"
\\
"
;
#elif GTEST_OS_LINUX_ANDROID
return
"/sdcard/"
;
#else
return
"/tmp/"
;
#endif // GTEST_OS_WINDOWS_MOBILE
}
size_t
GetFileSize
(
FILE
*
file
)
{
fseek
(
file
,
0
,
SEEK_END
);
return
static_cast
<
size_t
>
(
ftell
(
file
));
...
...
googletest/src/gtest.cc
View file @
0c3c8111
...
...
@@ -310,7 +310,8 @@ namespace internal {
// than kMaxRange.
UInt32
Random
::
Generate
(
UInt32
range
)
{
// These constants are the same as are used in glibc's rand(3).
state_
=
(
1103515245U
*
state_
+
12345U
)
%
kMaxRange
;
// Use wider types than necessary to prevent unsigned overflow diagnostics.
state_
=
static_cast
<
UInt32
>
(
1103515245ULL
*
state_
+
12345U
)
%
kMaxRange
;
GTEST_CHECK_
(
range
>
0
)
<<
"Cannot generate a number in the range [0, 0)."
;
...
...
@@ -633,7 +634,7 @@ AssertionResult HasOneFailure(const char* /* results_expr */,
const
char
*
/* substr_expr */
,
const
TestPartResultArray
&
results
,
TestPartResult
::
Type
type
,
const
string
&
substr
)
{
const
std
::
string
&
substr
)
{
const
std
::
string
expected
(
type
==
TestPartResult
::
kFatalFailure
?
"1 fatal failure"
:
"1 non-fatal failure"
);
...
...
@@ -667,13 +668,10 @@ AssertionResult HasOneFailure(const char* /* results_expr */,
// The constructor of SingleFailureChecker remembers where to look up
// test part results, what type of failure we expect, and what
// substring the failure message should contain.
SingleFailureChecker
::
SingleFailureChecker
(
const
TestPartResultArray
*
results
,
SingleFailureChecker
::
SingleFailureChecker
(
const
TestPartResultArray
*
results
,
TestPartResult
::
Type
type
,
const
string
&
substr
)
:
results_
(
results
),
type_
(
type
),
substr_
(
substr
)
{}
const
std
::
string
&
substr
)
:
results_
(
results
),
type_
(
type
),
substr_
(
substr
)
{}
// The destructor of SingleFailureChecker verifies that the given
// TestPartResultArray contains exactly one failure that has the given
...
...
@@ -1171,7 +1169,7 @@ class Hunk {
// Print a unified diff header for one hunk.
// The format is
// "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
// where the left/right parts are om
m
itted if unnecessary.
// where the left/right parts are omitted if unnecessary.
void
PrintHeader
(
std
::
ostream
*
ss
)
const
{
*
ss
<<
"@@ "
;
if
(
removes_
)
{
...
...
@@ -1784,7 +1782,7 @@ std::string CodePointToUtf8(UInt32 code_point) {
return
str
;
}
// The following two functions only make sense if the
the
system
// The following two functions only make sense if the system
// uses UTF-16 for wide string encoding. All supported systems
// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16.
...
...
@@ -2897,6 +2895,33 @@ WORD GetColorAttribute(GTestColor color) {
}
}
int
GetBitOffset
(
WORD
color_mask
)
{
if
(
color_mask
==
0
)
return
0
;
int
bitOffset
=
0
;
while
((
color_mask
&
1
)
==
0
)
{
color_mask
>>=
1
;
++
bitOffset
;
}
return
bitOffset
;
}
WORD
GetNewColor
(
GTestColor
color
,
WORD
old_color_attrs
)
{
// Let's reuse the BG
static
const
WORD
background_mask
=
BACKGROUND_BLUE
|
BACKGROUND_GREEN
|
BACKGROUND_RED
|
BACKGROUND_INTENSITY
;
static
const
WORD
foreground_mask
=
FOREGROUND_BLUE
|
FOREGROUND_GREEN
|
FOREGROUND_RED
|
FOREGROUND_INTENSITY
;
const
WORD
existing_bg
=
old_color_attrs
&
background_mask
;
WORD
new_color
=
GetColorAttribute
(
color
)
|
existing_bg
|
FOREGROUND_INTENSITY
;
static
const
int
bg_bitOffset
=
GetBitOffset
(
background_mask
);
static
const
int
fg_bitOffset
=
GetBitOffset
(
foreground_mask
);
if
(((
new_color
&
background_mask
)
>>
bg_bitOffset
)
==
((
new_color
&
foreground_mask
)
>>
fg_bitOffset
))
{
new_color
^=
FOREGROUND_INTENSITY
;
//invert intensity
}
return
new_color
;
}
#else
// Returns the ANSI color code for the given color. COLOR_DEFAULT is
...
...
@@ -2953,6 +2978,7 @@ bool ShouldUseColor(bool stdout_is_tty) {
// cannot simply emit special characters and have the terminal change colors.
// This routine must actually emit the characters rather than return a string
// that would be colored when printed, as can be done on Linux.
GTEST_ATTRIBUTE_PRINTF_
(
2
,
3
)
void
ColoredPrintf
(
GTestColor
color
,
const
char
*
fmt
,
...)
{
va_list
args
;
va_start
(
args
,
fmt
);
...
...
@@ -2981,13 +3007,14 @@ void ColoredPrintf(GTestColor color, const char* fmt, ...) {
CONSOLE_SCREEN_BUFFER_INFO
buffer_info
;
GetConsoleScreenBufferInfo
(
stdout_handle
,
&
buffer_info
);
const
WORD
old_color_attrs
=
buffer_info
.
wAttributes
;
const
WORD
new_color
=
GetNewColor
(
color
,
old_color_attrs
);
// We need to flush the stream buffers into the console before each
// SetConsoleTextAttribute call lest it affect the text that is already
// printed but has not yet reached the console.
fflush
(
stdout
);
SetConsoleTextAttribute
(
stdout_handle
,
GetColorAttribute
(
color
)
|
FOREGROUND_INTENSITY
);
SetConsoleTextAttribute
(
stdout_handle
,
new_color
);
vprintf
(
fmt
,
args
);
fflush
(
stdout
);
...
...
@@ -3655,13 +3682,14 @@ void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
if
(
++
failures
==
1
)
{
*
stream
<<
">
\n
"
;
}
const
string
location
=
internal
::
FormatCompilerIndependentFileLocation
(
part
.
file_name
(),
part
.
line_number
());
const
string
summary
=
location
+
"
\n
"
+
part
.
summary
();
const
std
::
string
location
=
internal
::
FormatCompilerIndependentFileLocation
(
part
.
file_name
(),
part
.
line_number
());
const
std
::
string
summary
=
location
+
"
\n
"
+
part
.
summary
();
*
stream
<<
" <failure message=
\"
"
<<
EscapeXmlAttribute
(
summary
.
c_str
())
<<
"
\"
type=
\"\"
>"
;
const
string
detail
=
location
+
"
\n
"
+
part
.
message
();
const
std
::
string
detail
=
location
+
"
\n
"
+
part
.
message
();
OutputXmlCDataSection
(
stream
,
RemoveInvalidXmlCharacters
(
detail
).
c_str
());
*
stream
<<
"</failure>
\n
"
;
}
...
...
@@ -3760,8 +3788,8 @@ std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
// example, replaces "=" with "%3D". This algorithm is O(strlen(str))
// in both time and space -- important as the input str may contain an
// arbitrarily long test failure message and stack trace.
string
StreamingListener
::
UrlEncode
(
const
char
*
str
)
{
string
result
;
std
::
string
StreamingListener
::
UrlEncode
(
const
char
*
str
)
{
std
::
string
result
;
result
.
reserve
(
strlen
(
str
)
+
1
);
for
(
char
ch
=
*
str
;
ch
!=
'\0'
;
ch
=
*++
str
)
{
switch
(
ch
)
{
...
...
@@ -3849,7 +3877,7 @@ ScopedTrace::~ScopedTrace()
const
char
*
const
OsStackTraceGetterInterface
::
kElidedFramesMarker
=
"... "
GTEST_NAME_
" internal frames ..."
;
string
OsStackTraceGetter
::
CurrentStackTrace
(
int
/*max_depth*/
,
std
::
string
OsStackTraceGetter
::
CurrentStackTrace
(
int
/*max_depth*/
,
int
/*skip_count*/
)
{
return
""
;
}
...
...
@@ -4731,7 +4759,7 @@ bool ShouldShard(const char* total_shards_env,
<<
"Invalid environment variables: you have "
<<
kTestShardIndex
<<
" = "
<<
shard_index
<<
", but have left "
<<
kTestTotalShards
<<
" unset.
\n
"
;
ColoredPrintf
(
COLOR_RED
,
msg
.
GetString
().
c_str
());
ColoredPrintf
(
COLOR_RED
,
"%s"
,
msg
.
GetString
().
c_str
());
fflush
(
stdout
);
exit
(
EXIT_FAILURE
);
}
else
if
(
total_shards
!=
-
1
&&
shard_index
==
-
1
)
{
...
...
@@ -4739,7 +4767,7 @@ bool ShouldShard(const char* total_shards_env,
<<
"Invalid environment variables: you have "
<<
kTestTotalShards
<<
" = "
<<
total_shards
<<
", but have left "
<<
kTestShardIndex
<<
" unset.
\n
"
;
ColoredPrintf
(
COLOR_RED
,
msg
.
GetString
().
c_str
());
ColoredPrintf
(
COLOR_RED
,
"%s"
,
msg
.
GetString
().
c_str
());
fflush
(
stdout
);
exit
(
EXIT_FAILURE
);
}
else
if
(
shard_index
<
0
||
shard_index
>=
total_shards
)
{
...
...
@@ -4748,7 +4776,7 @@ bool ShouldShard(const char* total_shards_env,
<<
kTestShardIndex
<<
" < "
<<
kTestTotalShards
<<
", but you have "
<<
kTestShardIndex
<<
"="
<<
shard_index
<<
", "
<<
kTestTotalShards
<<
"="
<<
total_shards
<<
".
\n
"
;
ColoredPrintf
(
COLOR_RED
,
msg
.
GetString
().
c_str
());
ColoredPrintf
(
COLOR_RED
,
"%s"
,
msg
.
GetString
().
c_str
());
fflush
(
stdout
);
exit
(
EXIT_FAILURE
);
}
...
...
@@ -5186,12 +5214,12 @@ static const char kColorEncodedHelpMessage[] =
"Test Output:
\n
"
" @G--"
GTEST_FLAG_PREFIX_
"color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D
\n
"
" Enable/disable colored output. The default is @Gauto@D.
\n
"
"
-
@G-"
GTEST_FLAG_PREFIX_
"print_time=0@D
\n
"
" @G-
-
"
GTEST_FLAG_PREFIX_
"print_time=0@D
\n
"
" Don't print the elapsed time of each test.
\n
"
" @G--"
GTEST_FLAG_PREFIX_
"output=xml@Y[@G:@YDIRECTORY_PATH@G"
GTEST_PATH_SEP_
"@Y|@G:@YFILE_PATH]@D
\n
"
" Generate an XML report in the given directory or with the given file
\n
"
" name. @YFILE_PATH@D defaults to @Gtest_detail
s
.xml@D.
\n
"
" name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.
\n
"
#if GTEST_CAN_STREAM_RESULTS_
" @G--"
GTEST_FLAG_PREFIX_
"stream_result_to=@YHOST@G:@YPORT@D
\n
"
" Stream test results to the given server.
\n
"
...
...
@@ -5388,4 +5416,25 @@ void InitGoogleTest(int* argc, wchar_t** argv) {
#endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
}
std
::
string
TempDir
()
{
#if defined(GTEST_CUSTOM_TEMPDIR_FUNCTION_)
return
GTEST_CUSTOM_TEMPDIR_FUNCTION_
();
#endif
#if GTEST_OS_WINDOWS_MOBILE
return
"
\\
temp
\\
"
;
#elif GTEST_OS_WINDOWS
const
char
*
temp_dir
=
internal
::
posix
::
GetEnv
(
"TEMP"
);
if
(
temp_dir
==
NULL
||
temp_dir
[
0
]
==
'\0'
)
return
"
\\
temp
\\
"
;
else
if
(
temp_dir
[
strlen
(
temp_dir
)
-
1
]
==
'\\'
)
return
temp_dir
;
else
return
std
::
string
(
temp_dir
)
+
"
\\
"
;
#elif GTEST_OS_LINUX_ANDROID
return
"/sdcard/"
;
#else
return
"/tmp/"
;
#endif // GTEST_OS_WINDOWS_MOBILE
}
}
// namespace testing
Prev
1
2
3
4
5
6
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