summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorvladlosev <vladlosev@861a406c-534a-0410-8894-cb66d6ee9925>2009-10-22 01:22:29 (GMT)
committervladlosev <vladlosev@861a406c-534a-0410-8894-cb66d6ee9925>2009-10-22 01:22:29 (GMT)
commit6bfc4b2bd378940fa006bd32b9667ad4137d8f15 (patch)
treeb4a2c212be4354c69b6a87e66295bebacda1a7bf /src
parentbad778caa39a88b7c11b159e20730aeec4fd711e (diff)
downloadgoogletest-6bfc4b2bd378940fa006bd32b9667ad4137d8f15.zip
googletest-6bfc4b2bd378940fa006bd32b9667ad4137d8f15.tar.gz
googletest-6bfc4b2bd378940fa006bd32b9667ad4137d8f15.tar.bz2
Prints help when encountering unrecognized Google Test flags.
Diffstat (limited to 'src')
-rw-r--r--src/gtest.cc32
1 files changed, 31 insertions, 1 deletions
diff --git a/src/gtest.cc b/src/gtest.cc
index 5efb5ba..ca27b31 100644
--- a/src/gtest.cc
+++ b/src/gtest.cc
@@ -4444,6 +4444,33 @@ bool ParseStringFlag(const char* str, const char* flag, String* value) {
return true;
}
+// Determines whether a string pointed by *str has the prefix parameter as
+// its prefix and advances it to point past the prefix if it does.
+bool SkipPrefix(const char* prefix, const char** str) {
+ const int prefix_len = strlen(prefix);
+
+ if (strncmp(*str, prefix, prefix_len) != 0)
+ return false;
+
+ *str += prefix_len;
+ return true;
+}
+
+// Determines whether a string has a prefix that Google Test uses for its
+// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
+// If Google Test detects that a command line flag has its prefix but is not
+// recognized, it will print its help message. Flags starting with
+// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
+// internal flags and do not trigger the help message.
+bool HasGoogleTestFlagPrefix(const char* str) {
+ return (SkipPrefix("--", &str) ||
+ SkipPrefix("-", &str) ||
+ SkipPrefix("/", &str)) &&
+ !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
+ (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
+ SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str));
+}
+
// Prints a string containing code-encoded text. The following escape
// sequences can be used in the string to control the text color:
//
@@ -4601,7 +4628,10 @@ void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
// an element.
i--;
} else if (arg_string == "--help" || arg_string == "-h" ||
- arg_string == "-?" || arg_string == "/?") {
+ arg_string == "-?" || arg_string == "/?" ||
+ HasGoogleTestFlagPrefix(arg)) {
+ // Both help flag and unrecognized Google Test flags (excluding
+ // internal ones) trigger help display.
g_help_flag = true;
}
}