diff options
author | ajmichael <ajmichael@google.com> | 2018-01-24 07:43:32 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-01-24 07:45:06 -0800 |
commit | 1b3569aec8c823cd88fb9eb03a6b6864951976fe (patch) | |
tree | d7eb528e31b1ed8bbf09339b08fbfb4af7960ca4 /src/test/cpp | |
parent | f48a935e72ba9497623a5cc2c914d521feb34fcf (diff) |
Support negated flags in SearchNullaryOption with last-wins semantics.
`blaze --nomaster_bazelrc --master_bazelrc` now uses the master bazelrc.
RELNOTES: None
PiperOrigin-RevId: 183083839
Diffstat (limited to 'src/test/cpp')
-rw-r--r-- | src/test/cpp/blaze_util_test.cc | 29 | ||||
-rw-r--r-- | src/test/cpp/option_processor_test.cc | 32 |
2 files changed, 53 insertions, 8 deletions
diff --git a/src/test/cpp/blaze_util_test.cc b/src/test/cpp/blaze_util_test.cc index 6f9b44fd14..51f2b917f4 100644 --- a/src/test/cpp/blaze_util_test.cc +++ b/src/test/cpp/blaze_util_test.cc @@ -159,7 +159,8 @@ TEST_F(BlazeUtilTest, ReadJvmVersion) { } TEST_F(BlazeUtilTest, TestSearchNullaryEmptyCase) { - ASSERT_FALSE(SearchNullaryOption({}, "--flag")); + ASSERT_FALSE(SearchNullaryOption({}, "flag", false)); + ASSERT_TRUE(SearchNullaryOption({}, "flag", true)); } TEST_F(BlazeUtilTest, TestSearchUnaryEmptyCase) { @@ -167,39 +168,51 @@ TEST_F(BlazeUtilTest, TestSearchUnaryEmptyCase) { } TEST_F(BlazeUtilTest, TestSearchNullaryForEmpty) { - ASSERT_FALSE(SearchNullaryOption({"bazel", "build", ":target"}, "")); + ASSERT_TRUE(SearchNullaryOption({"bazel", "build", ":target"}, "", true)); + ASSERT_FALSE(SearchNullaryOption({"bazel", "build", ":target"}, "", false)); } TEST_F(BlazeUtilTest, TestSearchNullaryForFlagNotPresent) { ASSERT_FALSE(SearchNullaryOption({"bazel", "build", ":target"}, - "--flag")); + "flag", false)); + ASSERT_TRUE(SearchNullaryOption({"bazel", "build", ":target"}, + "flag", true)); } TEST_F(BlazeUtilTest, TestSearchNullaryStartupOption) { ASSERT_TRUE(SearchNullaryOption({"bazel", "--flag", "build", ":target"}, - "--flag")); + "flag", false)); + ASSERT_TRUE(SearchNullaryOption({"bazel", "--flag", "build", ":target"}, + "flag", true)); } TEST_F(BlazeUtilTest, TestSearchNullaryStartupOptionWithEquals) { ASSERT_DEATH(SearchNullaryOption( - {"bazel", "--flag=value", "build", ":target"}, "--flag"), + {"bazel", "--flag=value", "build", ":target"}, "flag", false), "In argument '--flag=value': option " "'--flag' does not take a value"); } TEST_F(BlazeUtilTest, TestSearchNullaryCommandOption) { ASSERT_TRUE(SearchNullaryOption({"bazel", "build", ":target", "--flag"}, - "--flag")); + "flag", false)); } TEST_F(BlazeUtilTest, TestSearchNullarySkipsAfterDashDash) { ASSERT_FALSE(SearchNullaryOption( - {"bazel", "build", ":target", "--", "--flag"}, "--flag")); + {"bazel", "build", ":target", "--", "--flag"}, "flag", false)); } TEST_F(BlazeUtilTest, TestSearchNullarySucceedsWithEqualsAndDashDash) { ASSERT_FALSE(SearchNullaryOption( - {"bazel", "build", ":target", "--", "--flag=value"}, "--flag")); + {"bazel", "build", ":target", "--", "--flag=value"}, "flag", false)); +} + +TEST_F(BlazeUtilTest, TestSearchNullaryLastFlagWins) { + ASSERT_FALSE(SearchNullaryOption( + {"bazel", "--flag", "--noflag", "build"}, "flag", false)); + ASSERT_FALSE(SearchNullaryOption( + {"bazel", "--flag", "--noflag", "build"}, "flag", true)); } TEST_F(BlazeUtilTest, TestSearchUnaryForEmpty) { diff --git a/src/test/cpp/option_processor_test.cc b/src/test/cpp/option_processor_test.cc index 88fb52f42c..7a3d7782d8 100644 --- a/src/test/cpp/option_processor_test.cc +++ b/src/test/cpp/option_processor_test.cc @@ -244,6 +244,38 @@ TEST_F(OptionProcessorTest, NoMasterBazelrcAndBazelrcWorkTogetherCorrectly) { output); } +TEST_F(OptionProcessorTest, MasterBazelrcOverridesNoMasterBazelrc) { + const std::string master_rc_path = + blaze_util::JoinPath(workspace_, "tools/bazel.rc"); + ASSERT_TRUE(blaze_util::MakeDirectories( + blaze_util::Dirname(master_rc_path), 0755)); + ASSERT_TRUE(blaze_util::WriteFile("startup --max_idle_secs=123", + master_rc_path, 0755)); + + const std::vector<std::string> args = + {"bazel", "--nomaster_bazelrc", "--master_bazelrc", "build"}; + std::string error; + ASSERT_EQ(blaze_exit_code::SUCCESS, + option_processor_->ParseOptions(args, workspace_, cwd_, &error)) + << error; + EXPECT_EQ(123, option_processor_->GetParsedStartupOptions()->max_idle_secs); + + // Check that the startup option option provenance message prints the correct + // information for the master bazelrc. + testing::internal::CaptureStderr(); + option_processor_->PrintStartupOptionsProvenanceMessage(); + const std::string& output = testing::internal::GetCapturedStderr(); + + EXPECT_PRED1( + [](std::string actualOutput) { + return RE2::FullMatch( + actualOutput, + "INFO: Reading 'startup' options from .*/tools/bazel.rc: " + "--max_idle_secs=123\n"); + }, + output); +} + TEST_F(OptionProcessorTest, MultipleStartupArgsInMasterBazelrcWorksCorrectly) { // Add startup flags to the master bazelrc. const std::string master_rc_path = |