Merge pull request #1510 from gennadiycivil/master
More merges, restruct some
This commit is contained in:
		@@ -2675,7 +2675,8 @@ bool ParseInt32(const Message& src_text, const char* str, Int32* value);
 | 
			
		||||
// corresponding to the given Google Test flag.
 | 
			
		||||
bool BoolFromGTestEnv(const char* flag, bool default_val);
 | 
			
		||||
GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
 | 
			
		||||
std::string StringFromGTestEnv(const char* flag, const char* default_val);
 | 
			
		||||
std::string OutputFlagAlsoCheckEnvVar();
 | 
			
		||||
const char* StringFromGTestEnv(const char* flag, const char* default_val);
 | 
			
		||||
 | 
			
		||||
}  // namespace internal
 | 
			
		||||
}  // namespace testing
 | 
			
		||||
 
 | 
			
		||||
@@ -1185,11 +1185,12 @@ bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
 | 
			
		||||
bool BoolFromGTestEnv(const char* flag, bool default_value) {
 | 
			
		||||
#if defined(GTEST_GET_BOOL_FROM_ENV_)
 | 
			
		||||
  return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
 | 
			
		||||
#endif  // defined(GTEST_GET_BOOL_FROM_ENV_)
 | 
			
		||||
#else
 | 
			
		||||
  const std::string env_var = FlagToEnvVar(flag);
 | 
			
		||||
  const char* const string_value = posix::GetEnv(env_var.c_str());
 | 
			
		||||
  return string_value == NULL ?
 | 
			
		||||
      default_value : strcmp(string_value, "0") != 0;
 | 
			
		||||
#endif  // defined(GTEST_GET_BOOL_FROM_ENV_)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reads and returns a 32-bit integer stored in the environment
 | 
			
		||||
@@ -1198,7 +1199,7 @@ bool BoolFromGTestEnv(const char* flag, bool default_value) {
 | 
			
		||||
Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
 | 
			
		||||
#if defined(GTEST_GET_INT32_FROM_ENV_)
 | 
			
		||||
  return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
 | 
			
		||||
#endif  // defined(GTEST_GET_INT32_FROM_ENV_)
 | 
			
		||||
#else
 | 
			
		||||
  const std::string env_var = FlagToEnvVar(flag);
 | 
			
		||||
  const char* const string_value = posix::GetEnv(env_var.c_str());
 | 
			
		||||
  if (string_value == NULL) {
 | 
			
		||||
@@ -1216,37 +1217,36 @@ Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return result;
 | 
			
		||||
#endif  // defined(GTEST_GET_INT32_FROM_ENV_)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// As a special case for the 'output' flag, if GTEST_OUTPUT is not
 | 
			
		||||
// set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
 | 
			
		||||
// system.  The value of XML_OUTPUT_FILE is a filename without the
 | 
			
		||||
// "xml:" prefix of GTEST_OUTPUT.
 | 
			
		||||
// Note that this is meant to be called at the call site so it does
 | 
			
		||||
// not check that the flag is 'output'
 | 
			
		||||
// In essence this checks env. variable called XML_OUTPUT_FILE
 | 
			
		||||
// if it is set we prepend "xml:" to its value , if it not set we return ""
 | 
			
		||||
std::string OutputFlagAlsoCheckEnvVar(){
 | 
			
		||||
  std::string default_value_for_output_flag = "";
 | 
			
		||||
  const char* xml_output_file_env = posix::GetEnv("XML_OUTPUT_FILE");
 | 
			
		||||
  if (NULL != xml_output_file_env) {
 | 
			
		||||
    default_value_for_output_flag = std::string("xml:") + xml_output_file_env;
 | 
			
		||||
  }
 | 
			
		||||
  return default_value_for_output_flag;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Reads and returns the string environment variable corresponding to
 | 
			
		||||
// the given flag; if it's not set, returns default_value.
 | 
			
		||||
std::string StringFromGTestEnv(const char* flag, const char* default_value) {
 | 
			
		||||
const char* StringFromGTestEnv(const char* flag, const char* default_value) {
 | 
			
		||||
#if defined(GTEST_GET_STRING_FROM_ENV_)
 | 
			
		||||
  return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
 | 
			
		||||
#endif  // defined(GTEST_GET_STRING_FROM_ENV_)
 | 
			
		||||
#else
 | 
			
		||||
  const std::string env_var = FlagToEnvVar(flag);
 | 
			
		||||
  const char* value = posix::GetEnv(env_var.c_str());
 | 
			
		||||
  if (value != NULL) {
 | 
			
		||||
    return value;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // As a special case for the 'output' flag, if GTEST_OUTPUT is not
 | 
			
		||||
  // set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
 | 
			
		||||
  // system.  The value of XML_OUTPUT_FILE is a filename without the
 | 
			
		||||
  // "xml:" prefix of GTEST_OUTPUT.
 | 
			
		||||
  //
 | 
			
		||||
  // The net priority order after flag processing is thus:
 | 
			
		||||
  //   --gtest_output command line flag
 | 
			
		||||
  //   GTEST_OUTPUT environment variable
 | 
			
		||||
  //   XML_OUTPUT_FILE environment variable
 | 
			
		||||
  //   'default_value'
 | 
			
		||||
  if (strcmp(flag, "output") == 0) {
 | 
			
		||||
    value = posix::GetEnv("XML_OUTPUT_FILE");
 | 
			
		||||
    if (value != NULL) {
 | 
			
		||||
      return std::string("xml:") + value;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  return default_value;
 | 
			
		||||
  const char* const value = posix::GetEnv(env_var.c_str());
 | 
			
		||||
  return value == NULL ? default_value : value;
 | 
			
		||||
#endif  // defined(GTEST_GET_STRING_FROM_ENV_)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
}  // namespace internal
 | 
			
		||||
 
 | 
			
		||||
@@ -230,9 +230,15 @@ GTEST_DEFINE_string_(
 | 
			
		||||
GTEST_DEFINE_bool_(list_tests, false,
 | 
			
		||||
                   "List all tests without running them.");
 | 
			
		||||
 | 
			
		||||
// The net priority order after flag processing is thus:
 | 
			
		||||
//   --gtest_output command line flag
 | 
			
		||||
//   GTEST_OUTPUT environment variable
 | 
			
		||||
//   XML_OUTPUT_FILE environment variable
 | 
			
		||||
//   ''
 | 
			
		||||
GTEST_DEFINE_string_(
 | 
			
		||||
    output,
 | 
			
		||||
    internal::StringFromGTestEnv("output", ""),
 | 
			
		||||
    internal::StringFromGTestEnv("output",
 | 
			
		||||
      internal::OutputFlagAlsoCheckEnvVar().c_str()),
 | 
			
		||||
    "A format (defaults to \"xml\" but can be specified to be \"json\"), "
 | 
			
		||||
    "optionally followed by a colon and an output file name or directory. "
 | 
			
		||||
    "A directory is indicated by a trailing pathname separator. "
 | 
			
		||||
 
 | 
			
		||||
@@ -81,13 +81,14 @@ def TestFlag(flag, test_val, default_val):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class GTestEnvVarTest(gtest_test_utils.TestCase):
 | 
			
		||||
 | 
			
		||||
  def testEnvVarAffectsFlag(self):
 | 
			
		||||
    """Tests that environment variable should affect the corresponding flag."""
 | 
			
		||||
 | 
			
		||||
    TestFlag('break_on_failure', '1', '0')
 | 
			
		||||
    TestFlag('color', 'yes', 'auto')
 | 
			
		||||
    TestFlag('filter', 'FooTest.Bar', '*')
 | 
			
		||||
    SetEnvVar('XML_OUTPUT_FILE', None) # For 'output' test
 | 
			
		||||
    SetEnvVar('XML_OUTPUT_FILE', None)  # For 'output' test
 | 
			
		||||
    TestFlag('output', 'xml:tmp/foo.xml', '')
 | 
			
		||||
    TestFlag('print_time', '0', '1')
 | 
			
		||||
    TestFlag('repeat', '999', '1')
 | 
			
		||||
@@ -107,7 +108,7 @@ class GTestEnvVarTest(gtest_test_utils.TestCase):
 | 
			
		||||
    AssertEq('xml:tmp/bar.xml', GetFlag('output'))
 | 
			
		||||
 | 
			
		||||
  def testXmlOutputFileOverride(self):
 | 
			
		||||
    """Tests that $XML_OUTPUT_FILE is overridden by $GTEST_OUTPUT"""
 | 
			
		||||
    """Tests that $XML_OUTPUT_FILE is overridden by $GTEST_OUTPUT."""
 | 
			
		||||
 | 
			
		||||
    SetEnvVar('GTEST_OUTPUT', 'xml:tmp/foo.xml')
 | 
			
		||||
    SetEnvVar('XML_OUTPUT_FILE', 'tmp/bar.xml')
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user