aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/cpp
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2018-01-24 07:43:32 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-24 07:45:06 -0800
commit1b3569aec8c823cd88fb9eb03a6b6864951976fe (patch)
treed7eb528e31b1ed8bbf09339b08fbfb4af7960ca4 /src/test/cpp
parentf48a935e72ba9497623a5cc2c914d521feb34fcf (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.cc29
-rw-r--r--src/test/cpp/option_processor_test.cc32
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 =