Home | History | Annotate | Download | only in checkers
      1 # Copyright (C) 2011 Google Inc. All rights reserved.
      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 THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     13 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     14 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     15 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     16 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     17 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     18 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     19 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     20 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     21 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     22 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     23 
     24 """Unit test for xcodeproj.py."""
     25 import unittest
     26 
     27 import xcodeproj
     28 
     29 
     30 class TestErrorHandler(object):
     31     """Error handler for XcodeProjectFileChecker unittests"""
     32     def __init__(self, handler):
     33         self.handler = handler
     34 
     35     def turn_off_line_filtering(self):
     36         pass
     37 
     38     def __call__(self, line_number, category, confidence, message):
     39         self.handler(self, line_number, category, confidence, message)
     40         return True
     41 
     42 
     43 class XcodeProjectFileCheckerTest(unittest.TestCase):
     44     """Tests XcodeProjectFileChecker class."""
     45 
     46     def assert_no_error(self, lines):
     47         def handler(error_handler, line_number, category, confidence, message):
     48             self.fail('Unexpected error: %d %s %d %s' % (line_number, category, confidence, message))
     49 
     50         error_handler = TestErrorHandler(handler)
     51         checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
     52         checker.check(lines)
     53 
     54     def assert_error(self, lines, expected_message):
     55         self.had_error = False
     56 
     57         def handler(error_handler, line_number, category, confidence, message):
     58             self.assertEqual(expected_message, message)
     59             self.had_error = True
     60         error_handler = TestErrorHandler(handler)
     61         checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
     62         checker.check(lines)
     63         self.assertTrue(self.had_error, '%s should have error: %s.' % (lines, expected_message))
     64 
     65     def test_detect_development_region(self):
     66         self.assert_no_error(['developmentRegion = English;'])
     67         self.assert_error([''], 'Missing "developmentRegion = English".')
     68         self.assert_error(['developmentRegion = Japanese;'],
     69                           'developmentRegion is not English.')
     70