diff options
author | Ionel Cristian Maries <contact@ionelmc.ro> | 2015-02-14 18:13:20 +0200 |
---|---|---|
committer | Ionel Cristian Maries <contact@ionelmc.ro> | 2015-02-14 18:13:20 +0200 |
commit | 6d8412476a296b3a3691af1ffabcb672d9a4920f (patch) | |
tree | e358c7e886ff4d67d0efc6263f0472655efddfff /pylint/test/test_regr.py | |
parent | 0369bd6a914af3ad92ce53eac3786bf8de785f7f (diff) | |
download | pylint-6d8412476a296b3a3691af1ffabcb672d9a4920f.tar.gz |
Move all package files to a pylint package.
Diffstat (limited to 'pylint/test/test_regr.py')
-rw-r--r-- | pylint/test/test_regr.py | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/pylint/test/test_regr.py b/pylint/test/test_regr.py new file mode 100644 index 0000000..6fb0fc5 --- /dev/null +++ b/pylint/test/test_regr.py @@ -0,0 +1,142 @@ +# Copyright (c) 2005-2014 LOGILAB S.A. (Paris, FRANCE). +# http://www.logilab.fr/ -- mailto:contact@logilab.fr +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# This program is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +"""non regression tests for pylint, which requires a too specific configuration +to be incorporated in the automatic functional test framework +""" + +import sys +import os +from os.path import abspath, dirname, join +import unittest + +from pylint.testutils import TestReporter +from pylint.lint import PyLinter +from pylint import checkers + +test_reporter = TestReporter() +linter = PyLinter() +linter.set_reporter(test_reporter) +linter.disable('I') +linter.config.persistent = 0 +checkers.initialize(linter) + +REGR_DATA = join(dirname(abspath(__file__)), 'regrtest_data') +sys.path.insert(1, REGR_DATA) + +class NonRegrTC(unittest.TestCase): + def setUp(self): + """call reporter.finalize() to cleanup + pending messages if a test finished badly + """ + linter.reporter.finalize() + + def test_package___path___manipulation(self): + linter.check('package.__init__') + got = linter.reporter.finalize().strip() + self.assertEqual(got, '') + + def test_package___init___precedence(self): + linter.check('precedence_test') + got = linter.reporter.finalize().strip() + self.assertEqual(got, '') + + def test_check_package___init__(self): + for variation in ('package.__init__', join(REGR_DATA, 'package', '__init__.py')): + linter.check(variation) + got = linter.reporter.finalize().strip() + checked = linter.stats['by_module'].keys() + self.assertEqual(checked, ['package.__init__'], + '%s: %s' % (variation, checked)) + cwd = os.getcwd() + os.chdir(join(REGR_DATA, 'package')) + sys.path.insert(0, '') + try: + for variation in ('__init__', '__init__.py'): + linter.check(variation) + got = linter.reporter.finalize().strip() + checked = linter.stats['by_module'].keys() + self.assertEqual(checked, ['__init__'], + '%s: %s' % (variation, checked)) + finally: + sys.path.pop(0) + os.chdir(cwd) + + def test_numarray_inference(self): + try: + from numarray import random_array + except ImportError: + self.skipTest('test skipped: numarray.random_array is not available') + linter.check(join(REGR_DATA, 'numarray_inf.py')) + got = linter.reporter.finalize().strip() + self.assertEqual(got, "E: 5: Instance of 'int' has no 'astype' member (but some types could not be inferred)") + + def test_numarray_import(self): + try: + import numarray + except ImportError: + self.skipTest('test skipped: numarray is not available') + linter.check(join(REGR_DATA, 'numarray_import.py')) + got = linter.reporter.finalize().strip() + self.assertEqual(got, '') + + def test_class__doc__usage(self): + linter.check(join(REGR_DATA, 'classdoc_usage.py')) + got = linter.reporter.finalize().strip() + self.assertEqual(got, '') + + def test_package_import_relative_subpackage_no_attribute_error(self): + linter.check('import_package_subpackage_module') + got = linter.reporter.finalize().strip() + self.assertEqual(got, '') + + def test_import_assign_crash(self): + linter.check(join(REGR_DATA, 'import_assign.py')) + + def test_special_attr_scope_lookup_crash(self): + linter.check(join(REGR_DATA, 'special_attr_scope_lookup_crash.py')) + + def test_module_global_crash(self): + linter.check(join(REGR_DATA, 'module_global.py')) + got = linter.reporter.finalize().strip() + self.assertEqual(got, '') + + def test_decimal_inference(self): + linter.check(join(REGR_DATA, 'decimal_inference.py')) + got = linter.reporter.finalize().strip() + self.assertEqual(got, "") + + def test_descriptor_crash(self): + for fname in os.listdir(REGR_DATA): + if fname.endswith('_crash.py'): + linter.check(join(REGR_DATA, fname)) + linter.reporter.finalize().strip() + + def test_try_finally_disable_msg_crash(self): + linter.check(join(REGR_DATA, 'try_finally_disable_msg_crash')) + + def test___path__(self): + linter.check('pylint.checkers.__init__') + messages = linter.reporter.finalize().strip() + self.assertFalse('__path__' in messages, messages) + + def test_absolute_import(self): + linter.check(join(REGR_DATA, 'absimp', 'string.py')) + got = linter.reporter.finalize().strip() + self.assertEqual(got, "") + + +if __name__ == '__main__': + unittest.main() |