def test_empty() -> None:
    """
    Test empty rules case.
    """
    # Given
    dependency = Dependency(Module("toto"))
    authorized_modules: List[ModuleWildcard] = []

    # When
    with raises(NotAllowedDependencyException) as error:
        check_dependency(PARSER, dependency, authorized_modules)

    # Then
    assert error
    assert error.value.dependency == dependency.main_import
    assert error.value.authorized_modules == authorized_modules
def test_not_passing_case() -> None:
    """
    Test a not passing case.
    """
    # Given
    dependency = Dependency(Module("toto.tata"))
    rules: Rules = [
        (ModuleWildcard("toto.*"), ModuleWildcard("toto")),
        (ModuleWildcard("toto.*"), ModuleWildcard("te.*")),
        (ModuleWildcard("toto.*"), ModuleWildcard("titi\\.tata")),
    ]

    # When
    with raises(NotAllowedDependencyException) as error:
        check_dependency(PARSER, dependency, rules)

    # Then
    assert error
    assert error.value.dependency == dependency.main_import
    assert error.value.authorized_modules == [r for _, r in rules]
def test_passing_case() -> None:
    """
    Test a passing case.
    """
    # Given
    dependency = Dependency(Module("toto"))
    rules: Rules = [
        (ModuleWildcard("toto"), ModuleWildcard("to*")),
        (ModuleWildcard("toto"), ModuleWildcard("titi.tata")),
    ]

    # When
    error = None
    try:
        check_dependency(PARSER, dependency, rules)
    except NotAllowedDependencyException as exception:
        error = exception

    # Then
    assert not error
Beispiel #4
0
 def _iter_error(self, source_file: SourceFile) -> Iterator[DependencyError]:
     rules = self._get_rules(source_file.module)
     self.all_rules.update(set(rules))
     dependencies = get_import_from_dependencies(source_file, self.parser)
     dependencies = self.std_lib_filter.filter(dependencies)
     for dependency in dependencies:
         try:
             self.used_rules |= check_dependency(self.parser, dependency, rules)
         except NotAllowedDependencyException as error:
             yield DependencyError(
                 source_file.module,
                 error.dependency,
                 tuple(sorted(error.authorized_modules)),
             )