summaryrefslogtreecommitdiff
path: root/tests/pyreverse
diff options
context:
space:
mode:
authorDudeNr33 <3929834+DudeNr33@users.noreply.github.com>2021-08-08 15:53:04 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-08-09 20:00:57 +0200
commit57300194ca9281e2477f1d6ff02c115188986991 (patch)
tree7ec5bd6a4063b8da6ce9dde40492c8cf55cdee00 /tests/pyreverse
parent4eaafd4da9b9028489f362d8b3c07763a91bea9f (diff)
downloadpylint-git-57300194ca9281e2477f1d6ff02c115188986991.tar.gz
Extract commonly used test helpers into ``conftest.py`` and a testutils component.
Diffstat (limited to 'tests/pyreverse')
-rw-r--r--tests/pyreverse/conftest.py36
-rw-r--r--tests/pyreverse/test_diadefs.py18
-rw-r--r--tests/pyreverse/test_inspector.py2
-rw-r--r--tests/pyreverse/test_writer.py25
4 files changed, 54 insertions, 27 deletions
diff --git a/tests/pyreverse/conftest.py b/tests/pyreverse/conftest.py
new file mode 100644
index 000000000..fcfd0b145
--- /dev/null
+++ b/tests/pyreverse/conftest.py
@@ -0,0 +1,36 @@
+from dataclasses import dataclass
+from typing import List, Optional
+
+import pytest
+
+
+@dataclass
+class PyreverseConfig: # pylint: disable=too-many-instance-attributes
+ """Holds the configuration options for Pyreverse.
+ The default values correspond to the defaults of the options parser."""
+
+ mode: str = "PUB_ONLY"
+ classes: List = []
+ show_ancestors: Optional[int] = None
+ all_ancestors: Optional[bool] = None
+ show_associated: Optional[int] = None
+ all_associated: Optional[bool] = None
+ show_builtin: bool = False
+ module_names: Optional[bool] = None
+ only_classnames: bool = False
+ output_format: str = "dot"
+ ignore_list: List = []
+ project: str = ""
+ output_directory: str = ""
+
+
+@pytest.fixture()
+def default_config():
+ return PyreverseConfig()
+
+
+@pytest.fixture()
+def vcg_config():
+ return PyreverseConfig(
+ output_format="vcg",
+ )
diff --git a/tests/pyreverse/test_diadefs.py b/tests/pyreverse/test_diadefs.py
index 7d011f487..eb7327e85 100644
--- a/tests/pyreverse/test_diadefs.py
+++ b/tests/pyreverse/test_diadefs.py
@@ -23,7 +23,6 @@ from pathlib import Path
import astroid
import pytest
-from test_writer import Config, get_project
from pylint.pyreverse.diadefslib import (
ClassDiadefGenerator,
@@ -32,6 +31,7 @@ from pylint.pyreverse.diadefslib import (
DiadefsHandler,
)
from pylint.pyreverse.inspector import Linker
+from pylint.testutils.pyreverse import get_project
def _process_classes(classes):
@@ -50,8 +50,8 @@ def _process_relations(relations):
@pytest.fixture
-def HANDLER():
- return DiadefsHandler(Config())
+def HANDLER(default_config):
+ return DiadefsHandler(default_config)
@pytest.fixture(scope="module")
@@ -59,10 +59,10 @@ def PROJECT():
return get_project("data")
-def test_option_values(HANDLER, PROJECT):
+def test_option_values(default_config, HANDLER, PROJECT):
"""test for ancestor, associated and module options"""
df_h = DiaDefGenerator(Linker(PROJECT), HANDLER)
- cl_config = Config()
+ cl_config = default_config
cl_config.classes = ["Specialization"]
cl_h = DiaDefGenerator(Linker(PROJECT), DiadefsHandler(cl_config))
assert df_h._get_levels() == (0, 0)
@@ -76,9 +76,9 @@ def test_option_values(HANDLER, PROJECT):
hndl._set_default_options()
assert hndl._get_levels() == (-1, -1)
assert hndl.module_names
- handler = DiadefsHandler(Config())
+ handler = DiadefsHandler(default_config)
df_h = DiaDefGenerator(Linker(PROJECT), handler)
- cl_config = Config()
+ cl_config = default_config
cl_config.classes = ["Specialization"]
cl_h = DiaDefGenerator(Linker(PROJECT), DiadefsHandler(cl_config))
for hndl in (df_h, cl_h):
@@ -111,13 +111,13 @@ class TestDefaultDiadefGenerator:
relations = _process_relations(cd.relationships)
assert relations == self._should_rels
- def test_functional_relation_extraction(self):
+ def test_functional_relation_extraction(self, default_config):
"""functional test of relations extraction;
different classes possibly in different modules"""
# XXX should be catching pyreverse environnement problem but doesn't
# pyreverse doesn't extracts the relations but this test ok
project = get_project("data")
- handler = DiadefsHandler(Config())
+ handler = DiadefsHandler(default_config)
diadefs = handler.get_diadefs(project, Linker(project, tag=True))
cd = diadefs[1]
relations = _process_relations(cd.relationships)
diff --git a/tests/pyreverse/test_inspector.py b/tests/pyreverse/test_inspector.py
index 080e2b042..bf72efe21 100644
--- a/tests/pyreverse/test_inspector.py
+++ b/tests/pyreverse/test_inspector.py
@@ -18,9 +18,9 @@ import os
import astroid
import pytest
-from test_writer import get_project
from pylint.pyreverse import inspector
+from pylint.testutils.pyreverse import get_project
@pytest.fixture
diff --git a/tests/pyreverse/test_writer.py b/tests/pyreverse/test_writer.py
index efffabb74..4861be0f1 100644
--- a/tests/pyreverse/test_writer.py
+++ b/tests/pyreverse/test_writer.py
@@ -29,9 +29,10 @@ import pytest
from pylint.pyreverse.diadefslib import DefaultDiadefGenerator, DiadefsHandler
from pylint.pyreverse.dot_printer import DotPrinter
-from pylint.pyreverse.inspector import Linker, project_from_files
+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,
@@ -72,30 +73,20 @@ def _file_lines(path):
return [line for line in lines if line]
-def get_project(module, name="No Name"):
- """return an astroid project representation"""
-
- def _astroid_wrapper(func, modname):
- return func(modname)
-
- return project_from_files([module], _astroid_wrapper, project_name=name)
-
-
DOT_FILES = ["packages_No_Name.dot", "classes_No_Name.dot"]
VCG_FILES = ["packages_No_Name.vcg", "classes_No_Name.vcg"]
-@pytest.fixture(scope="module")
-def setup_dot():
- config = Config()
+@pytest.fixture()
+def setup_dot(default_config):
+ config = default_config
writer = DiagramWriter(config, printer_class=DotPrinter)
yield from _setup(config, writer)
-@pytest.fixture(scope="module")
-def setup_vcg():
- config = Config()
- config.output_format = "vcg"
+@pytest.fixture()
+def setup_vcg(vcg_config):
+ config = vcg_config
writer = DiagramWriter(config, printer_class=VCGPrinter)
yield from _setup(config, writer)