?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. #!/usr/bin/env python
  2. #
  3. # Copyright 2008, Google Inc.
  4. # All rights reserved.
  5. #
  6. # Redistribution and use in source and binary forms, with or without
  7. # modification, are permitted provided that the following conditions are
  8. # met:
  9. #
  10. #     * Redistributions of source code must retain the above copyright
  11. # notice, this list of conditions and the following disclaimer.
  12. #     * Redistributions in binary form must reproduce the above
  13. # copyright notice, this list of conditions and the following disclaimer
  14. # in the documentation and/or other materials provided with the
  15. # distribution.
  16. #     * Neither the name of Google Inc. nor the names of its
  17. # contributors may be used to endorse or promote products derived from
  18. # this software without specific prior written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  21. # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  22. # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  23. # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  24. # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  25. # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  26. # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  27. # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  28. # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  29. # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  30. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  31.  
  32. """Verifies that Google Test correctly parses environment variables."""
  33.  
  34. import os
  35. import gtest_test_utils
  36.  
  37.  
  38. IS_WINDOWS = os.name == 'nt'
  39. IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux'
  40.  
  41. COMMAND = gtest_test_utils.GetTestExecutablePath('googletest-env-var-test_')
  42.  
  43. environ = os.environ.copy()
  44.  
  45.  
  46. def AssertEq(expected, actual):
  47.   if expected != actual:
  48.     print 'Expected: %s' % (expected,)
  49.     print '  Actual: %s' % (actual,)
  50.     raise AssertionError
  51.  
  52.  
  53. def SetEnvVar(env_var, value):
  54.   """Sets the env variable to 'value'; unsets it when 'value' is None."""
  55.  
  56.   if value is not None:
  57.     environ[env_var] = value
  58.   elif env_var in environ:
  59.     del environ[env_var]
  60.  
  61.  
  62. def GetFlag(flag):
  63.   """Runs googletest-env-var-test_ and returns its output."""
  64.  
  65.   args = [COMMAND]
  66.   if flag is not None:
  67.     args += [flag]
  68.   return gtest_test_utils.Subprocess(args, env=environ).output
  69.  
  70.  
  71. def TestFlag(flag, test_val, default_val):
  72.   """Verifies that the given flag is affected by the corresponding env var."""
  73.  
  74.   env_var = 'GTEST_' + flag.upper()
  75.   SetEnvVar(env_var, test_val)
  76.   AssertEq(test_val, GetFlag(flag))
  77.   SetEnvVar(env_var, None)
  78.   AssertEq(default_val, GetFlag(flag))
  79.  
  80.  
  81. class GTestEnvVarTest(gtest_test_utils.TestCase):
  82.  
  83.   def testEnvVarAffectsFlag(self):
  84.     """Tests that environment variable should affect the corresponding flag."""
  85.  
  86.     TestFlag('break_on_failure', '1', '0')
  87.     TestFlag('color', 'yes', 'auto')
  88.     TestFlag('filter', 'FooTest.Bar', '*')
  89.     SetEnvVar('XML_OUTPUT_FILE', None)  # For 'output' test
  90.     TestFlag('output', 'xml:tmp/foo.xml', '')
  91.     TestFlag('print_time', '0', '1')
  92.     TestFlag('repeat', '999', '1')
  93.     TestFlag('throw_on_failure', '1', '0')
  94.     TestFlag('death_test_style', 'threadsafe', 'fast')
  95.     TestFlag('catch_exceptions', '0', '1')
  96.  
  97.     if IS_LINUX:
  98.       TestFlag('death_test_use_fork', '1', '0')
  99.       TestFlag('stack_trace_depth', '0', '100')
  100.  
  101.  
  102.   def testXmlOutputFile(self):
  103.     """Tests that $XML_OUTPUT_FILE affects the output flag."""
  104.  
  105.     SetEnvVar('GTEST_OUTPUT', None)
  106.     SetEnvVar('XML_OUTPUT_FILE', 'tmp/bar.xml')
  107.     AssertEq('xml:tmp/bar.xml', GetFlag('output'))
  108.  
  109.   def testXmlOutputFileOverride(self):
  110.     """Tests that $XML_OUTPUT_FILE is overridden by $GTEST_OUTPUT."""
  111.  
  112.     SetEnvVar('GTEST_OUTPUT', 'xml:tmp/foo.xml')
  113.     SetEnvVar('XML_OUTPUT_FILE', 'tmp/bar.xml')
  114.     AssertEq('xml:tmp/foo.xml', GetFlag('output'))
  115.  
  116. if __name__ == '__main__':
  117.   gtest_test_utils.Main()
  118.