Skip to content

Commit

Permalink
Polish blaze_util.cc
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 164850909
lfpino authored and hlopko committed Aug 11, 2017

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent db55b5a commit 4ed3db6
Showing 3 changed files with 70 additions and 4 deletions.
18 changes: 16 additions & 2 deletions src/main/cpp/blaze_util.cc
Original file line number Diff line number Diff line change
@@ -103,10 +103,15 @@ const char* SearchUnaryOption(const vector<string>& args,
return GetUnaryOption(args[i].c_str(), NULL, key);
}

bool SearchNullaryOption(const vector<string>& args, const char *key) {
static bool SearchNullaryOption(const vector<string>& args,
const char *key,
const bool include_positional_params) {
for (vector<string>::size_type i = 0; i < args.size(); i++) {
if (args[i] == "--") {
return false;
if (!include_positional_params) {
return false;
}
continue;
}
if (GetNullaryOption(args[i].c_str(), key)) {
return true;
@@ -115,6 +120,15 @@ bool SearchNullaryOption(const vector<string>& args, const char *key) {
return false;
}

bool SearchNullaryOption(const vector<string>& args, const char *key) {
return SearchNullaryOption(args, key, false);
}

bool SearchNullaryOptionEverywhere(const vector<string>& args,
const char *key) {
return SearchNullaryOption(args, key, true);
}

bool VerboseLogging() { return !GetEnv("VERBOSE_BLAZE_CLIENT").empty(); }

// Read the Jvm version from a file descriptor. The read fd
13 changes: 11 additions & 2 deletions src/main/cpp/blaze_util.h
Original file line number Diff line number Diff line change
@@ -57,12 +57,21 @@ bool GetNullaryOption(const char *arg, const char *key);
const char* SearchUnaryOption(const std::vector<std::string>& args,
const char* key);

// Searches for 'key' in 'args' using GetNullaryOption. Arguments found after
// '--' are omitted from the search.
// Searches for 'key' in 'args' using GetNullaryOption.
// Unlike SearchNullaryOptionEverywhere, arguments found after '--' are omitted
// from the search.
// Returns true iff key is a flag in args.
bool SearchNullaryOption(const std::vector<std::string>& args,
const char* key);

// Searches for 'key' in 'args' using GetNullaryOption.
// Unlike SearchNullaryOption, arguments found after '--' are included in the
// search.
// Returns true iff key is a flag in args.
bool SearchNullaryOptionEverywhere(const std::vector<std::string>& args,
const char* key);


// Enable messages mostly of interest to developers.
bool VerboseLogging();

43 changes: 43 additions & 0 deletions src/test/cpp/blaze_util_test.cc
Original file line number Diff line number Diff line change
@@ -202,6 +202,49 @@ TEST_F(BlazeUtilTest, TestSearchNullarySucceedsWithEqualsAndDashDash) {
{"bazel", "build", ":target", "--", "--flag=value"}, "--flag"));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereEmptyCase) {
ASSERT_FALSE(SearchNullaryOptionEverywhere({}, "--flag"));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereForEmpty) {
ASSERT_FALSE(SearchNullaryOptionEverywhere(
{"bazel", "build", ":target", "--"}, ""));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereForFlagNotPresent) {
ASSERT_FALSE(SearchNullaryOptionEverywhere(
{"bazel", "build", ":target", "--"}, "--flag"));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereStartupOption) {
ASSERT_TRUE(SearchNullaryOptionEverywhere(
{"bazel", "--flag", "build", ":target", "--"}, "--flag"));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereStartupOptionWithEquals) {
ASSERT_DEATH(SearchNullaryOptionEverywhere(
{"bazel", "--flag=value", "build", ":target", "--"}, "--flag"),
"In argument '--flag=value': option "
"'--flag' does not take a value");
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereCommandOption) {
ASSERT_TRUE(SearchNullaryOptionEverywhere(
{"bazel", "build", ":target", "--flag"}, "--flag"));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereReadsAfterPositionalParams) {
ASSERT_TRUE(SearchNullaryOptionEverywhere(
{"bazel", "build", ":target", "--", "--flag"}, "--flag"));
}

TEST_F(BlazeUtilTest, TestSearchNullaryEverywhereFailsAfterPositionalParams) {
ASSERT_DEATH(SearchNullaryOptionEverywhere(
{"bazel", "build", ":target", "--", "--flag=value"}, "--flag"),
"In argument '--flag=value': option "
"'--flag' does not take a value");
}

TEST_F(BlazeUtilTest, TestSearchUnaryForEmpty) {
ASSERT_STREQ(nullptr, SearchUnaryOption({"bazel", "build", ":target"}, ""));
}

0 comments on commit 4ed3db6

Please sign in to comment.