/ dev / clint / tests / rules / test_unknown_mlflow_arguments.py
test_unknown_mlflow_arguments.py
 1  from pathlib import Path
 2  
 3  import pytest
 4  from clint.config import Config
 5  from clint.index import SymbolIndex
 6  from clint.linter import Position, Range, lint_file
 7  from clint.rules.unknown_mlflow_arguments import UnknownMlflowArguments
 8  
 9  
10  def test_unknown_mlflow_arguments(index: SymbolIndex) -> None:
11      code = '''
12  def bad():
13      """
14      .. code-block:: python
15  
16          import mlflow
17  
18          mlflow.log_param(foo="bar")
19  
20      """
21  
22  def good():
23      """
24      .. code-block:: python
25  
26          import mlflow
27  
28          mlflow.log_param(key="k", value="v")
29      """
30  '''
31      config = Config(
32          select={UnknownMlflowArguments.name},
33          example_rules=[UnknownMlflowArguments.name],
34      )
35      violations = lint_file(Path("test.py"), code, config, index)
36      assert len(violations) == 1
37      assert all(isinstance(v.rule, UnknownMlflowArguments) for v in violations)
38      assert violations[0].range == Range(Position(7, 8))
39  
40  
41  @pytest.mark.parametrize("suffix", [".md", ".mdx"])
42  def test_unknown_mlflow_arguments_markdown(index: SymbolIndex, suffix: str) -> None:
43      code = """
44  # Bad
45  
46  ```python
47  import mlflow
48  
49  mlflow.log_param(foo="bar")
50  ```
51  
52  # Good
53  
54  ```python
55  import mlflow
56  
57  mlflow.log_param(key="k", value="v")
58  ```
59  """
60      config = Config(
61          select={UnknownMlflowArguments.name},
62          example_rules=[UnknownMlflowArguments.name],
63      )
64      violations = lint_file(Path("test").with_suffix(suffix), code, config, index)
65      assert len(violations) == 1
66      assert all(isinstance(v.rule, UnknownMlflowArguments) for v in violations)
67      assert violations[0].range == Range(Position(6, 0))