Home | History | Annotate | Download | only in browser
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "base/environment.h"
      6 #include "base/files/file_path.h"
      7 #include "base/memory/scoped_ptr.h"
      8 #include "chrome/common/env_vars.h"
      9 #include "chrome/common/logging_chrome.h"
     10 #include "testing/gtest/include/gtest/gtest.h"
     11 
     12 class ChromeLoggingTest : public testing::Test {
     13  public:
     14   // Stores the current value of the log file name environment
     15   // variable and sets the variable to new_value.
     16   void SaveEnvironmentVariable(std::string new_value) {
     17     scoped_ptr<base::Environment> env(base::Environment::Create());
     18     if (!env->GetVar(env_vars::kLogFileName, &environment_filename_))
     19       environment_filename_ = "";
     20 
     21     env->SetVar(env_vars::kLogFileName, new_value);
     22   }
     23 
     24   // Restores the value of the log file nave environment variable
     25   // previously saved by SaveEnvironmentVariable().
     26   void RestoreEnvironmentVariable() {
     27     scoped_ptr<base::Environment> env(base::Environment::Create());
     28     env->SetVar(env_vars::kLogFileName, environment_filename_);
     29   }
     30 
     31  private:
     32   std::string environment_filename_;  // Saves real environment value.
     33 };
     34 
     35 // Tests the log file name getter without an environment variable.
     36 TEST_F(ChromeLoggingTest, LogFileName) {
     37   SaveEnvironmentVariable(std::string());
     38 
     39   base::FilePath filename = logging::GetLogFileName();
     40   ASSERT_NE(base::FilePath::StringType::npos,
     41             filename.value().find(FILE_PATH_LITERAL("chrome_debug.log")));
     42 
     43   RestoreEnvironmentVariable();
     44 }
     45 
     46 // Tests the log file name getter with an environment variable.
     47 TEST_F(ChromeLoggingTest, EnvironmentLogFileName) {
     48   SaveEnvironmentVariable("test value");
     49 
     50   base::FilePath filename = logging::GetLogFileName();
     51   ASSERT_EQ(base::FilePath(FILE_PATH_LITERAL("test value")).value(),
     52             filename.value());
     53 
     54   RestoreEnvironmentVariable();
     55 }
     56