diff options
author | Ben Murdoch <benm@google.com> | 2011-05-05 14:36:32 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-05-10 15:38:30 +0100 |
commit | f05b935882198ccf7d81675736e3aeb089c5113a (patch) | |
tree | 4ea0ca838d9ef1b15cf17ddb3928efb427c7e5a1 /WebKitTools/Scripts/webkitpy/test | |
parent | 60fbdcc62bced8db2cb1fd233cc4d1e4ea17db1b (diff) | |
download | external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.zip external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.gz external_webkit-f05b935882198ccf7d81675736e3aeb089c5113a.tar.bz2 |
Merge WebKit at r74534: Initial merge by git.
Change-Id: I6ccd1154fa1b19c2ec2a66878eb675738735f1eb
Diffstat (limited to 'WebKitTools/Scripts/webkitpy/test')
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/__init__.py | 1 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/cat.py | 42 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/cat_unittest.py | 52 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/echo.py | 52 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/echo_unittest.py | 64 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/main.py | 140 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/skip.py | 52 | ||||
-rw-r--r-- | WebKitTools/Scripts/webkitpy/test/skip_unittest.py | 77 |
8 files changed, 0 insertions, 480 deletions
diff --git a/WebKitTools/Scripts/webkitpy/test/__init__.py b/WebKitTools/Scripts/webkitpy/test/__init__.py deleted file mode 100644 index ef65bee..0000000 --- a/WebKitTools/Scripts/webkitpy/test/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# Required for Python to search this directory for module files diff --git a/WebKitTools/Scripts/webkitpy/test/cat.py b/WebKitTools/Scripts/webkitpy/test/cat.py deleted file mode 100644 index ae1e143..0000000 --- a/WebKitTools/Scripts/webkitpy/test/cat.py +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (C) 2010 Apple 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: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -import os.path -import sys - -# Add WebKitTools/Scripts to the path to ensure we can find webkitpy. -sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) - -from webkitpy.common.system import fileutils - - -def command_arguments(*args): - return ['python', __file__] + list(args) - - -def main(): - fileutils.make_stdout_binary() - sys.stdout.write(sys.stdin.read()) - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/WebKitTools/Scripts/webkitpy/test/cat_unittest.py b/WebKitTools/Scripts/webkitpy/test/cat_unittest.py deleted file mode 100644 index 4ed1f67..0000000 --- a/WebKitTools/Scripts/webkitpy/test/cat_unittest.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2010 Apple 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: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -import StringIO -import os.path -import sys -import unittest - -from webkitpy.common.system import executive, outputcapture -from webkitpy.test import cat - - -class CatTest(outputcapture.OutputCaptureTestCaseBase): - def assert_cat(self, input): - saved_stdin = sys.stdin - sys.stdin = StringIO.StringIO(input) - cat.main() - self.assertStdout(input) - sys.stdin = saved_stdin - - def test_basic(self): - self.assert_cat('foo bar baz\n') - - def test_no_newline(self): - self.assert_cat('foo bar baz') - - def test_unicode(self): - self.assert_cat(u'WebKit \u2661 Tor Arne Vestb\u00F8!') - - def test_as_command(self): - input = 'foo bar baz\n' - output = executive.Executive().run_command(cat.command_arguments(), input=input) - self.assertEqual(input, output) diff --git a/WebKitTools/Scripts/webkitpy/test/echo.py b/WebKitTools/Scripts/webkitpy/test/echo.py deleted file mode 100644 index f7468f7..0000000 --- a/WebKitTools/Scripts/webkitpy/test/echo.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2010 Apple 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: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -import os.path -import sys - -# Add WebKitTools/Scripts to the path to ensure we can find webkitpy. -sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))) - -from webkitpy.common.system import fileutils - - -def command_arguments(*args): - return ['python', __file__] + list(args) - - -def main(args=None): - if args is None: - args = sys.argv[1:] - - fileutils.make_stdout_binary() - - print_newline = True - if len(args) and args[0] == '-n': - print_newline = False - del args[0] - sys.stdout.write(' '.join(args)) - if print_newline: - sys.stdout.write('\n') - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/WebKitTools/Scripts/webkitpy/test/echo_unittest.py b/WebKitTools/Scripts/webkitpy/test/echo_unittest.py deleted file mode 100644 index bc13b5e..0000000 --- a/WebKitTools/Scripts/webkitpy/test/echo_unittest.py +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (C) 2010 Apple 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: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -import os.path -import sys -import unittest - -from webkitpy.common.system import executive, outputcapture -from webkitpy.test import echo - - -class EchoTest(outputcapture.OutputCaptureTestCaseBase): - def test_basic(self): - echo.main(['foo', 'bar', 'baz']) - self.assertStdout('foo bar baz\n') - - def test_no_newline(self): - echo.main(['-n', 'foo', 'bar', 'baz']) - self.assertStdout('foo bar baz') - - def test_unicode(self): - echo.main([u'WebKit \u2661', 'Tor Arne', u'Vestb\u00F8!']) - self.assertStdout(u'WebKit \u2661 Tor Arne Vestb\u00F8!\n') - - def test_argument_order(self): - echo.main(['foo', '-n', 'bar']) - self.assertStdout('foo -n bar\n') - - def test_empty_arguments(self): - old_argv = sys.argv - sys.argv = ['echo.py', 'foo', 'bar', 'baz'] - echo.main([]) - self.assertStdout('\n') - sys.argv = old_argv - - def test_no_arguments(self): - old_argv = sys.argv - sys.argv = ['echo.py', 'foo', 'bar', 'baz'] - echo.main() - self.assertStdout('foo bar baz\n') - sys.argv = old_argv - - def test_as_command(self): - output = executive.Executive().run_command(echo.command_arguments('foo', 'bar', 'baz')) - self.assertEqual(output, 'foo bar baz\n') diff --git a/WebKitTools/Scripts/webkitpy/test/main.py b/WebKitTools/Scripts/webkitpy/test/main.py deleted file mode 100644 index 1038d82..0000000 --- a/WebKitTools/Scripts/webkitpy/test/main.py +++ /dev/null @@ -1,140 +0,0 @@ -# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org) -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -"""Contains the entry method for test-webkitpy.""" - -import logging -import os -import sys -import unittest - -import webkitpy - - -_log = logging.getLogger(__name__) - - -class Tester(object): - - """Discovers and runs webkitpy unit tests.""" - - def _find_unittest_files(self, webkitpy_dir): - """Return a list of paths to all unit-test files.""" - unittest_paths = [] # Return value. - - for dir_path, dir_names, file_names in os.walk(webkitpy_dir): - for file_name in file_names: - if not file_name.endswith("_unittest.py"): - continue - unittest_path = os.path.join(dir_path, file_name) - unittest_paths.append(unittest_path) - - return unittest_paths - - def _modules_from_paths(self, package_root, paths): - """Return a list of fully-qualified module names given paths.""" - package_path = os.path.abspath(package_root) - root_package_name = os.path.split(package_path)[1] # Equals "webkitpy". - - prefix_length = len(package_path) - - modules = [] - for path in paths: - path = os.path.abspath(path) - # This gives us, for example: /common/config/ports_unittest.py - rel_path = path[prefix_length:] - # This gives us, for example: /common/config/ports_unittest - rel_path = os.path.splitext(rel_path)[0] - - parts = [] - while True: - (rel_path, tail) = os.path.split(rel_path) - if not tail: - break - parts.insert(0, tail) - # We now have, for example: common.config.ports_unittest - # FIXME: This is all a hack around the fact that we always prefix webkitpy includes with "webkitpy." - parts.insert(0, root_package_name) # Put "webkitpy" at the beginning. - module = ".".join(parts) - modules.append(module) - - return modules - - def run_tests(self, sys_argv, external_package_paths=None): - """Run the unit tests in all *_unittest.py modules in webkitpy. - - This method excludes "webkitpy.common.checkout.scm_unittest" unless - the --all option is the second element of sys_argv. - - Args: - sys_argv: A reference to sys.argv. - - """ - if external_package_paths is None: - external_package_paths = [] - else: - # FIXME: We should consider moving webkitpy off of using "webkitpy." to prefix - # all includes. If we did that, then this would use path instead of dirname(path). - # QueueStatusServer.__init__ has a sys.path import hack due to this code. - sys.path.extend(set(os.path.dirname(path) for path in external_package_paths)) - - if len(sys_argv) > 1 and not sys_argv[-1].startswith("-"): - # Then explicit modules or test names were provided, which - # the unittest module is equipped to handle. - unittest.main(argv=sys_argv, module=None) - # No need to return since unitttest.main() exits. - - # Otherwise, auto-detect all unit tests. - - # FIXME: This should be combined with the external_package_paths code above. - webkitpy_dir = os.path.dirname(webkitpy.__file__) - - modules = [] - for path in [webkitpy_dir] + external_package_paths: - modules.extend(self._modules_from_paths(path, self._find_unittest_files(path))) - modules.sort() - - # This is a sanity check to ensure that the unit-test discovery - # methods are working. - if len(modules) < 1: - raise Exception("No unit-test modules found.") - - for module in modules: - _log.debug("Found: %s" % module) - - # FIXME: This is a hack, but I'm tired of commenting out the test. - # See https://bugs.webkit.org/show_bug.cgi?id=31818 - if len(sys_argv) > 1 and sys.argv[1] == "--all": - sys.argv.remove("--all") - else: - excluded_module = "webkitpy.common.checkout.scm_unittest" - _log.info("Excluding: %s (use --all to include)" % excluded_module) - modules.remove(excluded_module) - - sys_argv.extend(modules) - - # We pass None for the module because we do not want the unittest - # module to resolve module names relative to a given module. - # (This would require importing all of the unittest modules from - # this module.) See the loadTestsFromName() method of the - # unittest.TestLoader class for more details on this parameter. - unittest.main(argv=sys_argv, module=None) diff --git a/WebKitTools/Scripts/webkitpy/test/skip.py b/WebKitTools/Scripts/webkitpy/test/skip.py deleted file mode 100644 index 8587d56..0000000 --- a/WebKitTools/Scripts/webkitpy/test/skip.py +++ /dev/null @@ -1,52 +0,0 @@ -# Copyright (C) 2010 Apple 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: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -import logging - -_log = logging.getLogger(__name__) - - -def skip_if(klass, condition, message=None, logger=None): - """Makes all test_* methods in a given class no-ops if the given condition - is False. Backported from Python 3.1+'s unittest.skipIf decorator.""" - if not logger: - logger = _log - if not condition: - return klass - for name in dir(klass): - attr = getattr(klass, name) - if not callable(attr): - continue - if not name.startswith('test_'): - continue - setattr(klass, name, _skipped_method(attr, message, logger)) - klass._printed_skipped_message = False - return klass - - -def _skipped_method(method, message, logger): - def _skip(*args): - if method.im_class._printed_skipped_message: - return - method.im_class._printed_skipped_message = True - logger.info('Skipping %s.%s: %s' % (method.__module__, method.im_class.__name__, message)) - return _skip diff --git a/WebKitTools/Scripts/webkitpy/test/skip_unittest.py b/WebKitTools/Scripts/webkitpy/test/skip_unittest.py deleted file mode 100644 index f61a1bb..0000000 --- a/WebKitTools/Scripts/webkitpy/test/skip_unittest.py +++ /dev/null @@ -1,77 +0,0 @@ -# Copyright (C) 2010 Apple 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: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. 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. -# -# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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. - -import StringIO -import logging -import unittest - -from webkitpy.test.skip import skip_if - - -class SkipTest(unittest.TestCase): - def setUp(self): - self.logger = logging.getLogger(__name__) - - self.old_level = self.logger.level - self.logger.setLevel(logging.INFO) - - self.old_propagate = self.logger.propagate - self.logger.propagate = False - - self.log_stream = StringIO.StringIO() - self.handler = logging.StreamHandler(self.log_stream) - self.logger.addHandler(self.handler) - - self.foo_was_called = False - - def tearDown(self): - self.logger.removeHandler(self.handler) - self.propagate = self.old_propagate - self.logger.setLevel(self.old_level) - - def create_fixture_class(self): - class TestSkipFixture(object): - def __init__(self, callback): - self.callback = callback - - def test_foo(self): - self.callback() - - return TestSkipFixture - - def foo_callback(self): - self.foo_was_called = True - - def test_skip_if_false(self): - klass = skip_if(self.create_fixture_class(), False, 'Should not see this message.', logger=self.logger) - klass(self.foo_callback).test_foo() - self.assertEqual(self.log_stream.getvalue(), '') - self.assertTrue(self.foo_was_called) - - def test_skip_if_true(self): - klass = skip_if(self.create_fixture_class(), True, 'Should see this message.', logger=self.logger) - klass(self.foo_callback).test_foo() - self.assertEqual(self.log_stream.getvalue(), 'Skipping webkitpy.test.skip_unittest.TestSkipFixture: Should see this message.\n') - self.assertFalse(self.foo_was_called) - -if __name__ == '__main__': - unittest.main() |