parent
84471565eb
commit
9285b4b21c
@ -174,16 +174,6 @@ bool ParseFlagsFromEnv(const std::vector<tensorflow::Flag>& flag_list) {
|
|||||||
SetArgvFromEnv(env_argv); // a no-op if already initialized
|
SetArgvFromEnv(env_argv); // a no-op if already initialized
|
||||||
bool result =
|
bool result =
|
||||||
tensorflow::Flags::Parse(&env_argv->argc, &env_argv->argv[0], flag_list);
|
tensorflow::Flags::Parse(&env_argv->argc, &env_argv->argv[0], flag_list);
|
||||||
|
|
||||||
// Fail if any flags were not recognized, ignoring argv[0], which
|
|
||||||
// SetArgvFromEnv ensures is always present.
|
|
||||||
if (result && env_argv->argc > 1) {
|
|
||||||
result = false;
|
|
||||||
for (int64 i = 1; i < env_argv->argc; ++i) {
|
|
||||||
LOG(ERROR) << "Unrecognized TF_XLA_FLAGS flag: " << env_argv->argv[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
env_argv_mu.unlock();
|
env_argv_mu.unlock();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,19 @@ static void TestParseFlagsFromEnv(const char* msg) {
|
|||||||
std::vector<char*>* pargv;
|
std::vector<char*>* pargv;
|
||||||
ResetFlagsFromEnvForTesting(&pargc, &pargv);
|
ResetFlagsFromEnvForTesting(&pargc, &pargv);
|
||||||
|
|
||||||
|
// Ensure that environment variable can be parsed when
|
||||||
|
// no flags are expected.
|
||||||
|
std::vector<tensorflow::Flag> empty_flag_list;
|
||||||
|
bool parsed_ok = ParseFlagsFromEnv(empty_flag_list);
|
||||||
|
CHECK(parsed_ok) << msg;
|
||||||
|
const std::vector<char*>& argv_first = *pargv;
|
||||||
|
CHECK_NE(argv_first[0], nullptr) << msg;
|
||||||
|
int i = 0;
|
||||||
|
while (argv_first[i] != nullptr) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
CHECK_EQ(i, *pargc) << msg;
|
||||||
|
|
||||||
// Check that actual flags can be parsed.
|
// Check that actual flags can be parsed.
|
||||||
bool simple = false;
|
bool simple = false;
|
||||||
string with_value;
|
string with_value;
|
||||||
@ -53,7 +66,7 @@ static void TestParseFlagsFromEnv(const char* msg) {
|
|||||||
tensorflow::Flag("single_quoted", &single_quoted, ""),
|
tensorflow::Flag("single_quoted", &single_quoted, ""),
|
||||||
tensorflow::Flag("double_quoted", &double_quoted, ""),
|
tensorflow::Flag("double_quoted", &double_quoted, ""),
|
||||||
};
|
};
|
||||||
bool parsed_ok = ParseFlagsFromEnv(flag_list);
|
parsed_ok = ParseFlagsFromEnv(flag_list);
|
||||||
CHECK_EQ(*pargc, 1) << msg;
|
CHECK_EQ(*pargc, 1) << msg;
|
||||||
const std::vector<char*>& argv_second = *pargv;
|
const std::vector<char*>& argv_second = *pargv;
|
||||||
CHECK_NE(argv_second[0], nullptr) << msg;
|
CHECK_NE(argv_second[0], nullptr) << msg;
|
||||||
@ -81,21 +94,6 @@ TEST(ParseFlagsFromEnv, Basic) {
|
|||||||
TestParseFlagsFromEnv("(flags in environment variable)");
|
TestParseFlagsFromEnv("(flags in environment variable)");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test that the environent variable is parsed correctly.
|
|
||||||
TEST(ParseFlagsFromEnv, UnrecognizedFlag) {
|
|
||||||
// Prepare environment.
|
|
||||||
setenv("TF_XLA_FLAGS", "--simple=xyz --foobar", true /*overwrite*/);
|
|
||||||
int* pargc;
|
|
||||||
std::vector<char*>* pargv;
|
|
||||||
ResetFlagsFromEnvForTesting(&pargc, &pargv);
|
|
||||||
|
|
||||||
string simple;
|
|
||||||
std::vector<tensorflow::Flag> flag_list = {
|
|
||||||
tensorflow::Flag("simple", &simple, ""),
|
|
||||||
};
|
|
||||||
EXPECT_FALSE(ParseFlagsFromEnv(flag_list));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Test that a file named by the environent variable is parsed correctly.
|
// Test that a file named by the environent variable is parsed correctly.
|
||||||
TEST(ParseFlagsFromEnv, File) {
|
TEST(ParseFlagsFromEnv, File) {
|
||||||
// environment variables where tmp dir may be specified.
|
// environment variables where tmp dir may be specified.
|
||||||
|
Loading…
Reference in New Issue
Block a user