diff options
author | DudeNr33 <3929834+DudeNr33@users.noreply.github.com> | 2021-08-08 15:53:04 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-08-09 20:00:57 +0200 |
commit | 57300194ca9281e2477f1d6ff02c115188986991 (patch) | |
tree | 7ec5bd6a4063b8da6ce9dde40492c8cf55cdee00 /tests/pyreverse | |
parent | 4eaafd4da9b9028489f362d8b3c07763a91bea9f (diff) | |
download | pylint-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.py | 36 | ||||
-rw-r--r-- | tests/pyreverse/test_diadefs.py | 18 | ||||
-rw-r--r-- | tests/pyreverse/test_inspector.py | 2 | ||||
-rw-r--r-- | tests/pyreverse/test_writer.py | 25 |
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) |