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
ffeb11d1
Commit
ffeb11d1
authored
Feb 22, 2011
by
zhanyong.wan
Browse files
Indents preprocessor directives.
parent
0980b4bd
Changes
35
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
364 additions
and
327 deletions
+364
-327
include/gtest/gtest-death-test.h
include/gtest/gtest-death-test.h
+21
-21
include/gtest/gtest-message.h
include/gtest/gtest-message.h
+1
-0
include/gtest/gtest-param-test.h
include/gtest/gtest-param-test.h
+5
-5
include/gtest/gtest-param-test.h.pump
include/gtest/gtest-param-test.h.pump
+5
-5
include/gtest/gtest-printers.h
include/gtest/gtest-printers.h
+6
-6
include/gtest/gtest-typed-test.h
include/gtest/gtest-typed-test.h
+10
-10
include/gtest/gtest.h
include/gtest/gtest.h
+17
-16
include/gtest/gtest_pred_impl.h
include/gtest/gtest_pred_impl.h
+1
-1
include/gtest/internal/gtest-death-test-internal.h
include/gtest/internal/gtest-death-test-internal.h
+9
-7
include/gtest/internal/gtest-internal.h
include/gtest/internal/gtest-internal.h
+10
-9
include/gtest/internal/gtest-param-util-generated.h
include/gtest/internal/gtest-param-util-generated.h
+2
-2
include/gtest/internal/gtest-param-util-generated.h.pump
include/gtest/internal/gtest-param-util-generated.h.pump
+2
-2
include/gtest/internal/gtest-port.h
include/gtest/internal/gtest-port.h
+167
-157
include/gtest/internal/gtest-string.h
include/gtest/internal/gtest-string.h
+1
-1
include/gtest/internal/gtest-tuple.h
include/gtest/internal/gtest-tuple.h
+2
-2
include/gtest/internal/gtest-tuple.h.pump
include/gtest/internal/gtest-tuple.h.pump
+2
-2
include/gtest/internal/gtest-type-util.h
include/gtest/internal/gtest-type-util.h
+13
-11
include/gtest/internal/gtest-type-util.h.pump
include/gtest/internal/gtest-type-util.h.pump
+13
-11
src/gtest-death-test.cc
src/gtest-death-test.cc
+64
-46
src/gtest-filepath.cc
src/gtest-filepath.cc
+13
-13
No files found.
include/gtest/gtest-death-test.h
View file @
ffeb11d1
...
...
@@ -154,24 +154,24 @@ GTEST_DECLARE_string_(death_test_style);
// Asserts that a given statement causes the program to exit, with an
// integer exit status that satisfies predicate, and emitting error output
// that matches regex.
#define ASSERT_EXIT(statement, predicate, regex) \
GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
#
define ASSERT_EXIT(statement, predicate, regex) \
GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
// Like ASSERT_EXIT, but continues on to successive tests in the
// test case, if any:
#define EXPECT_EXIT(statement, predicate, regex) \
GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
#
define EXPECT_EXIT(statement, predicate, regex) \
GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
// Asserts that a given statement causes the program to exit, either by
// explicitly exiting with a nonzero exit code or being killed by a
// signal, and emitting error output that matches regex.
#define ASSERT_DEATH(statement, regex) \
ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
#
define ASSERT_DEATH(statement, regex) \
ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
// Like ASSERT_DEATH, but continues on to successive tests in the
// test case, if any:
#define EXPECT_DEATH(statement, regex) \
EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
#
define EXPECT_DEATH(statement, regex) \
EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
...
...
@@ -187,7 +187,7 @@ class GTEST_API_ ExitedWithCode {
const
int
exit_code_
;
};
#if !GTEST_OS_WINDOWS
#
if !GTEST_OS_WINDOWS
// Tests that an exit code describes an exit due to termination by a
// given signal.
class
GTEST_API_
KilledBySignal
{
...
...
@@ -197,7 +197,7 @@ class GTEST_API_ KilledBySignal {
private:
const
int
signum_
;
};
#endif // !GTEST_OS_WINDOWS
#
endif // !GTEST_OS_WINDOWS
// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
// The death testing framework causes this to have interesting semantics,
...
...
@@ -242,23 +242,23 @@ class GTEST_API_ KilledBySignal {
// EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
// }, "death");
//
#ifdef NDEBUG
#
ifdef NDEBUG
#define EXPECT_DEBUG_DEATH(statement, regex) \
#
define EXPECT_DEBUG_DEATH(statement, regex) \
do { statement; } while (::testing::internal::AlwaysFalse())
#define ASSERT_DEBUG_DEATH(statement, regex) \
#
define ASSERT_DEBUG_DEATH(statement, regex) \
do { statement; } while (::testing::internal::AlwaysFalse())
#else
#
else
#define EXPECT_DEBUG_DEATH(statement, regex) \
#
define EXPECT_DEBUG_DEATH(statement, regex) \
EXPECT_DEATH(statement, regex)
#define ASSERT_DEBUG_DEATH(statement, regex) \
#
define ASSERT_DEBUG_DEATH(statement, regex) \
ASSERT_DEATH(statement, regex)
#endif // NDEBUG for EXPECT_DEBUG_DEATH
#
endif // NDEBUG for EXPECT_DEBUG_DEATH
#endif // GTEST_HAS_DEATH_TEST
// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
...
...
@@ -267,14 +267,14 @@ class GTEST_API_ KilledBySignal {
// useful when you are combining death test assertions with normal test
// assertions in one test.
#if GTEST_HAS_DEATH_TEST
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
#
define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
EXPECT_DEATH(statement, regex)
#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
#
define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
ASSERT_DEATH(statement, regex)
#else
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
#
define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, )
#define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
#
define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return)
#endif
...
...
include/gtest/gtest-message.h
View file @
ffeb11d1
...
...
@@ -192,6 +192,7 @@ class GTEST_API_ Message {
}
private:
#if GTEST_OS_SYMBIAN
// These are needed as the Nokia Symbian Compiler cannot decide between
// const T& and const T* in a function template. The Nokia compiler _can_
...
...
include/gtest/gtest-param-test.h
View file @
ffeb11d1
...
...
@@ -182,7 +182,7 @@ TEST_P(DerivedTest, DoesBlah) {
#include "gtest/internal/gtest-port.h"
#if !GTEST_OS_SYMBIAN
#include <utility>
#
include <utility>
#endif
// scripts/fuse_gtest.py depends on gtest's own header being #included
...
...
@@ -1222,7 +1222,7 @@ inline internal::ParamGenerator<bool> Bool() {
return
Values
(
false
,
true
);
}
#if GTEST_HAS_COMBINE
#
if GTEST_HAS_COMBINE
// Combine() allows the user to combine two or more sequences to produce
// values of a Cartesian product of those sequences' elements.
//
...
...
@@ -1374,11 +1374,11 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
Generator10
>
(
g1
,
g2
,
g3
,
g4
,
g5
,
g6
,
g7
,
g8
,
g9
,
g10
);
}
#endif // GTEST_HAS_COMBINE
#
endif // GTEST_HAS_COMBINE
#define TEST_P(test_case_name, test_name) \
#
define TEST_P(test_case_name, test_name) \
class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
: public test_case_name { \
public: \
...
...
@@ -1404,7 +1404,7 @@ internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
#define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
#
define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
::testing::internal::ParamGenerator<test_case_name::ParamType> \
gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
int gtest_##prefix##test_case_name##_dummy_ = \
...
...
include/gtest/gtest-param-test.h.pump
View file @
ffeb11d1
...
...
@@ -181,7 +181,7 @@ TEST_P(DerivedTest, DoesBlah) {
#include "gtest/internal/gtest-port.h"
#if !GTEST_OS_SYMBIAN
#include <utility>
#
include <utility>
#endif
// scripts/fuse_gtest.py depends on gtest's own header being #included
...
...
@@ -379,7 +379,7 @@ inline internal::ParamGenerator<bool> Bool() {
return
Values
(
false
,
true
);
}
#if GTEST_HAS_COMBINE
#
if GTEST_HAS_COMBINE
// Combine() allows the user to combine two or more sequences to produce
// values of a Cartesian product of those sequences' elements.
//
...
...
@@ -440,11 +440,11 @@ internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
}
]]
#endif // GTEST_HAS_COMBINE
#
endif // GTEST_HAS_COMBINE
#define TEST_P(test_case_name, test_name) \
#
define TEST_P(test_case_name, test_name) \
class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \
: public test_case_name { \
public: \
...
...
@@ -470,7 +470,7 @@ internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine(
GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \
void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody()
#define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
#
define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \
::testing::internal::ParamGenerator<test_case_name::ParamType> \
gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \
int gtest_##prefix##test_case_name##_dummy_ = \
...
...
include/gtest/gtest-printers.h
View file @
ffeb11d1
...
...
@@ -578,8 +578,8 @@ class UniversalPrinter {
// MSVC warns about adding const to a function type, so we want to
// disable the warning.
#ifdef _MSC_VER
#pragma warning(push) // Saves the current warning state.
#pragma warning(disable:4180) // Temporarily disables warning 4180.
#
pragma warning(push) // Saves the current warning state.
#
pragma warning(disable:4180) // Temporarily disables warning 4180.
#endif // _MSC_VER
// Note: we deliberately don't call this PrintTo(), as that name
...
...
@@ -598,7 +598,7 @@ class UniversalPrinter {
}
#ifdef _MSC_VER
#pragma warning(pop) // Restores the warning state.
#
pragma warning(pop) // Restores the warning state.
#endif // _MSC_VER
};
...
...
@@ -649,8 +649,8 @@ class UniversalPrinter<T&> {
// MSVC warns about adding const to a function type, so we want to
// disable the warning.
#ifdef _MSC_VER
#pragma warning(push) // Saves the current warning state.
#pragma warning(disable:4180) // Temporarily disables warning 4180.
#
pragma warning(push) // Saves the current warning state.
#
pragma warning(disable:4180) // Temporarily disables warning 4180.
#endif // _MSC_VER
static
void
Print
(
const
T
&
value
,
::
std
::
ostream
*
os
)
{
...
...
@@ -663,7 +663,7 @@ class UniversalPrinter<T&> {
}
#ifdef _MSC_VER
#pragma warning(pop) // Restores the warning state.
#
pragma warning(pop) // Restores the warning state.
#endif // _MSC_VER
};
...
...
include/gtest/gtest-typed-test.h
View file @
ffeb11d1
...
...
@@ -157,16 +157,16 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
//
// Expands to the name of the typedef for the type parameters of the
// given test case.
#define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
#
define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_
// The 'Types' template argument below must have spaces around it
// since some compilers may choke on '>>' when passing a template
// instance (e.g. Types<int>)
#define TYPED_TEST_CASE(CaseName, Types) \
#
define TYPED_TEST_CASE(CaseName, Types) \
typedef ::testing::internal::TypeList< Types >::type \
GTEST_TYPE_PARAMS_(CaseName)
#define TYPED_TEST(CaseName, TestName) \
#
define TYPED_TEST(CaseName, TestName) \
template <typename gtest_TypeParam_> \
class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
: public CaseName<gtest_TypeParam_> { \
...
...
@@ -196,31 +196,31 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
// Expands to the namespace name that the type-parameterized tests for
// the given type-parameterized test case are defined in. The exact
// name of the namespace is subject to change without notice.
#define GTEST_CASE_NAMESPACE_(TestCaseName) \
#
define GTEST_CASE_NAMESPACE_(TestCaseName) \
gtest_case_##TestCaseName##_
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
//
// Expands to the name of the variable used to remember the names of
// the defined tests in the given test case.
#define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
#
define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \
gtest_typed_test_case_p_state_##TestCaseName##_
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
//
// Expands to the name of the variable used to remember the names of
// the registered tests in the given test case.
#define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
#
define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \
gtest_registered_test_names_##TestCaseName##_
// The variables defined in the type-parameterized test macros are
// static as typically these macros are used in a .h file that can be
// #included in multiple translation units linked together.
#define TYPED_TEST_CASE_P(CaseName) \
#
define TYPED_TEST_CASE_P(CaseName) \
static ::testing::internal::TypedTestCasePState \
GTEST_TYPED_TEST_CASE_P_STATE_(CaseName)
#define TYPED_TEST_P(CaseName, TestName) \
#
define TYPED_TEST_P(CaseName, TestName) \
namespace GTEST_CASE_NAMESPACE_(CaseName) { \
template <typename gtest_TypeParam_> \
class TestName : public CaseName<gtest_TypeParam_> { \
...
...
@@ -236,7 +236,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
template <typename gtest_TypeParam_> \
void GTEST_CASE_NAMESPACE_(CaseName)::TestName<gtest_TypeParam_>::TestBody()
#define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
#
define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \
namespace GTEST_CASE_NAMESPACE_(CaseName) { \
typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
} \
...
...
@@ -247,7 +247,7 @@ INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes);
// The 'Types' template argument below must have spaces around it
// since some compilers may choke on '>>' when passing a template
// instance (e.g. Types<int>)
#define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
#
define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \
bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \
::testing::internal::TypeParameterizedTestCase<CaseName, \
GTEST_CASE_NAMESPACE_(CaseName)::gtest_AllTests_, \
...
...
include/gtest/gtest.h
View file @
ffeb11d1
...
...
@@ -672,6 +672,7 @@ class GTEST_API_ TestInfo {
const
TestResult
*
result
()
const
{
return
&
result_
;
}
private:
#if GTEST_HAS_DEATH_TEST
friend
class
internal
::
DefaultDeathTestFactory
;
#endif // GTEST_HAS_DEATH_TEST
...
...
@@ -1305,8 +1306,8 @@ AssertionResult CmpHelperEQ(const char* expected_expression,
const
T1
&
expected
,
const
T2
&
actual
)
{
#ifdef _MSC_VER
#pragma warning(push) // Saves the current warning state.
#pragma warning(disable:4389) // Temporarily disables warning on
#
pragma warning(push) // Saves the current warning state.
#
pragma warning(disable:4389) // Temporarily disables warning on
// signed/unsigned mismatch.
#endif
...
...
@@ -1315,7 +1316,7 @@ AssertionResult CmpHelperEQ(const char* expected_expression,
}
#ifdef _MSC_VER
#pragma warning(pop) // Restores the warning state.
#
pragma warning(pop) // Restores the warning state.
#endif
return
EqFailure
(
expected_expression
,
...
...
@@ -1740,7 +1741,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// Define this macro to 1 to omit the definition of FAIL(), which is a
// generic name and clashes with some other libraries.
#if !GTEST_DONT_DEFINE_FAIL
#define FAIL() GTEST_FAIL()
#
define FAIL() GTEST_FAIL()
#endif
// Generates a success with a generic message.
...
...
@@ -1749,7 +1750,7 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// Define this macro to 1 to omit the definition of SUCCEED(), which
// is a generic name and clashes with some other libraries.
#if !GTEST_DONT_DEFINE_SUCCEED
#define SUCCEED() GTEST_SUCCEED()
#
define SUCCEED() GTEST_SUCCEED()
#endif
// Macros for testing exceptions.
...
...
@@ -1874,27 +1875,27 @@ class TestWithParam : public Test, public WithParamInterface<T> {
// ASSERT_XY(), which clashes with some users' own code.
#if !GTEST_DONT_DEFINE_ASSERT_EQ
#define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
#
define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
#endif
#if !GTEST_DONT_DEFINE_ASSERT_NE
#define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
#
define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
#endif
#if !GTEST_DONT_DEFINE_ASSERT_LE
#define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
#
define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
#endif
#if !GTEST_DONT_DEFINE_ASSERT_LT
#define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
#
define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
#endif
#if !GTEST_DONT_DEFINE_ASSERT_GE
#define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
#
define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
#endif
#if !GTEST_DONT_DEFINE_ASSERT_GT
#define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
#
define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
#endif
// C String Comparisons. All tests treat NULL and any non-NULL string
...
...
@@ -1993,16 +1994,16 @@ GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
// expected result and the actual result with both a human-readable
// string representation of the error, if available, as well as the
// hex result code.
#define EXPECT_HRESULT_SUCCEEDED(expr) \
#
define EXPECT_HRESULT_SUCCEEDED(expr) \
EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
#define ASSERT_HRESULT_SUCCEEDED(expr) \
#
define ASSERT_HRESULT_SUCCEEDED(expr) \
ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
#define EXPECT_HRESULT_FAILED(expr) \
#
define EXPECT_HRESULT_FAILED(expr) \
EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
#define ASSERT_HRESULT_FAILED(expr) \
#
define ASSERT_HRESULT_FAILED(expr) \
ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
#endif // GTEST_OS_WINDOWS
...
...
@@ -2105,7 +2106,7 @@ bool StaticAssertTypeEq() {
// Define this macro to 1 to omit the definition of TEST(), which
// is a generic name and clashes with some other libraries.
#if !GTEST_DONT_DEFINE_TEST
#define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
#
define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name)
#endif
// Defines a test that uses a test fixture.
...
...
include/gtest/gtest_pred_impl.h
View file @
ffeb11d1
...
...
@@ -37,7 +37,7 @@
// Makes sure this header is not included before gtest.h.
#ifndef GTEST_INCLUDE_GTEST_GTEST_H_
#error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
#
error Do not include gtest_pred_impl.h directly. Include gtest.h instead.
#endif // GTEST_INCLUDE_GTEST_GTEST_H_
// This header implements a family of generic predicate assertion
...
...
include/gtest/internal/gtest-death-test-internal.h
View file @
ffeb11d1
...
...
@@ -157,8 +157,8 @@ GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
// Traps C++ exceptions escaping statement and reports them as test
// failures. Note that trapping SEH exceptions is not implemented here.
#if GTEST_HAS_EXCEPTIONS
#define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
#
if GTEST_HAS_EXCEPTIONS
#
define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
try { \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
} catch (const ::std::exception& gtest_exception) { \
...
...
@@ -173,14 +173,16 @@ GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
} catch (...) { \
death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
}
#else
#define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
# else
# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
#endif
# endif
// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
// ASSERT_EXIT*, and EXPECT_EXIT*.
#define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
#
define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (::testing::internal::AlwaysTrue()) { \
const ::testing::internal::RE& gtest_regex = (regex); \
...
...
@@ -285,7 +287,7 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
// statement unconditionally returns or throws. The Message constructor at
// the end allows the syntax of streaming additional messages into the
// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
#define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
#
define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (::testing::internal::AlwaysTrue()) { \
GTEST_LOG_(WARNING) \
...
...
include/gtest/internal/gtest-internal.h
View file @
ffeb11d1
...
...
@@ -40,10 +40,10 @@
#include "gtest/internal/gtest-port.h"
#if GTEST_OS_LINUX
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#
include <stdlib.h>
#
include <sys/types.h>
#
include <sys/wait.h>
#
include <unistd.h>
#endif // GTEST_OS_LINUX
#include <ctype.h>
...
...
@@ -156,9 +156,9 @@ char (&IsNullLiteralHelper(...))[2]; // NOLINT
#ifdef GTEST_ELLIPSIS_NEEDS_POD_
// We lose support for NULL detection where the compiler doesn't like
// passing non-POD classes through ellipsis (...).
#define GTEST_IS_NULL_LITERAL_(x) false
#
define GTEST_IS_NULL_LITERAL_(x) false
#else
#define GTEST_IS_NULL_LITERAL_(x) \
#
define GTEST_IS_NULL_LITERAL_(x) \
(sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1)
#endif // GTEST_ELLIPSIS_NEEDS_POD_
...
...
@@ -867,11 +867,12 @@ class ImplicitlyConvertible {
// possible loss of data, so we need to temporarily disable the
// warning.
#ifdef _MSC_VER
#pragma warning(push) // Saves the current warning state.
#pragma warning(disable:4244) // Temporarily disables warning 4244.
# pragma warning(push) // Saves the current warning state.
# pragma warning(disable:4244) // Temporarily disables warning 4244.
static
const
bool
value
=
sizeof
(
Helper
(
ImplicitlyConvertible
::
MakeFrom
()))
==
1
;
#pragma warning(pop) // Restores the warning state.
#
pragma warning(pop) // Restores the warning state.
#else
static
const
bool
value
=
sizeof
(
Helper
(
ImplicitlyConvertible
::
MakeFrom
()))
==
1
;
...
...
include/gtest/internal/gtest-param-util-generated.h
View file @
ffeb11d1
...
...
@@ -2826,7 +2826,7 @@ class ValueArray50 {
const
T50
v50_
;
};
#if GTEST_HAS_COMBINE
#
if GTEST_HAS_COMBINE
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
//
// Generates values from the Cartesian product of values produced
...
...
@@ -4810,7 +4810,7 @@ CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
const
Generator10
g10_
;
};
// class CartesianProductHolder10
#endif // GTEST_HAS_COMBINE
#
endif // GTEST_HAS_COMBINE
}
// namespace internal
}
// namespace testing
...
...
include/gtest/internal/gtest-param-util-generated.h.pump
View file @
ffeb11d1
...
...
@@ -115,7 +115,7 @@ $for j [[
]]
#if GTEST_HAS_COMBINE
#
if GTEST_HAS_COMBINE
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
//
// Generates values from the Cartesian product of values produced
...
...
@@ -291,7 +291,7 @@ $for j [[
]]
#endif // GTEST_HAS_COMBINE
#
endif // GTEST_HAS_COMBINE
}
// namespace internal
}
// namespace testing
...
...
include/gtest/internal/gtest-port.h
View file @
ffeb11d1
...
...
@@ -185,8 +185,8 @@
#include <stdio.h>
#include <string.h>
#ifndef _WIN32_WCE
#include <sys/types.h>
#include <sys/stat.h>
#
include <sys/types.h>
#
include <sys/stat.h>
#endif // !_WIN32_WCE
#include <iostream> // NOLINT
...
...
@@ -203,36 +203,36 @@
// Determines the version of gcc that is used to compile this.
#ifdef __GNUC__
// 40302 means version 4.3.2.
#define GTEST_GCC_VER_ \
#
define GTEST_GCC_VER_ \
(__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
#endif // __GNUC__
// Determines the platform on which Google Test is compiled.
#ifdef __CYGWIN__
#define GTEST_OS_CYGWIN 1
#
define GTEST_OS_CYGWIN 1
#elif defined __SYMBIAN32__
#define GTEST_OS_SYMBIAN 1
#
define GTEST_OS_SYMBIAN 1
#elif defined _WIN32
#define GTEST_OS_WINDOWS 1
#ifdef _WIN32_WCE
#define GTEST_OS_WINDOWS_MOBILE 1
#elif defined(__MINGW__) || defined(__MINGW32__)
#define GTEST_OS_WINDOWS_MINGW 1
#else
#define GTEST_OS_WINDOWS_DESKTOP 1
#endif // _WIN32_WCE
#
define GTEST_OS_WINDOWS 1
#
ifdef _WIN32_WCE
#
define GTEST_OS_WINDOWS_MOBILE 1
#
elif defined(__MINGW__) || defined(__MINGW32__)
#
define GTEST_OS_WINDOWS_MINGW 1
#
else
#
define GTEST_OS_WINDOWS_DESKTOP 1
#
endif // _WIN32_WCE
#elif defined __APPLE__
#define GTEST_OS_MAC 1
#
define GTEST_OS_MAC 1
#elif defined __linux__
#define GTEST_OS_LINUX 1
#
define GTEST_OS_LINUX 1
#elif defined __MVS__
#define GTEST_OS_ZOS 1
#
define GTEST_OS_ZOS 1
#elif defined(__sun) && defined(__SVR4)
#define GTEST_OS_SOLARIS 1
#
define GTEST_OS_SOLARIS 1
#elif defined(_AIX)
#define GTEST_OS_AIX 1
#
define GTEST_OS_AIX 1
#elif defined __native_client__
#define GTEST_OS_NACL 1
#
define GTEST_OS_NACL 1
#endif // __CYGWIN__
// Brings in definitions for functions used in the testing::internal::posix
...
...
@@ -242,21 +242,21 @@
// This assumes that non-Windows OSes provide unistd.h. For OSes where this
// is not the case, we need to include headers that provide the functions
// mentioned above.
#include <unistd.h>
#if !GTEST_OS_NACL
#
include <unistd.h>
#
if !GTEST_OS_NACL
// TODO(vladl@google.com): Remove this condition when Native Client SDK adds
// strings.h (tracked in
// http://code.google.com/p/nativeclient/issues/detail?id=1175).
#include <strings.h> // Native Client doesn't provide strings.h.
#endif
#
include <strings.h> // Native Client doesn't provide strings.h.
#
endif
#elif !GTEST_OS_WINDOWS_MOBILE
#include <direct.h>
#include <io.h>
#
include <direct.h>
#
include <io.h>
#endif
// Defines this to true iff Google Test can use POSIX regular expressions.
#ifndef GTEST_HAS_POSIX_RE
#define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
#
define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
#endif
#if GTEST_HAS_POSIX_RE
...
...
@@ -265,67 +265,67 @@
// won't compile otherwise. We can #include it here as we already
// included <stdlib.h>, which is guaranteed to define size_t through
// <stddef.h>.
#include <regex.h> // NOLINT
#
include <regex.h> // NOLINT
#define GTEST_USES_POSIX_RE 1
#
define GTEST_USES_POSIX_RE 1
#elif GTEST_OS_WINDOWS
// <regex.h> is not available on Windows. Use our own simple regex
// implementation instead.
#define GTEST_USES_SIMPLE_RE 1
#
define GTEST_USES_SIMPLE_RE 1
#else
// <regex.h> may not be available on this platform. Use our own
// simple regex implementation instead.
#define GTEST_USES_SIMPLE_RE 1
#
define GTEST_USES_SIMPLE_RE 1
#endif // GTEST_HAS_POSIX_RE
#ifndef GTEST_HAS_EXCEPTIONS
// The user didn't tell us whether exceptions are enabled, so we need
// to figure it out.
#if defined(_MSC_VER) || defined(__BORLANDC__)
#
if defined(_MSC_VER) || defined(__BORLANDC__)
// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS
// macro to enable exceptions, so we'll do the same.
// Assumes that exceptions are enabled by default.
#ifndef _HAS_EXCEPTIONS
#define _HAS_EXCEPTIONS 1
#endif // _HAS_EXCEPTIONS
#define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
#elif defined(__GNUC__) && __EXCEPTIONS
#
ifndef _HAS_EXCEPTIONS
#
define _HAS_EXCEPTIONS 1
#
endif // _HAS_EXCEPTIONS
#
define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
#
elif defined(__GNUC__) && __EXCEPTIONS
// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
#define GTEST_HAS_EXCEPTIONS 1
#elif defined(__SUNPRO_CC)
#
define GTEST_HAS_EXCEPTIONS 1
#
elif defined(__SUNPRO_CC)
// Sun Pro CC supports exceptions. However, there is no compile-time way of
// detecting whether they are enabled or not. Therefore, we assume that
// they are enabled unless the user tells us otherwise.
#define GTEST_HAS_EXCEPTIONS 1
#elif defined(__IBMCPP__) && __EXCEPTIONS
#
define GTEST_HAS_EXCEPTIONS 1
#
elif defined(__IBMCPP__) && __EXCEPTIONS
// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
#define GTEST_HAS_EXCEPTIONS 1
#else
#
define GTEST_HAS_EXCEPTIONS 1
#
else
// For other compilers, we assume exceptions are disabled to be
// conservative.
#define GTEST_HAS_EXCEPTIONS 0
#endif // defined(_MSC_VER) || defined(__BORLANDC__)
#
define GTEST_HAS_EXCEPTIONS 0
#
endif // defined(_MSC_VER) || defined(__BORLANDC__)
#endif // GTEST_HAS_EXCEPTIONS
#if !defined(GTEST_HAS_STD_STRING)
// Even though we don't use this macro any longer, we keep it in case
// some clients still depend on it.
#define GTEST_HAS_STD_STRING 1
#
define GTEST_HAS_STD_STRING 1
#elif !GTEST_HAS_STD_STRING
// The user told us that ::std::string isn't available.
#error "Google Test cannot be used where ::std::string isn't available."
#
error "Google Test cannot be used where ::std::string isn't available."
#endif // !defined(GTEST_HAS_STD_STRING)
#ifndef GTEST_HAS_GLOBAL_STRING
// The user didn't tell us whether ::string is available, so we need
// to figure it out.
#define GTEST_HAS_GLOBAL_STRING 0
#
define GTEST_HAS_GLOBAL_STRING 0
#endif // GTEST_HAS_GLOBAL_STRING
...
...
@@ -337,14 +337,14 @@
// Cygwin 1.7 and below doesn't support ::std::wstring.
// Solaris' libc++ doesn't support it either.
#define GTEST_HAS_STD_WSTRING (!(GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
#
define GTEST_HAS_STD_WSTRING (!(GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
#endif // GTEST_HAS_STD_WSTRING
#ifndef GTEST_HAS_GLOBAL_WSTRING
// The user didn't tell us whether ::wstring is available, so we need
// to figure it out.
#define GTEST_HAS_GLOBAL_WSTRING \
#
define GTEST_HAS_GLOBAL_WSTRING \
(GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
#endif // GTEST_HAS_GLOBAL_WSTRING
...
...
@@ -353,46 +353,46 @@
// The user didn't tell us whether RTTI is enabled, so we need to
// figure it out.
#ifdef _MSC_VER
#
ifdef _MSC_VER
#ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled.
#define GTEST_HAS_RTTI 1
#else
#define GTEST_HAS_RTTI 0
#endif
#
ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled.
#
define GTEST_HAS_RTTI 1
#
else
#
define GTEST_HAS_RTTI 0
#
endif
// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
#elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
#
elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302)
#ifdef __GXX_RTTI
#define GTEST_HAS_RTTI 1
#else
#define GTEST_HAS_RTTI 0
#endif // __GXX_RTTI
#
ifdef __GXX_RTTI
#
define GTEST_HAS_RTTI 1
#
else
#
define GTEST_HAS_RTTI 0
#
endif // __GXX_RTTI
// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
// both the typeid and dynamic_cast features are present.
#elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
#
elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
#ifdef __RTTI_ALL__
#define GTEST_HAS_RTTI 1
#else
#define GTEST_HAS_RTTI 0
#endif
#
ifdef __RTTI_ALL__
#
define GTEST_HAS_RTTI 1
#
else
#
define GTEST_HAS_RTTI 0
#
endif
#else
#
else
// For all other compilers, we assume RTTI is enabled.
#define GTEST_HAS_RTTI 1
#
define GTEST_HAS_RTTI 1
#endif // _MSC_VER
#
endif // _MSC_VER
#endif // GTEST_HAS_RTTI
// It's this header's responsibility to #include <typeinfo> when RTTI
// is enabled.
#if GTEST_HAS_RTTI
#include <typeinfo>
#
include <typeinfo>
#endif
// Determines whether Google Test can use the pthreads library.
...
...
@@ -402,16 +402,16 @@
//
// 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)
#
define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC)
#endif // GTEST_HAS_PTHREAD
#if GTEST_HAS_PTHREAD
// gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
// true.
#include <pthread.h> // NOLINT
#
include <pthread.h> // NOLINT
// For timespec and nanosleep, used below.
#include <time.h> // NOLINT
#
include <time.h> // NOLINT
#endif
// Determines whether Google Test can use tr1/tuple. You can define
...
...
@@ -419,7 +419,7 @@
// feature depending on tuple with be disabled in this mode).
#ifndef GTEST_HAS_TR1_TUPLE
// The user didn't tell us not to do it, so we assume it's OK.
#define GTEST_HAS_TR1_TUPLE 1
#
define GTEST_HAS_TR1_TUPLE 1
#endif // GTEST_HAS_TR1_TUPLE
// Determines whether Google Test's own tr1 tuple implementation
...
...
@@ -434,12 +434,12 @@
// defining __GNUC__ and friends, but cannot compile GCC's tuple
// implementation. MSVC 2008 (9.0) provides TR1 tuple in a 323 MB
// Feature Pack download, which we cannot assume the user has.
#if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000)) \
#
if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000)) \
|| _MSC_VER >= 1600
#define GTEST_USE_OWN_TR1_TUPLE 0
#else
#define GTEST_USE_OWN_TR1_TUPLE 1
#endif
#
define GTEST_USE_OWN_TR1_TUPLE 0
#
else
#
define GTEST_USE_OWN_TR1_TUPLE 1
#
endif
#endif // GTEST_USE_OWN_TR1_TUPLE
...
...
@@ -448,47 +448,47 @@
// tr1/tuple.
#if GTEST_HAS_TR1_TUPLE
#if GTEST_USE_OWN_TR1_TUPLE
#include "gtest/internal/gtest-tuple.h"
#elif GTEST_OS_SYMBIAN
#
if GTEST_USE_OWN_TR1_TUPLE
#
include "gtest/internal/gtest-tuple.h"
#
elif GTEST_OS_SYMBIAN
// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to
// use STLport's tuple implementation, which unfortunately doesn't
// work as the copy of STLport distributed with Symbian is incomplete.
// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to
// use its own tuple implementation.
#ifdef BOOST_HAS_TR1_TUPLE
#undef BOOST_HAS_TR1_TUPLE
#endif // BOOST_HAS_TR1_TUPLE
#
ifdef BOOST_HAS_TR1_TUPLE
#
undef BOOST_HAS_TR1_TUPLE
#
endif // BOOST_HAS_TR1_TUPLE
// This prevents <boost/tr1/detail/config.hpp>, which defines
// BOOST_HAS_TR1_TUPLE, from being #included by Boost's <tuple>.
#define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
#include <tuple>
#
define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED
#
include <tuple>
#elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
#
elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000)
// GCC 4.0+ implements tr1/tuple in the <tr1/tuple> header. This does
// not conform to the TR1 spec, which requires the header to be <tuple>.
#if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
#
if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
// Until version 4.3.2, gcc has a bug that causes <tr1/functional>,
// which is #included by <tr1/tuple>, to not compile when RTTI is
// disabled. _TR1_FUNCTIONAL is the header guard for
// <tr1/functional>. Hence the following #define is a hack to prevent
// <tr1/functional> from being included.
#define _TR1_FUNCTIONAL 1
#include <tr1/tuple>
#undef _TR1_FUNCTIONAL // Allows the user to #include
#
define _TR1_FUNCTIONAL 1
#
include <tr1/tuple>
#
undef _TR1_FUNCTIONAL // Allows the user to #include
// <tr1/functional> if he chooses to.
#else
#include <tr1/tuple> // NOLINT
#endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
#
else
#
include <tr1/tuple> // NOLINT
#
endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302
#else
#
else
// If the compiler is not GCC 4.0+, we assume the user is using a
// spec-conforming TR1 implementation.
#include <tuple> // NOLINT
#endif // GTEST_USE_OWN_TR1_TUPLE
#
include <tuple> // NOLINT
#
endif // GTEST_USE_OWN_TR1_TUPLE
#endif // GTEST_HAS_TR1_TUPLE
...
...
@@ -499,11 +499,11 @@
#ifndef GTEST_HAS_CLONE
// The user didn't tell us, so we need to figure it out.
#if GTEST_OS_LINUX && !defined(__ia64__)
#define GTEST_HAS_CLONE 1
#else
#define GTEST_HAS_CLONE 0
#endif // GTEST_OS_LINUX && !defined(__ia64__)
#
if GTEST_OS_LINUX && !defined(__ia64__)
#
define GTEST_HAS_CLONE 1
#
else
#
define GTEST_HAS_CLONE 0
#
endif // GTEST_OS_LINUX && !defined(__ia64__)
#endif // GTEST_HAS_CLONE
...
...
@@ -512,11 +512,11 @@
#ifndef GTEST_HAS_STREAM_REDIRECTION
// By default, we assume that stream redirection is supported on all
// platforms except known mobile ones.
#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN
#define GTEST_HAS_STREAM_REDIRECTION 0
#else
#define GTEST_HAS_STREAM_REDIRECTION 1
#endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
#
if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN
#
define GTEST_HAS_STREAM_REDIRECTION 0
#
else
#
define GTEST_HAS_STREAM_REDIRECTION 1
#
endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN
#endif // GTEST_HAS_STREAM_REDIRECTION
// Determines whether to support death tests.
...
...
@@ -526,8 +526,8 @@
#if (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
(GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \
GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX)
#define GTEST_HAS_DEATH_TEST 1
#include <vector> // NOLINT
#
define GTEST_HAS_DEATH_TEST 1
#
include <vector> // NOLINT
#endif
// We don't support MSVC 7.1 with exceptions disabled now. Therefore
...
...
@@ -541,8 +541,8 @@
// Sun Pro CC, and IBM Visual Age support.
#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \
defined(__IBMCPP__)
#define GTEST_HAS_TYPED_TEST 1
#define GTEST_HAS_TYPED_TEST_P 1
#
define GTEST_HAS_TYPED_TEST 1
#
define GTEST_HAS_TYPED_TEST_P 1
#endif
// Determines whether to support Combine(). This only makes sense when
...
...
@@ -550,7 +550,7 @@
// work on Sun Studio since it doesn't understand templated conversion
// operators.
#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC)
#define GTEST_HAS_COMBINE 1
#
define GTEST_HAS_COMBINE 1
#endif
// Determines whether the system compiler uses UTF-16 for encoding wide strings.
...
...
@@ -559,7 +559,7 @@
// Determines whether test results can be streamed to a socket.
#if GTEST_OS_LINUX
#define GTEST_CAN_STREAM_RESULTS_ 1
#
define GTEST_CAN_STREAM_RESULTS_ 1
#endif
// Defines some utility macros.
...
...
@@ -573,9 +573,9 @@
//
// The "switch (0) case 0:" idiom is used to suppress this.
#ifdef __INTEL_COMPILER
#define GTEST_AMBIGUOUS_ELSE_BLOCKER_
#
define GTEST_AMBIGUOUS_ELSE_BLOCKER_
#else
#define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
#
define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
#endif
// Use this annotation at the end of a struct/class definition to
...
...
@@ -590,9 +590,9 @@
// Also use it after a variable or parameter declaration to tell the
// compiler the variable/parameter does not have to be used.
#if defined(__GNUC__) && !defined(COMPILER_ICC)
#define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
#
define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
#else
#define GTEST_ATTRIBUTE_UNUSED_
#
define GTEST_ATTRIBUTE_UNUSED_
#endif
// A macro to disallow operator=
...
...
@@ -612,9 +612,9 @@
//
// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC)
#define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
#
define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
#else
#define GTEST_MUST_USE_RESULT_
#
define GTEST_MUST_USE_RESULT_
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
// Determine whether the compiler supports Microsoft's Structured Exception
...
...
@@ -623,28 +623,28 @@
#ifndef GTEST_HAS_SEH
// The user didn't tell us, so we need to figure it out.
#if defined(_MSC_VER) || defined(__BORLANDC__)
#
if defined(_MSC_VER) || defined(__BORLANDC__)
// These two compilers are known to support SEH.
#define GTEST_HAS_SEH 1
#else
#
define GTEST_HAS_SEH 1
#
else
// Assume no SEH.
#define GTEST_HAS_SEH 0
#endif
#
define GTEST_HAS_SEH 0
#
endif
#endif // GTEST_HAS_SEH
#ifdef _MSC_VER
#if GTEST_LINKED_AS_SHARED_LIBRARY
#define GTEST_API_ __declspec(dllimport)
#elif GTEST_CREATE_SHARED_LIBRARY
#define GTEST_API_ __declspec(dllexport)
#endif
#
if GTEST_LINKED_AS_SHARED_LIBRARY
#
define GTEST_API_ __declspec(dllimport)
#
elif GTEST_CREATE_SHARED_LIBRARY
#
define GTEST_API_ __declspec(dllexport)
#
endif
#endif // _MSC_VER
#ifndef GTEST_API_
#define GTEST_API_
#
define GTEST_API_
#endif
namespace
testing
{
...
...
@@ -794,7 +794,9 @@ class GTEST_API_ RE {
RE
(
const
::
std
::
string
&
regex
)
{
Init
(
regex
.
c_str
());
}
// NOLINT
#if GTEST_HAS_GLOBAL_STRING
RE
(
const
::
string
&
regex
)
{
Init
(
regex
.
c_str
());
}
// NOLINT
#endif // GTEST_HAS_GLOBAL_STRING
RE
(
const
char
*
regex
)
{
Init
(
regex
);
}
// NOLINT
...
...
@@ -818,12 +820,14 @@ class GTEST_API_ RE {
}
#if GTEST_HAS_GLOBAL_STRING
static
bool
FullMatch
(
const
::
string
&
str
,
const
RE
&
re
)
{
return
FullMatch
(
str
.
c_str
(),
re
);
}
static
bool
PartialMatch
(
const
::
string
&
str
,
const
RE
&
re
)
{
return
PartialMatch
(
str
.
c_str
(),
re
);
}
#endif // GTEST_HAS_GLOBAL_STRING
static
bool
FullMatch
(
const
char
*
str
,
const
RE
&
re
);
...
...
@@ -838,11 +842,16 @@ class GTEST_API_ RE {
// files.
const
char
*
pattern_
;
bool
is_valid_
;
#if GTEST_USES_POSIX_RE
regex_t
full_regex_
;
// For FullMatch().
regex_t
partial_regex_
;
// For PartialMatch().
#else // GTEST_USES_SIMPLE_RE
const
char
*
full_pattern_
;
// For FullMatch();
#endif
GTEST_DISALLOW_ASSIGN_
(
RE
);
...
...
@@ -1205,11 +1214,11 @@ class MutexBase {
};
// Forward-declares a static mutex.
#define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
#
define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
extern ::testing::internal::MutexBase mutex
// Defines and statically (i.e. at link time) initializes a static mutex.
#define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
#
define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, 0 }
// The Mutex class can only be used for mutexes created at runtime. It
...
...
@@ -1356,7 +1365,7 @@ class ThreadLocal {
GTEST_DISALLOW_COPY_AND_ASSIGN_
(
ThreadLocal
);
};
#define GTEST_IS_THREADSAFE 1
#
define GTEST_IS_THREADSAFE 1
#else // GTEST_HAS_PTHREAD
...
...
@@ -1371,10 +1380,10 @@ class Mutex {
void
AssertHeld
()
const
{}
};
#define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
#
define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
extern ::testing::internal::Mutex mutex
#define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
#
define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
class
GTestMutexLock
{
public:
...
...
@@ -1398,7 +1407,7 @@ class ThreadLocal {
// The above synchronization primitives have dummy implementations.
// Therefore Google Test is not thread-safe.
#define GTEST_IS_THREADSAFE 0
#
define GTEST_IS_THREADSAFE 0
#endif // GTEST_HAS_PTHREAD
...
...
@@ -1415,9 +1424,9 @@ GTEST_API_ size_t GetThreadCount();
#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC)
// We lose support for NULL detection where the compiler doesn't like
// passing non-POD classes through ellipsis (...).
#define GTEST_ELLIPSIS_NEEDS_POD_ 1
#
define GTEST_ELLIPSIS_NEEDS_POD_ 1
#else
#define GTEST_CAN_COMPARE_NULL 1
#
define GTEST_CAN_COMPARE_NULL 1
#endif
// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between
...
...
@@ -1425,7 +1434,7 @@ GTEST_API_ size_t GetThreadCount();
// _can_ decide between class template specializations for T and T*,
// so a tr1::type_traits-like is_pointer works.
#if defined(__SYMBIAN32__) || defined(__IBMCPP__)
#define GTEST_NEEDS_IS_POINTER_ 1
#
define GTEST_NEEDS_IS_POINTER_ 1
#endif
template
<
bool
bool_value
>
...
...
@@ -1445,13 +1454,13 @@ template <typename T>
struct
is_pointer
<
T
*>
:
public
true_type
{};
#if GTEST_OS_WINDOWS
#define GTEST_PATH_SEP_ "\\"
#define GTEST_HAS_ALT_PATH_SEP_ 1
#
define GTEST_PATH_SEP_ "\\"
#
define GTEST_HAS_ALT_PATH_SEP_ 1
// The biggest signed integer type the compiler supports.
typedef
__int64
BiggestInt
;
#else
#define GTEST_PATH_SEP_ "/"
#define GTEST_HAS_ALT_PATH_SEP_ 0
#
define GTEST_PATH_SEP_ "/"
#
define GTEST_HAS_ALT_PATH_SEP_ 0
typedef
long
long
BiggestInt
;
// NOLINT
#endif // GTEST_OS_WINDOWS
...
...
@@ -1505,36 +1514,36 @@ namespace posix {
typedef
struct
_stat
StatStruct
;
#ifdef __BORLANDC__
#
ifdef __BORLANDC__
inline
int
IsATTY
(
int
fd
)
{
return
isatty
(
fd
);
}
inline
int
StrCaseCmp
(
const
char
*
s1
,
const
char
*
s2
)
{
return
stricmp
(
s1
,
s2
);
}
inline
char
*
StrDup
(
const
char
*
src
)
{
return
strdup
(
src
);
}
#else // !__BORLANDC__
#if GTEST_OS_WINDOWS_MOBILE
#
else // !__BORLANDC__
#
if GTEST_OS_WINDOWS_MOBILE
inline
int
IsATTY
(
int
/* fd */
)
{
return
0
;
}
#else
#
else
inline
int
IsATTY
(
int
fd
)
{
return
_isatty
(
fd
);
}
#endif // GTEST_OS_WINDOWS_MOBILE
#
endif // GTEST_OS_WINDOWS_MOBILE
inline
int
StrCaseCmp
(
const
char
*
s1
,
const
char
*
s2
)
{
return
_stricmp
(
s1
,
s2
);
}
inline
char
*
StrDup
(
const
char
*
src
)
{
return
_strdup
(
src
);
}
#endif // __BORLANDC__
#
endif // __BORLANDC__
#if GTEST_OS_WINDOWS_MOBILE
#
if GTEST_OS_WINDOWS_MOBILE
inline
int
FileNo
(
FILE
*
file
)
{
return
reinterpret_cast
<
int
>
(
_fileno
(
file
));
}
// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
// time and thus not defined there.
#else
#
else
inline
int
FileNo
(
FILE
*
file
)
{
return
_fileno
(
file
);
}
inline
int
Stat
(
const
char
*
path
,
StatStruct
*
buf
)
{
return
_stat
(
path
,
buf
);
}
inline
int
RmDir
(
const
char
*
dir
)
{
return
_rmdir
(
dir
);
}
inline
bool
IsDir
(
const
StatStruct
&
st
)
{
return
(
_S_IFDIR
&
st
.
st_mode
)
!=
0
;
}
#endif // GTEST_OS_WINDOWS_MOBILE
#
endif // GTEST_OS_WINDOWS_MOBILE
#else
...
...
@@ -1556,8 +1565,8 @@ inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
#ifdef _MSC_VER
// Temporarily disable warning 4996 (deprecated function).
#pragma warning(push)
#pragma warning(disable:4996)
#
pragma warning(push)
#
pragma warning(disable:4996)
#endif
inline
const
char
*
StrNCpy
(
char
*
dest
,
const
char
*
src
,
size_t
n
)
{
...
...
@@ -1606,7 +1615,7 @@ inline const char* GetEnv(const char* name) {
}
#ifdef _MSC_VER
#pragma warning(pop) // Restores the warning state.
#
pragma warning(pop) // Restores the warning state.
#endif
#if GTEST_OS_WINDOWS_MOBILE
...
...
@@ -1672,6 +1681,7 @@ class TypeWithSize<4> {
template
<>
class
TypeWithSize
<
8
>
{
public:
#if GTEST_OS_WINDOWS
typedef
__int64
Int
;
typedef
unsigned
__int64
UInt
;
...
...
include/gtest/internal/gtest-string.h
View file @
ffeb11d1
...
...
@@ -43,7 +43,7 @@
#ifdef __BORLANDC__
// string.h is not guaranteed to provide strcpy on C++ Builder.
#include <mem.h>
#
include <mem.h>
#endif
#include <string.h>
...
...
include/gtest/internal/gtest-tuple.h
View file @
ffeb11d1
...
...
@@ -44,9 +44,9 @@
// private as public.
// Sun Studio versions < 12 also have the above bug.
#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
#define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
#
define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
#else
#define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
#
define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
template <GTEST_10_TYPENAMES_(U)> friend class tuple; \
private:
#endif
...
...
include/gtest/internal/gtest-tuple.h.pump
View file @
ffeb11d1
...
...
@@ -45,9 +45,9 @@ $$ This meta comment fixes auto-indentation in Emacs. }}
// private as public.
// Sun Studio versions < 12 also have the above bug.
#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590)
#define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
#
define GTEST_DECLARE_TUPLE_AS_FRIEND_ public:
#else
#define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
#
define GTEST_DECLARE_TUPLE_AS_FRIEND_ \
template <GTEST_$(n)_TYPENAMES_(U)> friend class tuple; \
private:
#endif
...
...
include/gtest/internal/gtest-type-util.h
View file @
ffeb11d1
...
...
@@ -51,9 +51,9 @@
// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
// libstdc++ (which is where cxxabi.h comes from).
#ifdef __GLIBCXX__
#include <cxxabi.h>
#endif // __GLIBCXX__
#
ifdef __GLIBCXX__
#
include <cxxabi.h>
#
endif // __GLIBCXX__
namespace
testing
{
namespace
internal
{
...
...
@@ -73,10 +73,10 @@ struct AssertTypeEq<T, T> {
// GetTypeName<T>() returns a human-readable name of type T.
template
<
typename
T
>
String
GetTypeName
()
{
#if GTEST_HAS_RTTI
#
if GTEST_HAS_RTTI
const
char
*
const
name
=
typeid
(
T
).
name
();
#ifdef __GLIBCXX__
#
ifdef __GLIBCXX__
int
status
=
0
;
// gcc's implementation of typeid(T).name() mangles the type name,
// so we have to demangle it.
...
...
@@ -84,13 +84,15 @@ String GetTypeName() {
const
String
name_str
(
status
==
0
?
readable_name
:
name
);
free
(
readable_name
);
return
name_str
;
#else
#
else
return
name
;
#endif // __GLIBCXX__
# endif // __GLIBCXX__
# else
#else
return
"<type>"
;
#endif // GTEST_HAS_RTTI
# endif // GTEST_HAS_RTTI
}
// A unique type used as the default value for the arguments of class
...
...
@@ -1611,7 +1613,7 @@ struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
namespace
internal
{
#define GTEST_TEMPLATE_ template <typename T> class
#
define GTEST_TEMPLATE_ template <typename T> class
// The template "selector" struct TemplateSel<Tmpl> is used to
// represent Tmpl, which must be a class template with one type
...
...
@@ -1629,7 +1631,7 @@ struct TemplateSel {
};
};
#define GTEST_BIND_(TmplSel, T) \
#
define GTEST_BIND_(TmplSel, T) \
TmplSel::template Bind<T>::type
// A unique struct template used as the default value for the
...
...
include/gtest/internal/gtest-type-util.h.pump
View file @
ffeb11d1
...
...
@@ -49,9 +49,9 @@ $var n = 50 $$ Maximum length of type lists we want to support.
// #ifdef __GNUC__ is too general here. It is possible to use gcc without using
// libstdc++ (which is where cxxabi.h comes from).
#ifdef __GLIBCXX__
#include <cxxabi.h>
#endif // __GLIBCXX__
#
ifdef __GLIBCXX__
#
include <cxxabi.h>
#
endif // __GLIBCXX__
namespace
testing
{
namespace
internal
{
...
...
@@ -71,10 +71,10 @@ struct AssertTypeEq<T, T> {
// GetTypeName<T>() returns a human-readable name of type T.
template
<
typename
T
>
String
GetTypeName
()
{
#if GTEST_HAS_RTTI
#
if GTEST_HAS_RTTI
const
char
*
const
name
=
typeid
(
T
).
name
();
#ifdef __GLIBCXX__
#
ifdef __GLIBCXX__
int
status
=
0
;
// gcc's implementation of typeid(T).name() mangles the type name,
// so we have to demangle it.
...
...
@@ -82,13 +82,15 @@ String GetTypeName() {
const
String
name_str
(
status
==
0
?
readable_name
:
name
);
free
(
readable_name
);
return
name_str
;
#else
#
else
return
name
;
#endif // __GLIBCXX__
# endif // __GLIBCXX__
# else
#else
return
"<type>"
;
#endif // GTEST_HAS_RTTI
# endif // GTEST_HAS_RTTI
}
// A unique type used as the default value for the arguments of class
...
...
@@ -169,7 +171,7 @@ struct Types<$for j, [[T$j]]$for k[[, internal::None]]> {
namespace
internal
{
#define GTEST_TEMPLATE_ template <typename T> class
#
define GTEST_TEMPLATE_ template <typename T> class
// The template "selector" struct TemplateSel<Tmpl> is used to
// represent Tmpl, which must be a class template with one type
...
...
@@ -187,7 +189,7 @@ struct TemplateSel {
};
};
#define GTEST_BIND_(TmplSel, T) \
#
define GTEST_BIND_(TmplSel, T) \
TmplSel::template Bind<T>::type
// A unique struct template used as the default value for the
...
...
src/gtest-death-test.cc
View file @
ffeb11d1
...
...
@@ -36,21 +36,21 @@
#if GTEST_HAS_DEATH_TEST
#if GTEST_OS_MAC
#include <crt_externs.h>
#endif // GTEST_OS_MAC
#include <errno.h>
#include <fcntl.h>
#include <limits.h>
#include <stdarg.h>
#if GTEST_OS_WINDOWS
#include <windows.h>
#else
#include <sys/mman.h>
#include <sys/wait.h>
#endif // GTEST_OS_WINDOWS
#
if GTEST_OS_MAC
#
include <crt_externs.h>
#
endif // GTEST_OS_MAC
#
include <errno.h>
#
include <fcntl.h>
#
include <limits.h>
#
include <stdarg.h>
#
if GTEST_OS_WINDOWS
#
include <windows.h>
#
else
#
include <sys/mman.h>
#
include <sys/wait.h>
#
endif // GTEST_OS_WINDOWS
#endif // GTEST_HAS_DEATH_TEST
...
...
@@ -113,14 +113,18 @@ ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
// ExitedWithCode function-call operator.
bool
ExitedWithCode
::
operator
()(
int
exit_status
)
const
{
#if GTEST_OS_WINDOWS
# if GTEST_OS_WINDOWS
return
exit_status
==
exit_code_
;
#else
# else
return
WIFEXITED
(
exit_status
)
&&
WEXITSTATUS
(
exit_status
)
==
exit_code_
;
#endif // GTEST_OS_WINDOWS
# endif // GTEST_OS_WINDOWS
}
#if !GTEST_OS_WINDOWS
#
if !GTEST_OS_WINDOWS
// KilledBySignal constructor.
KilledBySignal
::
KilledBySignal
(
int
signum
)
:
signum_
(
signum
)
{
}
...
...
@@ -129,7 +133,7 @@ KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
bool
KilledBySignal
::
operator
()(
int
exit_status
)
const
{
return
WIFSIGNALED
(
exit_status
)
&&
WTERMSIG
(
exit_status
)
==
signum_
;
}
#endif // !GTEST_OS_WINDOWS
#
endif // !GTEST_OS_WINDOWS
namespace
internal
{
...
...
@@ -139,20 +143,25 @@ namespace internal {
// specified by wait(2).
static
String
ExitSummary
(
int
exit_code
)
{
Message
m
;
#if GTEST_OS_WINDOWS
# if GTEST_OS_WINDOWS
m
<<
"Exited with exit status "
<<
exit_code
;
#else
# else
if
(
WIFEXITED
(
exit_code
))
{
m
<<
"Exited with exit status "
<<
WEXITSTATUS
(
exit_code
);
}
else
if
(
WIFSIGNALED
(
exit_code
))
{
m
<<
"Terminated by signal "
<<
WTERMSIG
(
exit_code
);
}
#ifdef WCOREDUMP
#
ifdef WCOREDUMP
if
(
WCOREDUMP
(
exit_code
))
{
m
<<
" (core dumped)"
;
}
#endif
#endif // GTEST_OS_WINDOWS
# endif
# endif // GTEST_OS_WINDOWS
return
m
.
GetString
();
}
...
...
@@ -162,7 +171,7 @@ bool ExitedUnsuccessfully(int exit_status) {
return
!
ExitedWithCode
(
0
)(
exit_status
);
}
#if !GTEST_OS_WINDOWS
#
if !GTEST_OS_WINDOWS
// Generates a textual failure message when a death test finds more than
// one thread running, or cannot determine the number of threads, prior
// to executing the given statement. It is the responsibility of the
...
...
@@ -177,7 +186,7 @@ static String DeathTestThreadWarning(size_t thread_count) {
msg
<<
"detected "
<<
thread_count
<<
" threads."
;
return
msg
.
GetString
();
}
#endif // !GTEST_OS_WINDOWS
#
endif // !GTEST_OS_WINDOWS
// Flag characters for reporting a death test that did not die.
static
const
char
kDeathTestLived
=
'L'
;
...
...
@@ -222,7 +231,7 @@ void DeathTestAbort(const String& message) {
// A replacement for CHECK that calls DeathTestAbort if the assertion
// fails.
#define GTEST_DEATH_TEST_CHECK_(expression) \
#
define GTEST_DEATH_TEST_CHECK_(expression) \
do { \
if (!::testing::internal::IsTrue(expression)) { \
DeathTestAbort(::testing::internal::String::Format( \
...
...
@@ -238,7 +247,7 @@ void DeathTestAbort(const String& message) {
// evaluates the expression as long as it evaluates to -1 and sets
// errno to EINTR. If the expression evaluates to -1 but errno is
// something other than EINTR, DeathTestAbort is called.
#define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
#
define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
do { \
int gtest_retval; \
do { \
...
...
@@ -527,7 +536,7 @@ bool DeathTestImpl::Passed(bool status_ok) {
return
success
;
}
#if GTEST_OS_WINDOWS
#
if GTEST_OS_WINDOWS
// WindowsDeathTest implements death tests on Windows. Due to the
// specifics of starting new processes on Windows, death tests there are
// always threadsafe, and Google Test considers the
...
...
@@ -723,7 +732,7 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() {
set_spawned
(
true
);
return
OVERSEE_TEST
;
}
#else // We are not on Windows.
#
else // We are not on Windows.
// ForkingDeathTest provides implementations for most of the abstract
// methods of the DeathTest interface. Only the AssumeRole method is
...
...
@@ -871,19 +880,19 @@ struct ExecDeathTestArgs {
int
close_fd
;
// File descriptor to close; the read end of a pipe
};
#if GTEST_OS_MAC
#
if GTEST_OS_MAC
inline
char
**
GetEnviron
()
{
// When Google Test is built as a framework on MacOS X, the environ variable
// is unavailable. Apple's documentation (man environ) recommends using
// _NSGetEnviron() instead.
return
*
_NSGetEnviron
();
}
#else
#
else
// Some POSIX platforms expect you to declare environ. extern "C" makes
// it reside in the global namespace.
extern
"C"
char
**
environ
;
inline
char
**
GetEnviron
()
{
return
environ
;
}
#endif // GTEST_OS_MAC
#
endif // GTEST_OS_MAC
// The main function for a threadsafe-style death test child process.
// This function is called in a clone()-ed process and thus must avoid
...
...
@@ -940,7 +949,7 @@ static pid_t ExecDeathTestFork(char* const* argv, int close_fd) {
ExecDeathTestArgs
args
=
{
argv
,
close_fd
};
pid_t
child_pid
=
-
1
;
#if GTEST_HAS_CLONE
#
if GTEST_HAS_CLONE
const
bool
use_fork
=
GTEST_FLAG
(
death_test_use_fork
);
if
(
!
use_fork
)
{
...
...
@@ -957,9 +966,9 @@ static pid_t ExecDeathTestFork(char* const* argv, int close_fd) {
GTEST_DEATH_TEST_CHECK_
(
munmap
(
stack
,
stack_size
)
!=
-
1
);
}
#else
#
else
const
bool
use_fork
=
true
;
#endif // GTEST_HAS_CLONE
#
endif // GTEST_HAS_CLONE
if
(
use_fork
&&
(
child_pid
=
fork
())
==
0
)
{
ExecDeathTestChildMain
(
&
args
);
...
...
@@ -1020,7 +1029,7 @@ DeathTest::TestRole ExecDeathTest::AssumeRole() {
return
OVERSEE_TEST
;
}
#endif // !GTEST_OS_WINDOWS
#
endif // !GTEST_OS_WINDOWS
// Creates a concrete DeathTest-derived class that depends on the
// --gtest_death_test_style flag, and sets the pointer pointed to
...
...
@@ -1051,18 +1060,23 @@ bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex,
}
}
#if GTEST_OS_WINDOWS
# if GTEST_OS_WINDOWS
if
(
GTEST_FLAG
(
death_test_style
)
==
"threadsafe"
||
GTEST_FLAG
(
death_test_style
)
==
"fast"
)
{
*
test
=
new
WindowsDeathTest
(
statement
,
regex
,
file
,
line
);
}
#else
# else
if
(
GTEST_FLAG
(
death_test_style
)
==
"threadsafe"
)
{
*
test
=
new
ExecDeathTest
(
statement
,
regex
,
file
,
line
);
}
else
if
(
GTEST_FLAG
(
death_test_style
)
==
"fast"
)
{
*
test
=
new
NoExecDeathTest
(
statement
,
regex
);
}
#endif // GTEST_OS_WINDOWS
# endif // GTEST_OS_WINDOWS
else
{
// NOLINT - this is more readable than unbalanced brackets inside #if.
DeathTest
::
set_last_death_test_message
(
String
::
Format
(
"Unknown death test style
\"
%s
\"
encountered"
,
...
...
@@ -1093,7 +1107,7 @@ static void SplitString(const ::std::string& str, char delimiter,
dest
->
swap
(
parsed
);
}
#if GTEST_OS_WINDOWS
#
if GTEST_OS_WINDOWS
// Recreates the pipe and event handles from the provided parameters,
// signals the event, and returns a file descriptor wrapped around the pipe
// handle. This function is called in the child process only.
...
...
@@ -1157,7 +1171,7 @@ int GetStatusFileDescriptor(unsigned int parent_process_id,
return
write_fd
;
}
#endif // GTEST_OS_WINDOWS
#
endif // GTEST_OS_WINDOWS
// Returns a newly created InternalRunDeathTestFlag object with fields
// initialized from the GTEST_FLAG(internal_run_death_test) flag if
...
...
@@ -1173,7 +1187,8 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
SplitString
(
GTEST_FLAG
(
internal_run_death_test
).
c_str
(),
'|'
,
&
fields
);
int
write_fd
=
-
1
;
#if GTEST_OS_WINDOWS
# if GTEST_OS_WINDOWS
unsigned
int
parent_process_id
=
0
;
size_t
write_handle_as_size_t
=
0
;
size_t
event_handle_as_size_t
=
0
;
...
...
@@ -1191,7 +1206,8 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
write_fd
=
GetStatusFileDescriptor
(
parent_process_id
,
write_handle_as_size_t
,
event_handle_as_size_t
);
#else
# else
if
(
fields
.
size
()
!=
4
||
!
ParseNaturalNumber
(
fields
[
1
],
&
line
)
||
!
ParseNaturalNumber
(
fields
[
2
],
&
index
)
...
...
@@ -1200,7 +1216,9 @@ InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
"Bad --gtest_internal_run_death_test flag: %s"
,
GTEST_FLAG
(
internal_run_death_test
).
c_str
()));
}
#endif // GTEST_OS_WINDOWS
# endif // GTEST_OS_WINDOWS
return
new
InternalRunDeathTestFlag
(
fields
[
0
],
line
,
index
,
write_fd
);
}
...
...
src/gtest-filepath.cc
View file @
ffeb11d1
...
...
@@ -35,26 +35,26 @@
#include <stdlib.h>
#if GTEST_OS_WINDOWS_MOBILE
#include <windows.h>
#
include <windows.h>
#elif GTEST_OS_WINDOWS
#include <direct.h>
#include <io.h>
#
include <direct.h>
#
include <io.h>
#elif GTEST_OS_SYMBIAN || GTEST_OS_NACL
// Symbian OpenC and NaCl have PATH_MAX in sys/syslimits.h
#include <sys/syslimits.h>
#
include <sys/syslimits.h>
#else
#include <limits.h>
#include <climits> // Some Linux distributions define PATH_MAX here.
#
include <limits.h>
#
include <climits> // Some Linux distributions define PATH_MAX here.
#endif // GTEST_OS_WINDOWS_MOBILE
#if GTEST_OS_WINDOWS
#define GTEST_PATH_MAX_ _MAX_PATH
#
define GTEST_PATH_MAX_ _MAX_PATH
#elif defined(PATH_MAX)
#define GTEST_PATH_MAX_ PATH_MAX
#
define GTEST_PATH_MAX_ PATH_MAX
#elif defined(_XOPEN_PATH_MAX)
#define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
#
define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
#else
#define GTEST_PATH_MAX_ _POSIX_PATH_MAX
#
define GTEST_PATH_MAX_ _POSIX_PATH_MAX
#endif // GTEST_OS_WINDOWS
#include "gtest/internal/gtest-string.h"
...
...
@@ -71,16 +71,16 @@ const char kPathSeparator = '\\';
const
char
kAlternatePathSeparator
=
'/'
;
const
char
kPathSeparatorString
[]
=
"
\\
"
;
const
char
kAlternatePathSeparatorString
[]
=
"/"
;
#if GTEST_OS_WINDOWS_MOBILE
#
if GTEST_OS_WINDOWS_MOBILE
// Windows CE doesn't have a current directory. You should not use
// the current directory in tests on Windows CE, but this at least
// provides a reasonable fallback.
const
char
kCurrentDirectoryString
[]
=
"
\\
"
;
// Windows CE doesn't define INVALID_FILE_ATTRIBUTES
const
DWORD
kInvalidFileAttributes
=
0xffffffff
;
#else
#
else
const
char
kCurrentDirectoryString
[]
=
".
\\
"
;
#endif // GTEST_OS_WINDOWS_MOBILE
#
endif // GTEST_OS_WINDOWS_MOBILE
#else
const
char
kPathSeparator
=
'/'
;
const
char
kPathSeparatorString
[]
=
"/"
;
...
...
Prev
1
2
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