diff options
author | Doug Greiman <dgreiman@google.com> | 2016-02-24 02:50:08 (GMT) |
---|---|---|
committer | Doug Greiman <dgreiman@google.com> | 2016-02-24 02:50:08 (GMT) |
commit | d6790f26cae2ced1ebdd35f9fa61893e9cee1007 (patch) | |
tree | f2a380e296b920b1d4b975d1c71092a7f5a4a7ba /googletest | |
parent | ff5ffd457e032c8be8a64a7a94c824063c8b11e3 (diff) | |
download | googletest-d6790f26cae2ced1ebdd35f9fa61893e9cee1007.zip googletest-d6790f26cae2ced1ebdd35f9fa61893e9cee1007.tar.gz googletest-d6790f26cae2ced1ebdd35f9fa61893e9cee1007.tar.bz2 |
Read Bazel's $XML_OUTPUT_FILE environment variable
If $XML_OUTPUT_FILE is set, and $GTEST_OUTPUT and --gtest_output are not
specified, produce output as if GTEST_OUTPUT=xml:$XML_OUTPUT_FILE had
been set.
Diffstat (limited to 'googletest')
-rw-r--r-- | googletest/include/gtest/internal/gtest-port.h | 2 | ||||
-rw-r--r-- | googletest/src/gtest-port.cc | 19 | ||||
-rw-r--r-- | googletest/src/gtest.cc | 2 | ||||
-rwxr-xr-x | googletest/test/gtest_env_var_test.py | 13 |
4 files changed, 34 insertions, 2 deletions
diff --git a/googletest/include/gtest/internal/gtest-port.h b/googletest/include/gtest/internal/gtest-port.h index 7d6e465..236aaea 100644 --- a/googletest/include/gtest/internal/gtest-port.h +++ b/googletest/include/gtest/internal/gtest-port.h @@ -2547,9 +2547,9 @@ bool ParseInt32(const Message& src_text, const char* str, Int32* value); 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_ - diff --git a/googletest/src/gtest-port.cc b/googletest/src/gtest-port.cc index 0162fac..05ffca0 100644 --- a/googletest/src/gtest-port.cc +++ b/googletest/src/gtest-port.cc @@ -1235,5 +1235,24 @@ const char* StringFromGTestEnv(const char* flag, const char* default_value) { 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 diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index 2bac245..5509f09 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -237,7 +237,7 @@ GTEST_DEFINE_bool_(list_tests, false, 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. " diff --git a/googletest/test/gtest_env_var_test.py b/googletest/test/gtest_env_var_test.py index 1fc6ebe..13afb2b 100755 --- a/googletest/test/gtest_env_var_test.py +++ b/googletest/test/gtest_env_var_test.py @@ -98,6 +98,19 @@ class GTestEnvVarTest(gtest_test_utils.TestCase): 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() |