Files
mlflow--mlflow/dev/clint/tests/rules/test_assign_before_append.py
2026-07-13 13:22:34 +08:00

149 lines
4.1 KiB
Python

from pathlib import Path
from clint.config import Config
from clint.index import SymbolIndex
from clint.linter import Position, Range, lint_file
from clint.rules import AssignBeforeAppend
def test_assign_before_append_basic(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
item = transform(x)
items.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 1
assert all(isinstance(r.rule, AssignBeforeAppend) for r in results)
assert results[0].range == Range(Position(2, 0))
def test_assign_before_append_no_flag_different_variable(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
item = transform(x)
items.append(other_var)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_no_flag_no_empty_list_init(index: SymbolIndex) -> None:
code = """
for x in data:
item = transform(x)
items.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_no_flag_different_list(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
item = transform(x)
other_list.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_no_flag_three_statements(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
item = transform(x)
print(item)
items.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_no_flag_one_statement(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
items.append(transform(x))
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_no_flag_list_with_initial_values(index: SymbolIndex) -> None:
code = """
items = [1, 2, 3]
for x in data:
item = transform(x)
items.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_multiple_violations(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
item = transform(x)
items.append(item)
results = []
for y in other_data:
result = process(y)
results.append(result)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 2
assert all(isinstance(r.rule, AssignBeforeAppend) for r in results)
assert results[0].range == Range(Position(2, 0))
assert results[1].range == Range(Position(7, 0))
def test_assign_before_append_no_flag_complex_assignment(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
item, other = transform(x)
items.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_no_flag_attribute_assignment(index: SymbolIndex) -> None:
code = """
items = []
for x in data:
self.item = transform(x)
items.append(self.item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0
def test_assign_before_append_separated_statements(index: SymbolIndex) -> None:
code = """
items = []
other_statement()
for x in data:
item = transform(x)
items.append(item)
"""
config = Config(select={AssignBeforeAppend.name})
results = lint_file(Path("test.py"), code, config, index)
assert len(results) == 0