From ae3247986bbbafcc913b5fe6132090ad6f1c3f36 Mon Sep 17 00:00:00 2001 From: "zhanyong.wan" Date: Fri, 19 Jun 2009 00:24:28 +0000 Subject: [PATCH] Fixes broken gtest_unittest on Cygwin and cleans it up (by Vlad Losev); fixes the wrong usage of os.environ.clear() in gtest_output_test.py (by Vlad Losev); fixes the logic for detecting Symbian (by Zhanyong Wan); moves TestProperty for event listener (by Vlad Losev). --- include/gtest/gtest.h | 38 +++++++++++++++++++++++++++++ include/gtest/internal/gtest-port.h | 2 +- src/gtest-internal-inl.h | 35 -------------------------- test/gtest_output_test.py | 6 ++++- test/gtest_unittest.cc | 32 +++++++++--------------- 5 files changed, 56 insertions(+), 57 deletions(-) diff --git a/include/gtest/gtest.h b/include/gtest/gtest.h index f5437784..d15909b1 100644 --- a/include/gtest/gtest.h +++ b/include/gtest/gtest.h @@ -346,6 +346,44 @@ class Test { GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); }; +namespace internal { + +// A copyable object representing a user specified test property which can be +// output as a key/value string pair. +// +// Don't inherit from TestProperty as its destructor is not virtual. +class TestProperty { + public: + // C'tor. TestProperty does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestProperty object. + TestProperty(const char* key, const char* value) : + key_(key), value_(value) { + } + + // Gets the user supplied key. + const char* key() const { + return key_.c_str(); + } + + // Gets the user supplied value. + const char* value() const { + return value_.c_str(); + } + + // Sets a new value, overriding the one supplied in the constructor. + void SetValue(const char* new_value) { + value_ = new_value; + } + + private: + // The key supplied by the user. + String key_; + // The value supplied by the user. + String value_; +}; + +} // namespace internal // A TestInfo object stores the following information about a test: // diff --git a/include/gtest/internal/gtest-port.h b/include/gtest/internal/gtest-port.h index e1a3597c..886e2dd8 100644 --- a/include/gtest/internal/gtest-port.h +++ b/include/gtest/internal/gtest-port.h @@ -177,7 +177,7 @@ // Determines the platform on which Google Test is compiled. #ifdef __CYGWIN__ #define GTEST_OS_CYGWIN 1 -#elif __SYMBIAN32__ +#elif defined __SYMBIAN32__ #define GTEST_OS_SYMBIAN 1 #elif defined _WIN32 #define GTEST_OS_WINDOWS 1 diff --git a/src/gtest-internal-inl.h b/src/gtest-internal-inl.h index 26d1bd1d..94c9d7ee 100644 --- a/src/gtest-internal-inl.h +++ b/src/gtest-internal-inl.h @@ -450,41 +450,6 @@ static void Delete(T * x) { delete x; } -// A copyable object representing a user specified test property which can be -// output as a key/value string pair. -// -// Don't inherit from TestProperty as its destructor is not virtual. -class TestProperty { - public: - // C'tor. TestProperty does NOT have a default constructor. - // Always use this constructor (with parameters) to create a - // TestProperty object. - TestProperty(const char* key, const char* value) : - key_(key), value_(value) { - } - - // Gets the user supplied key. - const char* key() const { - return key_.c_str(); - } - - // Gets the user supplied value. - const char* value() const { - return value_.c_str(); - } - - // Sets a new value, overriding the one supplied in the constructor. - void SetValue(const char* new_value) { - value_ = new_value; - } - - private: - // The key supplied by the user. - String key_; - // The value supplied by the user. - String value_; -}; - // A predicate that checks the key of a TestProperty against a known key. // // TestPropertyKeyIs is copyable. diff --git a/test/gtest_output_test.py b/test/gtest_output_test.py index 91cf9153..c6ea0f8c 100755 --- a/test/gtest_output_test.py +++ b/test/gtest_output_test.py @@ -185,7 +185,11 @@ def IterShellCommandOutput(env_cmd, stdin_string=None): old_env_vars = dict(os.environ) os.environ.update(env_cmd[0]) stdin_file, stdout_file = os.popen2(env_cmd[1], 'b') - os.environ.clear() + # Changes made by os.environ.clear are not inheritable by child processes + # until Python 2.6. To produce inheritable changes we have to delete + # environment items with the del statement. + for key in os.environ.keys(): + del os.environ[key] os.environ.update(old_env_vars) # If the caller didn't specify a string for STDIN, gets it from the diff --git a/test/gtest_unittest.cc b/test/gtest_unittest.cc index 878aa23c..c6d5e0ee 100644 --- a/test/gtest_unittest.cc +++ b/test/gtest_unittest.cc @@ -64,6 +64,7 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { #include "src/gtest-internal-inl.h" #undef GTEST_IMPLEMENTATION_ +#include // For INT_MAX. #include #include @@ -71,15 +72,6 @@ TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { #include #endif // GTEST_HAS_PTHREAD -#if GTEST_OS_LINUX -#include -#include -#include -#include -#include -#include -#endif // GTEST_OS_LINUX - #ifdef __BORLANDC__ #include #endif @@ -784,7 +776,7 @@ TEST(StringTest, AnsiAndUtf16ConvertBasic) { EXPECT_STREQ("str", ansi); delete [] ansi; const WCHAR* utf16 = String::AnsiToUtf16("str"); - EXPECT_TRUE(wcsncmp(L"str", utf16, 3) == 0); + EXPECT_EQ(0, wcsncmp(L"str", utf16, 3)); delete [] utf16; } @@ -793,7 +785,7 @@ TEST(StringTest, AnsiAndUtf16ConvertPathChars) { EXPECT_STREQ(".:\\ \"*?", ansi); delete [] ansi; const WCHAR* utf16 = String::AnsiToUtf16(".:\\ \"*?"); - EXPECT_TRUE(wcsncmp(L".:\\ \"*?", utf16, 3) == 0); + EXPECT_EQ(0, wcsncmp(L".:\\ \"*?", utf16, 3)); delete [] utf16; } #endif // _WIN32_WCE @@ -3398,13 +3390,13 @@ TEST(AssertionSyntaxTest, BasicAssertionsBehavesLikeSingleStatement) { if (true) EXPECT_FALSE(false); else - ; + ; // NOLINT if (false) ASSERT_LT(1, 3); if (false) - ; + ; // NOLINT else EXPECT_GT(3, 2) << ""; } @@ -3431,7 +3423,7 @@ TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) { if (true) EXPECT_THROW(ThrowAnInteger(), int); else - ; + ; // NOLINT if (false) EXPECT_NO_THROW(ThrowAnInteger()); @@ -3439,7 +3431,7 @@ TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) { if (true) EXPECT_NO_THROW(ThrowNothing()); else - ; + ; // NOLINT if (false) EXPECT_ANY_THROW(ThrowNothing()); @@ -3447,7 +3439,7 @@ TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) { if (true) EXPECT_ANY_THROW(ThrowAnInteger()); else - ; + ; // NOLINT } #endif // GTEST_HAS_EXCEPTIONS @@ -3456,20 +3448,20 @@ TEST(AssertionSyntaxTest, NoFatalFailureAssertionsBehavesLikeSingleStatement) { EXPECT_NO_FATAL_FAILURE(FAIL()) << "This should never be executed. " << "It's a compilation test only."; else - ; + ; // NOLINT if (false) ASSERT_NO_FATAL_FAILURE(FAIL()) << ""; else - ; + ; // NOLINT if (true) EXPECT_NO_FATAL_FAILURE(SUCCEED()); else - ; + ; // NOLINT if (false) - ; + ; // NOLINT else ASSERT_NO_FATAL_FAILURE(SUCCEED()); }