123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- //===- llvm/unittest/Support/CommandLineTest.cpp - CommandLine tests ------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is distributed under the University of Illinois Open Source
- // License. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #include "llvm/Support/CommandLine.h"
- #include "llvm/Config/config.h"
- #include "gtest/gtest.h"
- #include <stdlib.h>
- #include <string>
- using namespace llvm;
- namespace {
- class TempEnvVar {
- public:
- TempEnvVar(const char *name, const char *value)
- : name(name) {
- const char *old_value = getenv(name);
- EXPECT_EQ(NULL, old_value) << old_value;
- #if HAVE_SETENV
- setenv(name, value, true);
- #else
- # define SKIP_ENVIRONMENT_TESTS
- #endif
- }
- ~TempEnvVar() {
- #if HAVE_SETENV
- // Assume setenv and unsetenv come together.
- unsetenv(name);
- #endif
- }
- private:
- const char *const name;
- };
- #ifndef SKIP_ENVIRONMENT_TESTS
- const char test_env_var[] = "LLVM_TEST_COMMAND_LINE_FLAGS";
- cl::opt<std::string> EnvironmentTestOption("env-test-opt");
- TEST(CommandLineTest, ParseEnvironment) {
- TempEnvVar TEV(test_env_var, "-env-test-opt=hello");
- EXPECT_EQ("", EnvironmentTestOption);
- cl::ParseEnvironmentOptions("CommandLineTest", test_env_var);
- EXPECT_EQ("hello", EnvironmentTestOption);
- }
- // This test used to make valgrind complain
- // ("Conditional jump or move depends on uninitialised value(s)")
- TEST(CommandLineTest, ParseEnvironmentToLocalVar) {
- // Put cl::opt on stack to check for proper initialization of fields.
- cl::opt<std::string> EnvironmentTestOptionLocal("env-test-opt-local");
- TempEnvVar TEV(test_env_var, "-env-test-opt-local=hello-local");
- EXPECT_EQ("", EnvironmentTestOptionLocal);
- cl::ParseEnvironmentOptions("CommandLineTest", test_env_var);
- EXPECT_EQ("hello-local", EnvironmentTestOptionLocal);
- }
- #endif // SKIP_ENVIRONMENT_TESTS
- } // anonymous namespace
|