diff options
| author | kosak <kosak@google.com> | 2015-07-24 20:43:09 +0000 | 
|---|---|---|
| committer | kosak <kosak@google.com> | 2015-07-24 20:43:09 +0000 | 
| commit | f972f1680aa5de3230dac197b223336f30210f69 (patch) | |
| tree | bffd331e4e50b3c299f8d5666dbe34d032ffd9d0 /src | |
| parent | 40bba6c9ec1a258ff450a99d7f6b8e8a1f9fee73 (diff) | |
| download | googletest-f972f1680aa5de3230dac197b223336f30210f69.tar.gz googletest-f972f1680aa5de3230dac197b223336f30210f69.tar.bz2 googletest-f972f1680aa5de3230dac197b223336f30210f69.zip  | |
Inject GetArgvs() with a macro from custom/gtest-port.h.
Diffstat (limited to 'src')
| -rw-r--r-- | src/gtest-port.cc | 5 | ||||
| -rw-r--r-- | src/gtest.cc | 34 | 
2 files changed, 15 insertions, 24 deletions
diff --git a/src/gtest-port.cc b/src/gtest-port.cc index 3bc404bd..7c936f08 100644 --- a/src/gtest-port.cc +++ b/src/gtest-port.cc @@ -1084,9 +1084,6 @@ std::string ReadEntireFile(FILE* file) {  #if GTEST_HAS_DEATH_TEST -// A copy of all command line arguments.  Set by InitGoogleTest(). -::std::vector<testing::internal::string> g_argvs; -  static const ::std::vector<testing::internal::string>* g_injected_test_argvs =                                          NULL;  // Owned. @@ -1100,7 +1097,7 @@ const ::std::vector<testing::internal::string>& GetInjectableArgvs() {    if (g_injected_test_argvs != NULL) {      return *g_injected_test_argvs;    } -  return g_argvs; +  return GetArgvs();  }  #endif  // GTEST_HAS_DEATH_TEST diff --git a/src/gtest.cc b/src/gtest.cc index 08393897..fb65bc17 100644 --- a/src/gtest.cc +++ b/src/gtest.cc @@ -327,13 +327,7 @@ UInt32 Random::Generate(UInt32 range) {  // GTestIsInitialized() returns true iff the user has initialized  // Google Test.  Useful for catching the user mistake of not initializing  // Google Test before calling RUN_ALL_TESTS(). -// -// A user must call testing::InitGoogleTest() to initialize Google -// Test.  g_init_gtest_count is set to the number of times -// InitGoogleTest() has been called.  We don't protect this variable -// under a mutex as it is only accessed in the main thread. -GTEST_API_ int g_init_gtest_count = 0; -static bool GTestIsInitialized() { return g_init_gtest_count != 0; } +static bool GTestIsInitialized() { return GetArgvs().size() > 0; }  // Iterates over a vector of TestCases, keeping a running sum of the  // results of calling a given int-returning method on each. @@ -389,8 +383,16 @@ void AssertHelper::operator=(const Message& message) const {  // Mutex for linked pointers.  GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); -// Application pathname gotten in InitGoogleTest. -std::string g_executable_path; +// A copy of all command line arguments.  Set by InitGoogleTest(). +::std::vector<testing::internal::string> g_argvs; + +const ::std::vector<testing::internal::string>& GetArgvs() { +#if defined(GTEST_CUSTOM_GET_ARGVS_) +  return GTEST_CUSTOM_GET_ARGVS_(); +#else  // defined(GTEST_CUSTOM_GET_ARGVS_) +  return g_argvs; +#endif  // defined(GTEST_CUSTOM_GET_ARGVS_) +}  // Returns the current application's name, removing directory path if that  // is present. @@ -398,9 +400,9 @@ FilePath GetCurrentExecutableName() {    FilePath result;  #if GTEST_OS_WINDOWS -  result.Set(FilePath(g_executable_path).RemoveExtension("exe")); +  result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));  #else -  result.Set(FilePath(g_executable_path)); +  result.Set(FilePath(GetArgvs()[0]));  #endif  // GTEST_OS_WINDOWS    return result.RemoveDirectoryName(); @@ -5328,24 +5330,16 @@ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {  // wchar_t.  template <typename CharType>  void InitGoogleTestImpl(int* argc, CharType** argv) { -  g_init_gtest_count++; -    // We don't want to run the initialization code twice. -  if (g_init_gtest_count != 1) return; +  if (GTestIsInitialized()) return;    if (*argc <= 0) return; -  internal::g_executable_path = internal::StreamableToString(argv[0]); - -#if GTEST_HAS_DEATH_TEST -    g_argvs.clear();    for (int i = 0; i != *argc; i++) {      g_argvs.push_back(StreamableToString(argv[i]));    } -#endif  // GTEST_HAS_DEATH_TEST -    ParseGoogleTestFlagsOnly(argc, argv);    GetUnitTestImpl()->PostFlagParsingInit();  }  | 
