bool BoolFromGTestEnv(const char* flag, bool default_val);
GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
const char* StringFromGTestEnv(const char* flag, const char* default_val);
+std::string OutputFromGTestEnv(const char * default_val);
} // namespace internal
} // namespace testing
#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
-
return value == NULL ? default_value : value;
}
+// Reads and returns GTEST_OUTPUT and/or XML_OUTPUT_FILE environment
+// variables; if neither is set, returns default value.
+// XML_OUTPUT_FILE is set by the Bazel build system, and its format is
+// a filename without the "xml:" prefix of GTEST_OUTPUT.
+std::string OutputFromGTestEnv(const char* default_value) {
+#if defined(GTEST_GET_STRING_FROM_ENV_)
+ return GTEST_GET_STRING_FROM_ENV_("output", default_value);
+#endif // defined(GTEST_GET_STRING_FROM_ENV_)
+ const char* value = StringFromGTestEnv("output", NULL);
+ if (value) {
+ return value;
+ }
+ value = posix::GetEnv("XML_OUTPUT_FILE");
+ if (value) {
+ return std::string("xml:") + value;
+ }
+ return default_value;
+}
+
} // namespace internal
} // namespace testing
GTEST_DEFINE_string_(
output,
- internal::StringFromGTestEnv("output", ""),
+ internal::OutputFromGTestEnv(""),
"A format (currently must be \"xml\"), optionally followed "
"by a colon and an output file name or directory. A directory "
"is indicated by a trailing pathname separator. "
TestFlag('death_test_use_fork', '1', '0')
TestFlag('stack_trace_depth', '0', '100')
+ def testXmlOutputFile(self):
+ """Test that $XML_OUTPUT_FILE affects the output flag."""
+
+ # $XML_OUTPUT_FILE sets output flag
+ SetEnvVar('XML_OUTPUT_FILE', 'tmp/bar.xml')
+ AssertEq('xml:tmp/bar.xml', GetFlag('output'))
+ # $XML_OUTPUT_FILE is overridden by $GTEST_OUTPUT
+ SetEnvVar('GTEST_OUTPUT', 'xml:tmp/foo.xml')
+ AssertEq('xml:tmp/foo.xml', GetFlag('output'))
+ # If neither set, flag has default value
+ SetEnvVar('XML_OUTPUT_FILE', None)
+ SetEnvVar('GTEST_OUTPUT', None)
+ AssertEq('', GetFlag('output'))
if __name__ == '__main__':
gtest_test_utils.Main()