summaryrefslogtreecommitdiff
path: root/pylint/test/test_regr.py
diff options
context:
space:
mode:
authorIonel Cristian Maries <contact@ionelmc.ro>2015-02-14 18:13:20 +0200
committerIonel Cristian Maries <contact@ionelmc.ro>2015-02-14 18:13:20 +0200
commit6d8412476a296b3a3691af1ffabcb672d9a4920f (patch)
treee358c7e886ff4d67d0efc6263f0472655efddfff /pylint/test/test_regr.py
parent0369bd6a914af3ad92ce53eac3786bf8de785f7f (diff)
downloadpylint-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.py142
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()