diff options
Diffstat (limited to 'lldb/unittests/Interpreter/TestArgs.cpp')
-rw-r--r-- | lldb/unittests/Interpreter/TestArgs.cpp | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/lldb/unittests/Interpreter/TestArgs.cpp b/lldb/unittests/Interpreter/TestArgs.cpp index 1dbcad15573..3d1153efff5 100644 --- a/lldb/unittests/Interpreter/TestArgs.cpp +++ b/lldb/unittests/Interpreter/TestArgs.cpp @@ -11,6 +11,9 @@ #include "lldb/Interpreter/Args.h" +#include <limits> +#include <sstream> + using namespace lldb_private; TEST(ArgsTest, TestSingleArg) { @@ -153,3 +156,85 @@ TEST(ArgsTest, StringToScriptLanguage) { } TEST(ArgsTest, StringToVersion) {} + +// Environment Variable Tests + +class EnvVarFixture: public ::testing::Test { +protected: + + void SetUp() { + args.AppendArgument(llvm::StringRef("Arg1=foo")); + args.AppendArgument(llvm::StringRef("Arg2")); + args.AppendArgument(llvm::StringRef("Arg3=bar")); + } + + size_t GetIndexForEnvVar(llvm::StringRef envvar_name) { + size_t argument_index = std::numeric_limits<size_t>::max(); + EXPECT_TRUE(args.ContainsEnvironmentVariable(envvar_name, + &argument_index)); + EXPECT_LT(argument_index, args.GetArgumentCount()); + return argument_index; + } + + Args args; +}; + + +TEST_F(EnvVarFixture, TestContainsEnvironmentVariableNoValue) { + EXPECT_TRUE(args.ContainsEnvironmentVariable(llvm::StringRef("Arg2"))); +} + +TEST_F(EnvVarFixture, TestContainsEnvironmentVariableWithValue) { + EXPECT_TRUE(args.ContainsEnvironmentVariable(llvm::StringRef("Arg3"))); +} + +TEST_F(EnvVarFixture, TestContainsEnvironmentVariableNonExistentVariable) { + auto nonexistent_envvar = llvm::StringRef("ThisEnvVarShouldNotExist"); + EXPECT_FALSE(args.ContainsEnvironmentVariable(nonexistent_envvar)); +} + +TEST_F(EnvVarFixture, TestReplaceEnvironmentVariableInitialNoValueWithNoValue) { + auto envvar_name = llvm::StringRef("Arg2"); + auto argument_index = GetIndexForEnvVar(envvar_name); + + args.AddOrReplaceEnvironmentVariable(envvar_name, llvm::StringRef("")); + EXPECT_TRUE(args.ContainsEnvironmentVariable(envvar_name)); + EXPECT_EQ(envvar_name, args.GetArgumentAtIndex(argument_index)); +} + +TEST_F(EnvVarFixture, TestReplaceEnvironmentVariableInitialNoValueWithValue) { + auto envvar_name = llvm::StringRef("Arg2"); + auto argument_index = GetIndexForEnvVar(envvar_name); + + auto new_value = llvm::StringRef("NewValue"); + args.AddOrReplaceEnvironmentVariable(envvar_name, new_value); + EXPECT_TRUE(args.ContainsEnvironmentVariable(envvar_name)); + + std::stringstream stream; + stream << envvar_name.str() << '=' << new_value.str(); + EXPECT_EQ(llvm::StringRef(stream.str()), + args.GetArgumentAtIndex(argument_index)); +} + +TEST_F(EnvVarFixture, TestReplaceEnvironmentVariableInitialValueWithNoValue) { + auto envvar_name = llvm::StringRef("Arg1"); + auto argument_index = GetIndexForEnvVar(envvar_name); + + args.AddOrReplaceEnvironmentVariable(envvar_name, llvm::StringRef("")); + EXPECT_TRUE(args.ContainsEnvironmentVariable(envvar_name)); + EXPECT_EQ(envvar_name, args.GetArgumentAtIndex(argument_index)); +} + +TEST_F(EnvVarFixture, TestReplaceEnvironmentVariableInitialValueWithValue) { + auto envvar_name = llvm::StringRef("Arg1"); + auto argument_index = GetIndexForEnvVar(envvar_name); + + auto new_value = llvm::StringRef("NewValue"); + args.AddOrReplaceEnvironmentVariable(envvar_name, new_value); + EXPECT_TRUE(args.ContainsEnvironmentVariable(envvar_name)); + + std::stringstream stream; + stream << envvar_name.str() << '=' << new_value.str(); + EXPECT_EQ(llvm::StringRef(stream.str()), + args.GetArgumentAtIndex(argument_index)); +} |