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 13# ANY 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 16# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 17# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 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, 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. 22 23"""Unit tests for python.py.""" 24 25import os 26import unittest 27 28from python import PythonChecker 29 30 31class PythonCheckerTest(unittest.TestCase): 32 33 """Tests the PythonChecker class.""" 34 35 def test_init(self): 36 """Test __init__() method.""" 37 def _mock_handle_style_error(self): 38 pass 39 40 checker = PythonChecker("foo.txt", _mock_handle_style_error) 41 self.assertEquals(checker._file_path, "foo.txt") 42 self.assertEquals(checker._handle_style_error, 43 _mock_handle_style_error) 44 45 def test_check(self): 46 """Test check() method.""" 47 errors = [] 48 49 def _mock_handle_style_error(line_number, category, confidence, 50 message): 51 error = (line_number, category, confidence, message) 52 errors.append(error) 53 54 current_dir = os.path.dirname(__file__) 55 file_path = os.path.join(current_dir, "python_unittest_input.py") 56 57 checker = PythonChecker(file_path, _mock_handle_style_error) 58 checker.check(lines=[]) 59 60 self.assertEquals(len(errors), 1) 61 self.assertEquals(errors[0], 62 (2, "pep8/W291", 5, "trailing whitespace")) 63