Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: sky/tools/webkitpy/style/checkers/common_unittest.py

Issue 675343003: Prune a bunch of webkitpy. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « sky/tools/webkitpy/style/checkers/common.py ('k') | sky/tools/webkitpy/style/checkers/cpp.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
2 #
3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions
5 # are met:
6 # 1. Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer.
8 # 2. Redistributions in binary form must reproduce the above copyright
9 # notice, this list of conditions and the following disclaimer in the
10 # documentation and/or other materials provided with the distribution.
11 #
12 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY
13 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
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 ANY
16 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
17 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
18 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
19 # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
20 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
21 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22
23 """Unit tests for common.py."""
24
25 import unittest
26
27 from common import CarriageReturnChecker
28 from common import TabChecker
29
30 # FIXME: The unit tests for the cpp, text, and common checkers should
31 # share supporting test code. This can include, for example, the
32 # mock style error handling code and the code to check that all
33 # of a checker's categories are covered by the unit tests.
34 # Such shared code can be located in a shared test file, perhaps
35 # even this file.
36 class CarriageReturnCheckerTest(unittest.TestCase):
37
38 """Tests check_no_carriage_return()."""
39
40 _category = "whitespace/carriage_return"
41 _confidence = 1
42 _expected_message = ("One or more unexpected \\r (^M) found; "
43 "better to use only a \\n")
44
45 def setUp(self):
46 self._style_errors = [] # The list of accumulated style errors.
47
48 def _mock_style_error_handler(self, line_number, category, confidence,
49 message):
50 """Append the error information to the list of style errors."""
51 error = (line_number, category, confidence, message)
52 self._style_errors.append(error)
53
54 def assert_carriage_return(self, input_lines, expected_lines, error_lines):
55 """Process the given line and assert that the result is correct."""
56 handle_style_error = self._mock_style_error_handler
57
58 checker = CarriageReturnChecker(handle_style_error)
59 output_lines = checker.check(input_lines)
60
61 # Check both the return value and error messages.
62 self.assertEqual(output_lines, expected_lines)
63
64 expected_errors = [(line_number, self._category, self._confidence,
65 self._expected_message)
66 for line_number in error_lines]
67 self.assertEqual(self._style_errors, expected_errors)
68
69 def test_ends_with_carriage(self):
70 self.assert_carriage_return(["carriage return\r"],
71 ["carriage return"],
72 [1])
73
74 def test_ends_with_nothing(self):
75 self.assert_carriage_return(["no carriage return"],
76 ["no carriage return"],
77 [])
78
79 def test_ends_with_newline(self):
80 self.assert_carriage_return(["no carriage return\n"],
81 ["no carriage return\n"],
82 [])
83
84 def test_carriage_in_middle(self):
85 # The CarriageReturnChecker checks only the final character
86 # of each line.
87 self.assert_carriage_return(["carriage\r in a string"],
88 ["carriage\r in a string"],
89 [])
90
91 def test_multiple_errors(self):
92 self.assert_carriage_return(["line1", "line2\r", "line3\r"],
93 ["line1", "line2", "line3"],
94 [2, 3])
95
96
97 class TabCheckerTest(unittest.TestCase):
98
99 """Tests for TabChecker."""
100
101 def assert_tab(self, input_lines, error_lines):
102 """Assert when the given lines contain tabs."""
103 self._error_lines = []
104
105 def style_error_handler(line_number, category, confidence, message):
106 self.assertEqual(category, 'whitespace/tab')
107 self.assertEqual(confidence, 5)
108 self.assertEqual(message, 'Line contains tab character.')
109 self._error_lines.append(line_number)
110
111 checker = TabChecker('', style_error_handler)
112 checker.check(input_lines)
113 self.assertEqual(self._error_lines, error_lines)
114
115 def test_notab(self):
116 self.assert_tab([''], [])
117 self.assert_tab(['foo', 'bar'], [])
118
119 def test_tab(self):
120 self.assert_tab(['\tfoo'], [1])
121 self.assert_tab(['line1', '\tline2', 'line3\t'], [2, 3])
OLDNEW
« no previous file with comments | « sky/tools/webkitpy/style/checkers/common.py ('k') | sky/tools/webkitpy/style/checkers/cpp.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698