OLD | NEW |
1 # Copyright (C) 2011 Apple Inc. All rights reserved. | 1 # Copyright (C) 2011 Apple Inc. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions | 4 # modification, are permitted provided that the following conditions |
5 # are met: | 5 # are met: |
6 # 1. Redistributions of source code must retain the above copyright | 6 # 1. Redistributions of source code must retain the above copyright |
7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
8 # 2. Redistributions in binary form must reproduce the above copyright | 8 # 2. Redistributions in binary form must reproduce the above copyright |
9 # notice, this list of conditions and the following disclaimer in the | 9 # notice, this list of conditions and the following disclaimer in the |
10 # documentation and/or other materials provided with the distribution. | 10 # documentation and/or other materials provided with the distribution. |
11 # | 11 # |
12 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND | 12 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND |
13 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 13 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
14 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 14 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
15 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR | 15 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR |
16 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 16 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
17 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | 17 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
18 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | 18 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
19 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | 19 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, |
20 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 20 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
22 | 22 |
23 import logging | 23 import logging |
24 import unittest | 24 import unittest |
25 | 25 |
26 from webkitpy.common.system.outputcapture import OutputCapture | 26 from webkitpy.common.system.output_capture import OutputCapture |
27 | 27 |
28 | 28 |
29 _log = logging.getLogger(__name__) | 29 _log = logging.getLogger(__name__) |
30 | 30 |
31 | 31 |
32 class OutputCaptureTest(unittest.TestCase): | 32 class OutputCaptureTest(unittest.TestCase): |
33 | 33 |
34 def setUp(self): | 34 def setUp(self): |
35 self.output = OutputCapture() | 35 self.output = OutputCapture() |
36 | 36 |
37 def log_all_levels(self): | 37 def log_all_levels(self): |
38 _log.info('INFO') | 38 _log.info('INFO') |
39 _log.warning('WARN') | 39 _log.warning('WARN') |
40 _log.error('ERROR') | 40 _log.error('ERROR') |
41 _log.critical('CRITICAL') | 41 _log.critical('CRITICAL') |
42 | 42 |
43 def assertLogged(self, expected_logs): | 43 def assert_logged(self, expected_logs): |
44 actual_stdout, actual_stderr, actual_logs = self.output.restore_output() | 44 actual_stdout, actual_stderr, actual_logs = self.output.restore_output() |
45 self.assertEqual('', actual_stdout) | 45 self.assertEqual('', actual_stdout) |
46 self.assertEqual('', actual_stderr) | 46 self.assertEqual('', actual_stderr) |
47 self.assertMultiLineEqual(expected_logs, actual_logs) | 47 self.assertMultiLineEqual(expected_logs, actual_logs) |
48 | 48 |
49 def test_initial_log_level(self): | 49 def test_initial_log_level(self): |
50 self.output.capture_output() | 50 self.output.capture_output() |
51 self.log_all_levels() | 51 self.log_all_levels() |
52 self.assertLogged('INFO\nWARN\nERROR\nCRITICAL\n') | 52 self.assert_logged('INFO\nWARN\nERROR\nCRITICAL\n') |
53 | 53 |
54 def test_set_log_level(self): | 54 def test_set_log_level(self): |
55 self.output.set_log_level(logging.ERROR) | 55 self.output.set_log_level(logging.ERROR) |
56 self.output.capture_output() | 56 self.output.capture_output() |
57 self.log_all_levels() | 57 self.log_all_levels() |
58 self.output.set_log_level(logging.WARN) | 58 self.output.set_log_level(logging.WARN) |
59 self.log_all_levels() | 59 self.log_all_levels() |
60 self.assertLogged('ERROR\nCRITICAL\nWARN\nERROR\nCRITICAL\n') | 60 self.assert_logged('ERROR\nCRITICAL\nWARN\nERROR\nCRITICAL\n') |
OLD | NEW |