initial import
[vuplus_webkit] / Tools / Scripts / webkitpy / style / checkers / xcodeproj_unittest.py
1 #!/usr/bin/env python
2 #
3 # Copyright (C) 2011 Google Inc. All rights reserved.
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
7 # are met:
8 # 1.  Redistributions of source code must retain the above copyright
9 #     notice, this list of conditions and the following disclaimer.
10 # 2.  Redistributions in binary form must reproduce the above copyright
11 #     notice, this list of conditions and the following disclaimer in the
12 #     documentation and/or other materials provided with the distribution.
13 #
14 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25
26 """Unit test for xcodeproj.py."""
27
28 import xcodeproj
29 import unittest
30
31
32 class TestErrorHandler(object):
33     """Error handler for XcodeProjectFileChecker unittests"""
34     def __init__(self, handler):
35         self.handler = handler
36
37     def turn_off_line_filtering(self):
38         pass
39
40     def __call__(self, line_number, category, confidence, message):
41         self.handler(self, line_number, category, confidence, message)
42
43
44 class XcodeProjectFileCheckerTest(unittest.TestCase):
45     """Tests XcodeProjectFileChecker class."""
46
47     def assert_no_error(self, lines):
48         def handler(error_handler, line_number, category, confidence, message):
49             self.fail('Unexpected error: %d %s %d %s' % (line_number, category, confidence, message))
50
51         error_handler = TestErrorHandler(handler)
52         checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
53         checker.check(lines)
54
55     def assert_error(self, lines, expected_message):
56         self.had_error = False
57
58         def handler(error_handler, line_number, category, confidence, message):
59             self.assertEqual(expected_message, message)
60             self.had_error = True
61         error_handler = TestErrorHandler(handler)
62         checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
63         checker.check(lines)
64         self.assert_(self.had_error, '%s should have error: %s.' % (lines, expected_message))
65
66     def test_detect_development_region(self):
67         self.assert_no_error(['developmentRegion = English;'])
68         self.assert_error([''], 'Missing "developmentRegion = English".')
69         self.assert_error(['developmentRegion = Japanese;'],
70                           'developmentRegion is not English.')
71
72 if __name__ == '__main__':
73     unittest.main()