1 // 2 // Copyright 2022 gRPC authors. 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #ifndef GRPC_TEST_CORE_UTIL_SCOPED_ENV_VAR_H 18 #define GRPC_TEST_CORE_UTIL_SCOPED_ENV_VAR_H 19 20 #include <grpc/support/port_platform.h> 21 22 #include "src/core/lib/gprpp/env.h" 23 24 namespace grpc_core { 25 namespace testing { 26 27 class ScopedEnvVar { 28 public: ScopedEnvVar(const char * env_var,const char * value)29 ScopedEnvVar(const char* env_var, const char* value) : env_var_(env_var) { 30 SetEnv(env_var_, value); 31 } 32 ~ScopedEnvVar()33 virtual ~ScopedEnvVar() { UnsetEnv(env_var_); } 34 35 private: 36 const char* env_var_; 37 }; 38 39 class ScopedExperimentalEnvVar : public ScopedEnvVar { 40 public: ScopedExperimentalEnvVar(const char * env_var)41 explicit ScopedExperimentalEnvVar(const char* env_var) 42 : ScopedEnvVar(env_var, "true") {} 43 }; 44 45 } // namespace testing 46 } // namespace grpc_core 47 48 #endif // GRPC_TEST_CORE_UTIL_SCOPED_ENV_VAR_H 49