summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDudeNr33 <3929834+DudeNr33@users.noreply.github.com>2021-08-09 06:44:21 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-08-09 20:00:57 +0200
commit21501960a009eba20da8dd0d8f72f5b8e56d282c (patch)
treece81420682b62c37e3f0a1762c58d6516ad91c42
parentb7c0a35682077c9d8e77657cae39178bd84196f0 (diff)
downloadpylint-git-21501960a009eba20da8dd0d8f72f5b8e56d282c.tar.gz
Convert ``get_project`` to a fixture instead of implementing it under ``pylint.testutils.pyreverse``.
-rw-r--r--pylint/testutils/pyreverse.py16
-rw-r--r--tests/pyreverse/conftest.py21
-rw-r--r--tests/pyreverse/test_diadefs.py9
-rw-r--r--tests/pyreverse/test_inspector.py3
-rw-r--r--tests/pyreverse/test_writer.py16
5 files changed, 31 insertions, 34 deletions
diff --git a/pylint/testutils/pyreverse.py b/pylint/testutils/pyreverse.py
deleted file mode 100644
index 3546c0bf6..000000000
--- a/pylint/testutils/pyreverse.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
-# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE
-
-
-from typing import Optional
-
-from pylint.pyreverse.inspector import Project, project_from_files
-
-
-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)
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)