3 # Copyright (C) 2011 Google Inc. All rights reserved.
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions
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.
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.
26 """Unit test for xcodeproj.py."""
32 class TestErrorHandler(object):
33 """Error handler for XcodeProjectFileChecker unittests"""
34 def __init__(self, handler):
35 self.handler = handler
37 def turn_off_line_filtering(self):
40 def __call__(self, line_number, category, confidence, message):
41 self.handler(self, line_number, category, confidence, message)
44 class XcodeProjectFileCheckerTest(unittest.TestCase):
45 """Tests XcodeProjectFileChecker class."""
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))
51 error_handler = TestErrorHandler(handler)
52 checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
55 def assert_error(self, lines, expected_message):
56 self.had_error = False
58 def handler(error_handler, line_number, category, confidence, message):
59 self.assertEqual(expected_message, message)
61 error_handler = TestErrorHandler(handler)
62 checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
64 self.assert_(self.had_error, '%s should have error: %s.' % (lines, expected_message))
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.')
72 if __name__ == '__main__':