diff options
author | shiqian <shiqian@861a406c-534a-0410-8894-cb66d6ee9925> | 2008-07-03 22:38:12 +0000 |
---|---|---|
committer | shiqian <shiqian@861a406c-534a-0410-8894-cb66d6ee9925> | 2008-07-03 22:38:12 +0000 |
commit | d201456903f3ecae1f7794edfab0d5678e642265 (patch) | |
tree | 4ef57d8e22984324df5ce975b9961d578e270e53 /test/gtest_list_tests_unittest.py | |
download | googletest-d201456903f3ecae1f7794edfab0d5678e642265.tar.gz googletest-d201456903f3ecae1f7794edfab0d5678e642265.tar.bz2 googletest-d201456903f3ecae1f7794edfab0d5678e642265.zip |
Initial import.
Diffstat (limited to 'test/gtest_list_tests_unittest.py')
-rwxr-xr-x | test/gtest_list_tests_unittest.py | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/test/gtest_list_tests_unittest.py b/test/gtest_list_tests_unittest.py new file mode 100755 index 00000000..9cefa15c --- /dev/null +++ b/test/gtest_list_tests_unittest.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test for Google Test's --gtest_list_tests flag. + +A user can ask Google Test to list all tests by specifying the +--gtest_list_tests flag. This script tests such functionality +by invoking gtest_list_tests_unittest_ (a program written with +Google Test) the command line flags. +""" + +__author__ = 'phanna@google.com (Patrick Hanna)' + +import gtest_test_utils +import os +import re +import sys +import unittest + + +# Constants. + +# The command line flag for enabling/disabling listing all tests. +LIST_TESTS_FLAG = 'gtest_list_tests' + +# Path to the gtest_list_tests_unittest_ program. +EXE_PATH = os.path.join(gtest_test_utils.GetBuildDir(), + 'gtest_list_tests_unittest_'); + +# The expected output when running gtest_list_tests_unittest_ with +# --gtest_list_tests +EXPECTED_OUTPUT = """FooDeathTest. + Test1 +Foo. + Bar1 + Bar2 + Bar3 +Abc. + Xyz + Def +FooBar. + Baz +FooTest. + Test1 + Test2 + Test3 +""" + +# Utilities. + +def Run(command): + """Runs a command and returns the list of tests printed. + """ + + stdout_file = os.popen(command, "r") + + output = stdout_file.read() + + stdout_file.close() + return output + + +# The unit test. + +class GTestListTestsUnitTest(unittest.TestCase): + """Tests using the --gtest_list_tests flag to list all tests. + """ + + def RunAndVerify(self, flag_value, expected_output, other_flag): + """Runs gtest_list_tests_unittest_ and verifies that it prints + the correct tests. + + Args: + flag_value: value of the --gtest_list_tests flag; + None if the flag should not be present. + + expected_output: the expected output after running command; + + other_flag: a different flag to be passed to command + along with gtest_list_tests; + None if the flag should not be present. + """ + + if flag_value is None: + flag = '' + flag_expression = "not set" + elif flag_value == '0': + flag = ' --%s=0' % LIST_TESTS_FLAG + flag_expression = "0" + else: + flag = ' --%s' % LIST_TESTS_FLAG + flag_expression = "1" + + command = EXE_PATH + flag + + if other_flag is not None: + command += " " + other_flag + + output = Run(command) + + msg = ('when %s is %s, the output of "%s" is "%s".' % + (LIST_TESTS_FLAG, flag_expression, command, output)) + + if expected_output is not None: + self.assert_(output == expected_output, msg) + else: + self.assert_(output != EXPECTED_OUTPUT, msg) + + def testDefaultBehavior(self): + """Tests the behavior of the default mode.""" + + self.RunAndVerify(flag_value=None, + expected_output=None, + other_flag=None) + + def testFlag(self): + """Tests using the --gtest_list_tests flag.""" + + self.RunAndVerify(flag_value='0', + expected_output=None, + other_flag=None) + self.RunAndVerify(flag_value='1', + expected_output=EXPECTED_OUTPUT, + other_flag=None) + + def testOverrideOtherFlags(self): + """Tests that --gtest_list_tests overrides all other flags.""" + + self.RunAndVerify(flag_value="1", + expected_output=EXPECTED_OUTPUT, + other_flag="--gtest_filter=*") + self.RunAndVerify(flag_value="1", + expected_output=EXPECTED_OUTPUT, + other_flag="--gtest_break_on_failure") + +if __name__ == '__main__': + gtest_test_utils.Main() |