diff options
author | DudeNr33 <3929834+DudeNr33@users.noreply.github.com> | 2021-08-09 06:44:21 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-08-09 20:00:57 +0200 |
commit | 21501960a009eba20da8dd0d8f72f5b8e56d282c (patch) | |
tree | ce81420682b62c37e3f0a1762c58d6516ad91c42 /tests/pyreverse | |
parent | b7c0a35682077c9d8e77657cae39178bd84196f0 (diff) | |
download | pylint-git-21501960a009eba20da8dd0d8f72f5b8e56d282c.tar.gz |
Convert ``get_project`` to a fixture instead of implementing it under ``pylint.testutils.pyreverse``.
Diffstat (limited to 'tests/pyreverse')
-rw-r--r-- | tests/pyreverse/conftest.py | 21 | ||||
-rw-r--r-- | tests/pyreverse/test_diadefs.py | 9 | ||||
-rw-r--r-- | tests/pyreverse/test_inspector.py | 3 | ||||
-rw-r--r-- | tests/pyreverse/test_writer.py | 16 |
4 files changed, 31 insertions, 18 deletions
diff --git a/tests/pyreverse/conftest.py b/tests/pyreverse/conftest.py index 7852795d3..f079f7105 100644 --- a/tests/pyreverse/conftest.py +++ b/tests/pyreverse/conftest.py @@ -1,7 +1,9 @@ -from typing import Optional, Tuple +from typing import Callable, Optional, Tuple import pytest +from pylint.pyreverse.inspector import Project, project_from_files + # This class could and should be replaced with a simple dataclass when support for Python < 3.7 is dropped. # A NamedTuple is not possible as some tests need to modify attributes during the test. @@ -41,12 +43,25 @@ class PyreverseConfig: # pylint: disable=too-many-instance-attributes, too-many @pytest.fixture() -def default_config(): +def default_config() -> PyreverseConfig: return PyreverseConfig() @pytest.fixture() -def vcg_config(): +def vcg_config() -> PyreverseConfig: return PyreverseConfig( output_format="vcg", ) + + +@pytest.fixture(scope="session") +def get_project() -> Callable: + def _get_project(module: str, name: Optional[str] = "No Name") -> Project: + """return an astroid project representation""" + + def _astroid_wrapper(func, modname): + return func(modname) + + return project_from_files([module], _astroid_wrapper, project_name=name) + + return _get_project diff --git a/tests/pyreverse/test_diadefs.py b/tests/pyreverse/test_diadefs.py index eb7327e85..3f08c1f3d 100644 --- a/tests/pyreverse/test_diadefs.py +++ b/tests/pyreverse/test_diadefs.py @@ -31,7 +31,6 @@ from pylint.pyreverse.diadefslib import ( DiadefsHandler, ) from pylint.pyreverse.inspector import Linker -from pylint.testutils.pyreverse import get_project def _process_classes(classes): @@ -55,7 +54,7 @@ def HANDLER(default_config): @pytest.fixture(scope="module") -def PROJECT(): +def PROJECT(get_project): return get_project("data") @@ -111,7 +110,7 @@ class TestDefaultDiadefGenerator: relations = _process_relations(cd.relationships) assert relations == self._should_rels - def test_functional_relation_extraction(self, default_config): + def test_functional_relation_extraction(self, default_config, get_project): """functional test of relations extraction; different classes possibly in different modules""" # XXX should be catching pyreverse environnement problem but doesn't @@ -149,7 +148,7 @@ def test_known_values1(HANDLER, PROJECT): ] -def test_known_values2(HANDLER): +def test_known_values2(HANDLER, get_project): project = get_project("data.clientmodule_test") dd = DefaultDiadefGenerator(Linker(project), HANDLER).visit(project) assert len(dd) == 1 @@ -193,7 +192,7 @@ def test_known_values4(HANDLER, PROJECT): @pytest.mark.skipif(sys.version_info < (3, 8), reason="Requires dataclasses") -def test_regression_dataclasses_inference(HANDLER): +def test_regression_dataclasses_inference(HANDLER, get_project): project_path = Path("regrtest_data") / "dataclasses_pyreverse" path = get_project(str(project_path)) diff --git a/tests/pyreverse/test_inspector.py b/tests/pyreverse/test_inspector.py index bf72efe21..cbd67bedd 100644 --- a/tests/pyreverse/test_inspector.py +++ b/tests/pyreverse/test_inspector.py @@ -20,11 +20,10 @@ import astroid import pytest from pylint.pyreverse import inspector -from pylint.testutils.pyreverse import get_project @pytest.fixture -def project(): +def project(get_project): project = get_project("data", "data") linker = inspector.Linker(project) linker.visit(project) diff --git a/tests/pyreverse/test_writer.py b/tests/pyreverse/test_writer.py index 4861be0f1..3ed1d1e68 100644 --- a/tests/pyreverse/test_writer.py +++ b/tests/pyreverse/test_writer.py @@ -17,7 +17,7 @@ # For details: https://github.com/PyCQA/pylint/blob/main/LICENSE """ -unit test for visitors.diadefs and extensions.diadefslib modules +Unit test for ``DiagramWriter`` """ @@ -32,7 +32,6 @@ from pylint.pyreverse.dot_printer import DotPrinter from pylint.pyreverse.inspector import Linker from pylint.pyreverse.vcg_printer import VCGPrinter from pylint.pyreverse.writer import DiagramWriter -from pylint.testutils.pyreverse import get_project _DEFAULTS = { "all_ancestors": None, @@ -78,21 +77,22 @@ VCG_FILES = ["packages_No_Name.vcg", "classes_No_Name.vcg"] @pytest.fixture() -def setup_dot(default_config): +def setup_dot(default_config, get_project): config = default_config writer = DiagramWriter(config, printer_class=DotPrinter) - yield from _setup(config, writer) + project = get_project(os.path.join(os.path.dirname(__file__), "..", "data")) + yield from _setup(project, config, writer) @pytest.fixture() -def setup_vcg(vcg_config): +def setup_vcg(vcg_config, get_project): config = vcg_config writer = DiagramWriter(config, printer_class=VCGPrinter) - yield from _setup(config, writer) + project = get_project(os.path.join(os.path.dirname(__file__), "..", "data")) + yield from _setup(project, config, writer) -def _setup(config, writer): - project = get_project(os.path.join(os.path.dirname(__file__), "..", "data")) +def _setup(project, config, writer): linker = Linker(project) handler = DiadefsHandler(config) dd = DefaultDiadefGenerator(linker, handler).visit(project) |