diff options
Diffstat (limited to 'test/regrtest.py')
-rw-r--r-- | test/regrtest.py | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/test/regrtest.py b/test/regrtest.py new file mode 100644 index 000000000..927ab48bc --- /dev/null +++ b/test/regrtest.py @@ -0,0 +1,131 @@ +# Copyright (c) 2005 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., +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +"""non regression tests for pylint, which requires a too specific configuration +to be incorporated in the automatic functionnal test framework +""" +__revision__ = '$Id: regrtest.py,v 1.12 2006-03-03 09:25:34 syt Exp $' + +import sys +import os +import unittest +from os.path import abspath, join + +from logilab.common import testlib + +from utils import TestReporter + +from pylint.lint import PyLinter +from pylint import checkers + +test_reporter = TestReporter() +linter = PyLinter() +linter.set_reporter(test_reporter) +linter.disable_message_category('I') +linter.config.persistent = 0 +linter.quiet = 1 +checkers.initialize(linter) + +sys.path.insert(1, abspath('regrtest_data')) + +class NonRegrTC(testlib.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.failUnlessEqual(got, '') + + def test_package___init___precedence(self): + linter.check('precedence_test') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + def test_check_package___init__(self): + for variation in ('package.__init__', 'regrtest_data/package/__init__.py'): + linter.check(variation) + got = linter.reporter.finalize().strip() + checked = linter.stats['by_module'].keys() + self.failUnlessEqual(checked, ['package.__init__'], + '%s: %s' % (variation, checked)) + cwd = os.getcwd() + os.chdir('regrtest_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.failUnlessEqual(checked, ['__init__'], + '%s: %s' % (variation, checked)) + finally: + sys.path.pop(0) + os.chdir(cwd) + + def test_gtk_import(self): + try: + import gtk + except ImportError: + self.skip('test skipped: gtk is not available') + except RuntimeError: # RuntimeError when missing display + pass + linter.check('regrtest_data/pygtk_import.py') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + + def test_numarray_import(self): + try: + import numarray + except ImportError: + self.skip('test skipped: numarray is not available') + linter.check('regrtest_data/numarray_import.py') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + def test_socketerror_import(self): + linter.check('regrtest_data/socketerror_import.py') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + def test_class__doc__usage(self): + linter.check('regrtest_data/classdoc_usage.py') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + def test_package_import_relative_subpackage_no_attribute_error(self): + linter.check('import_package_subpackage_module') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + def test_module_global_crash(self): + linter.check('regrtest_data/module_global.py') + got = linter.reporter.finalize().strip() + self.failUnlessEqual(got, '') + + def test_descriptor_crash(self): + for fname in os.listdir('regrtest_data'): + if fname.endswith('_crash.py'): + linter.check(join('regrtest_data', fname)) + linter.reporter.finalize().strip() + + +if __name__ == '__main__': + from logilab.common.testlib import unittest_main + unittest_main() |