summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Gustafson <degustaf@gmail.com>2017-01-03 02:05:38 -0500
committerClaudiu Popa <pcmanticore@gmail.com>2017-01-03 09:05:38 +0200
commite2f34ebe51d0b9d08ff7a03117b0149434446997 (patch)
treec477dff3cee1b6c5612b5b1053d95db3b11c923c
parent60449ba9021c8b9bc428923f45ac6df277217347 (diff)
downloadpylint-git-e2f34ebe51d0b9d08ff7a03117b0149434446997.tar.gz
Refactor pytest fixtures. (#1255)
-rw-r--r--pylint/test/conftest.py52
-rw-r--r--pylint/test/extensions/test_bad_builtin.py20
-rw-r--r--pylint/test/extensions/test_check_mccabe.py25
-rw-r--r--pylint/test/extensions/test_docstyle.py11
-rw-r--r--pylint/test/extensions/test_elseif_used.py11
-rw-r--r--pylint/test/extensions/test_emptystring.py55
-rw-r--r--pylint/test/extensions/test_overlapping_exceptions.py19
-rw-r--r--pylint/test/extensions/test_redefined.py18
-rw-r--r--pylint/test/test_regr.py17
-rw-r--r--pylint/test/unittest_lint.py17
-rw-r--r--pylint/test/unittest_reporting.py18
11 files changed, 135 insertions, 128 deletions
diff --git a/pylint/test/conftest.py b/pylint/test/conftest.py
new file mode 100644
index 000000000..2a8df8c93
--- /dev/null
+++ b/pylint/test/conftest.py
@@ -0,0 +1,52 @@
+# pylint: disable=redefined-outer-name
+import os
+import pytest
+
+from pylint import checkers
+from pylint.lint import PyLinter
+# pylint: disable=no-name-in-module
+from pylint.testutils import MinimalTestReporter
+
+
+@pytest.fixture
+def linter(checker, register, enable, disable, reporter):
+ _linter = PyLinter()
+ _linter.set_reporter(reporter())
+ checkers.initialize(_linter)
+ if register:
+ register(_linter)
+ if checker:
+ _linter.register_checker(checker(_linter))
+ if disable:
+ for msg in disable:
+ _linter.disable(msg)
+ if enable:
+ for msg in enable:
+ _linter.enable(msg)
+ os.environ.pop('PYLINTRC', None)
+ return _linter
+
+
+@pytest.fixture(scope='module')
+def checker():
+ return None
+
+
+@pytest.fixture(scope='module')
+def register():
+ return None
+
+
+@pytest.fixture(scope='module')
+def enable():
+ return None
+
+
+@pytest.fixture(scope='module')
+def disable():
+ return None
+
+
+@pytest.fixture(scope='module')
+def reporter():
+ return MinimalTestReporter
diff --git a/pylint/test/extensions/test_bad_builtin.py b/pylint/test/extensions/test_bad_builtin.py
index 0f6310231..529639200 100644
--- a/pylint/test/extensions/test_bad_builtin.py
+++ b/pylint/test/extensions/test_bad_builtin.py
@@ -10,10 +10,8 @@ import os.path as osp
import pytest
-from pylint import checkers
from pylint.extensions.bad_builtin import BadBuiltinChecker
-from pylint.lint import PyLinter, fix_import_path
-from pylint.testutils import MinimalTestReporter
+from pylint.lint import fix_import_path
EXPECTED = [
@@ -22,14 +20,14 @@ EXPECTED = [
]
-@pytest.fixture(scope="module")
-def linter():
- linter = PyLinter()
- linter.set_reporter(MinimalTestReporter())
- checkers.initialize(linter)
- linter.register_checker(BadBuiltinChecker(linter))
- linter.disable('I')
- return linter
+@pytest.fixture(scope='module')
+def checker(checker):
+ return BadBuiltinChecker
+
+
+@pytest.fixture(scope='module')
+def disable(disable):
+ return ['I']
def test_types_redefined(linter):
diff --git a/pylint/test/extensions/test_check_mccabe.py b/pylint/test/extensions/test_check_mccabe.py
index 2fe595dd9..61833b9c4 100644
--- a/pylint/test/extensions/test_check_mccabe.py
+++ b/pylint/test/extensions/test_check_mccabe.py
@@ -11,10 +11,7 @@ import os.path as osp
import pytest
-from pylint import checkers
-from pylint.extensions.mccabe import register
-from pylint.lint import PyLinter
-from pylint.testutils import MinimalTestReporter
+from pylint.extensions import mccabe
EXPECTED_MSGS = [
"'f1' is too complex. The McCabe rating is 1",
@@ -35,14 +32,18 @@ EXPECTED_MSGS = [
@pytest.fixture(scope="module")
-def linter():
- linter = PyLinter()
- linter.set_reporter(MinimalTestReporter())
- checkers.initialize(linter)
- register(linter)
- linter.disable('all')
- linter.enable('too-complex')
- return linter
+def enable(enable):
+ return ['too-complex']
+
+
+@pytest.fixture(scope="module")
+def disable(disable):
+ return ['all']
+
+
+@pytest.fixture(scope="module")
+def register(register):
+ return mccabe.register
@pytest.fixture
diff --git a/pylint/test/extensions/test_docstyle.py b/pylint/test/extensions/test_docstyle.py
index cb59cefa9..80303801c 100644
--- a/pylint/test/extensions/test_docstyle.py
+++ b/pylint/test/extensions/test_docstyle.py
@@ -11,10 +11,7 @@ import os.path as osp
import pytest
-from pylint import checkers
from pylint.extensions.docstyle import DocStringStyleChecker
-from pylint.lint import PyLinter
-from pylint.testutils import MinimalTestReporter
EXPECTED_MSGS = [
@@ -39,12 +36,8 @@ EXPECTED_SYMBOLS = [
@pytest.fixture(scope="module")
-def linter():
- linter = PyLinter()
- linter.set_reporter(MinimalTestReporter())
- checkers.initialize(linter)
- linter.register_checker(DocStringStyleChecker(linter))
- return linter
+def checker(checker):
+ return DocStringStyleChecker
def test_docstring_message(linter):
diff --git a/pylint/test/extensions/test_elseif_used.py b/pylint/test/extensions/test_elseif_used.py
index 9777af30f..7a385ed0d 100644
--- a/pylint/test/extensions/test_elseif_used.py
+++ b/pylint/test/extensions/test_elseif_used.py
@@ -11,19 +11,12 @@ import os.path as osp
import pytest
-from pylint import checkers
from pylint.extensions.check_elif import ElseifUsedChecker
-from pylint.lint import PyLinter
-from pylint.testutils import MinimalTestReporter
@pytest.fixture(scope="module")
-def linter():
- linter = PyLinter()
- linter.set_reporter(MinimalTestReporter())
- checkers.initialize(linter)
- linter.register_checker(ElseifUsedChecker(linter))
- return linter
+def checker(checker):
+ return ElseifUsedChecker
def test_elseif_message(linter):
diff --git a/pylint/test/extensions/test_emptystring.py b/pylint/test/extensions/test_emptystring.py
index 9df279120..524eeec25 100644
--- a/pylint/test/extensions/test_emptystring.py
+++ b/pylint/test/extensions/test_emptystring.py
@@ -6,49 +6,30 @@
"""Tests for the pylint checker in :mod:`pylint.extensions.emptystring
"""
-import os
import os.path as osp
-import unittest
+import pytest
-from pylint import checkers
from pylint.extensions.emptystring import CompareToEmptyStringChecker
-from pylint.lint import PyLinter
-from pylint.reporters import BaseReporter
-class EmptyStringTestReporter(BaseReporter):
+@pytest.fixture(scope='module')
+def checker(checker):
+ return CompareToEmptyStringChecker
- def handle_message(self, msg):
- self.messages.append(msg)
- def on_set_current_module(self, module, filepath):
- self.messages = []
+@pytest.fixture(scope='module')
+def disable(disable):
+ return ['I']
-class CheckEmptyStringUsedTC(unittest.TestCase):
-
- @classmethod
- def setUpClass(cls):
- cls._linter = PyLinter()
- cls._linter.set_reporter(EmptyStringTestReporter())
- checkers.initialize(cls._linter)
- cls._linter.register_checker(CompareToEmptyStringChecker(cls._linter))
- cls._linter.disable('I')
-
- def test_emptystring_message(self):
- elif_test = osp.join(osp.dirname(osp.abspath(__file__)), 'data',
- 'empty_string_comparison.py')
- self._linter.check([elif_test])
- msgs = self._linter.reporter.messages
- self.assertEqual(len(msgs), 4)
- for msg in msgs:
- self.assertEqual(msg.symbol, 'compare-to-empty-string')
- self.assertEqual(msg.msg, 'Avoid comparisons to empty string')
- self.assertEqual(msgs[0].line, 6)
- self.assertEqual(msgs[1].line, 9)
- self.assertEqual(msgs[2].line, 12)
- self.assertEqual(msgs[3].line, 15)
-
-
-if __name__ == '__main__':
- unittest.main()
+def test_emptystring_message(linter):
+ elif_test = osp.join(osp.dirname(osp.abspath(__file__)), 'data',
+ 'empty_string_comparison.py')
+ linter.check([elif_test])
+ msgs = linter.reporter.messages
+ expected_lineno = [6, 9, 12, 15]
+ assert len(msgs) == len(expected_lineno)
+ for msg, lineno in zip(msgs, expected_lineno):
+ assert msg.symbol == 'compare-to-empty-string'
+ assert msg.msg == 'Avoid comparisons to empty string'
+ assert msg.line == lineno
diff --git a/pylint/test/extensions/test_overlapping_exceptions.py b/pylint/test/extensions/test_overlapping_exceptions.py
index d61db26bf..44b98515a 100644
--- a/pylint/test/extensions/test_overlapping_exceptions.py
+++ b/pylint/test/extensions/test_overlapping_exceptions.py
@@ -7,22 +7,19 @@
from sys import version_info
from os.path import join, dirname
-from pylint import checkers
-from pylint.lint import PyLinter
from pylint.extensions.overlapping_exceptions import OverlappingExceptionsChecker
-from pylint.testutils import MinimalTestReporter
import pytest
-@pytest.fixture
-def linter():
- linter = PyLinter()
- linter.set_reporter(MinimalTestReporter())
- checkers.initialize(linter)
- linter.register_checker(OverlappingExceptionsChecker(linter))
- linter.disable('I')
- return linter
+@pytest.fixture(scope='module')
+def checker(checker):
+ return OverlappingExceptionsChecker
+
+
+@pytest.fixture(scope='module')
+def disable(disable):
+ return ['I']
def test_overlapping_exceptions(linter):
diff --git a/pylint/test/extensions/test_redefined.py b/pylint/test/extensions/test_redefined.py
index 7e02f8593..fbc6fc073 100644
--- a/pylint/test/extensions/test_redefined.py
+++ b/pylint/test/extensions/test_redefined.py
@@ -10,10 +10,8 @@ import os.path as osp
import pytest
-from pylint import checkers
from pylint.extensions.redefined_variable_type import MultipleTypesChecker
-from pylint.lint import PyLinter, fix_import_path
-from pylint.testutils import MinimalTestReporter
+from pylint.lint import fix_import_path
EXPECTED = [
@@ -30,13 +28,13 @@ EXPECTED = [
@pytest.fixture(scope="module")
-def linter():
- linter = PyLinter()
- linter.set_reporter(MinimalTestReporter())
- checkers.initialize(linter)
- linter.register_checker(MultipleTypesChecker(linter))
- linter.disable('I')
- return linter
+def checker(checker):
+ return MultipleTypesChecker
+
+
+@pytest.fixture(scope="module")
+def disable(disable):
+ return ['I']
def test_types_redefined(linter):
diff --git a/pylint/test/test_regr.py b/pylint/test/test_regr.py
index 8bb5adced..fb29d87a8 100644
--- a/pylint/test/test_regr.py
+++ b/pylint/test/test_regr.py
@@ -16,9 +16,7 @@ import pytest
import astroid
import pylint.testutils as testutils
-from pylint import checkers
from pylint import epylint
-from pylint import lint
REGR_DATA = join(dirname(abspath(__file__)), 'regrtest_data')
@@ -31,14 +29,13 @@ except AttributeError:
@pytest.fixture(scope="module")
-def linter():
- test_reporter = testutils.TestReporter()
- linter = lint.PyLinter()
- linter.set_reporter(test_reporter)
- linter.disable('I')
- linter.config.persistent = 0
- checkers.initialize(linter)
- return linter
+def reporter(reporter):
+ return testutils.TestReporter
+
+
+@pytest.fixture(scope="module")
+def disable(disable):
+ return ['I']
@pytest.fixture
diff --git a/pylint/test/unittest_lint.py b/pylint/test/unittest_lint.py
index d687fcf37..9afea1bcc 100644
--- a/pylint/test/unittest_lint.py
+++ b/pylint/test/unittest_lint.py
@@ -200,15 +200,14 @@ def test_more_args(fake_path, case):
assert sys.path == fake_path
-@pytest.fixture
-def linter():
- linter = PyLinter()
- linter.disable('I')
- linter.config.persistent = 0
- # register checkers
- checkers.initialize(linter)
- linter.set_reporter(testutils.TestReporter())
- return linter
+@pytest.fixture(scope='module')
+def disable(disable):
+ return ['I']
+
+
+@pytest.fixture(scope='module')
+def reporter(reporter):
+ return testutils.TestReporter
@pytest.fixture
diff --git a/pylint/test/unittest_reporting.py b/pylint/test/unittest_reporting.py
index 11cd5cdce..8a2ed17e4 100644
--- a/pylint/test/unittest_reporting.py
+++ b/pylint/test/unittest_reporting.py
@@ -4,7 +4,6 @@
# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
# For details: https://github.com/PyCQA/pylint/blob/master/COPYING
-import os
import warnings
import six
@@ -15,15 +14,14 @@ from pylint.reporters.text import TextReporter, ParseableTextReporter
import pytest
-@pytest.fixture
-def linter():
- linter = PyLinter(reporter=TextReporter())
- linter.disable('I')
- linter.config.persistent = 0
- # register checkers
- checkers.initialize(linter)
- os.environ.pop('PYLINTRC', None)
- return linter
+@pytest.fixture(scope='module')
+def reporter(reporter):
+ return TextReporter
+
+
+@pytest.fixture(scope='module')
+def disable(disable):
+ return ['I']
def test_template_option(linter):