Skip to content

Commit

Permalink
Report warnings from independence contract
Browse files Browse the repository at this point in the history
  • Loading branch information
seddonym committed Mar 24, 2022
1 parent 73d9b04 commit f96d4b6
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
6 changes: 4 additions & 2 deletions src/importlinter/contracts/independence.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def check(self, graph: ImportGraph) -> ContractCheck:
is_kept = True
invalid_chains = []

contract_utils.remove_ignored_imports(
warnings = contract_utils.remove_ignored_imports(
graph=graph,
ignore_imports=self.ignore_imports, # type: ignore
unmatched_alerting=self.unmatched_ignore_imports_alerting, # type: ignore
Expand Down Expand Up @@ -75,7 +75,9 @@ def check(self, graph: ImportGraph) -> ContractCheck:
if subpackage_chain_data["chains"]:
invalid_chains.append(subpackage_chain_data)

return ContractCheck(kept=is_kept, metadata={"invalid_chains": invalid_chains})
return ContractCheck(
kept=is_kept, warnings=warnings, metadata={"invalid_chains": invalid_chains}
)

def render_broken_contract(self, check: "ContractCheck") -> None:
count = 0
Expand Down
29 changes: 28 additions & 1 deletion tests/unit/contracts/test_independence.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import pytest
from grimp.adaptors.graph import ImportGraph # type: ignore

from importlinter.application.app_config import settings
from importlinter.contracts.independence import IndependenceContract
from importlinter.domain.contract import ContractCheck

from tests.adapters.printing import FakePrinter


Expand Down Expand Up @@ -303,6 +303,33 @@ def test_ignore_imports(ignore_imports, is_kept):
assert is_kept == contract_check.kept


def test_ignore_imports_adds_warnings():
graph = ImportGraph()
graph.add_module("mypackage")
graph.add_import(
importer="mypackage.green", imported="mypackage.blue", line_number=1, line_contents="-"
)
contract = IndependenceContract(
name="Independence contract",
session_options={"root_packages": ["mypackage"]},
contract_options={
"modules": ("mypackage.green", "mypackage.blue"),
"ignore_imports": [
"mypackage.green.* -> mypackage.blue",
"mypackage.nonexistent -> mypackage.blue",
],
"unmatched_ignore_imports_alerting": "warn",
},
)

contract_check = contract.check(graph=graph)

assert set(contract_check.warnings) == {
"No matches for ignored import mypackage.green.* -> mypackage.blue.",
"No matches for ignored import mypackage.nonexistent -> mypackage.blue.",
}


def test_render_broken_contract():
settings.configure(PRINTER=FakePrinter())
contract = IndependenceContract(
Expand Down

0 comments on commit f96d4b6

Please sign in to comment.