• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
SaveEnvironmentVariable(std::string 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().
RestoreEnvironmentVariable()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.
TEST_F(ChromeLoggingTest,LogFileName)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.
TEST_F(ChromeLoggingTest,EnvironmentLogFileName)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