// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/test/scoped_environment_variable_override.h" #include "base/environment.h" namespace base { namespace test { ScopedEnvironmentVariableOverride::ScopedEnvironmentVariableOverride( const std::string& variable_name, const std::string& value) : environment_(Environment::Create()), variable_name_(variable_name), overridden_(false), was_set_(false) { was_set_ = environment_->GetVar(variable_name, &old_value_); overridden_ = environment_->SetVar(variable_name, value); } ScopedEnvironmentVariableOverride::~ScopedEnvironmentVariableOverride() { if (overridden_) { if (was_set_) environment_->SetVar(variable_name_, old_value_); else environment_->UnSetVar(variable_name_); } } } // namespace test } // namespace base