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