Skip to content

Commit 4726972

Browse files
authored
chore: refactor testing code to reduce use of get_app() (#4890)
1 parent c17c39b commit 4726972

34 files changed

+610
-464
lines changed

.config/vulture_whitelist.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@
2626
_.BRIGHT_MAGENTA # unused variable (src/ansiblelint/output.py:185)
2727
_.BRIGHT_CYAN # unused variable (src/ansiblelint/output.py:186)
2828
_.BRIGHT_WHITE # unused variable (src/ansiblelint/output.py:187)
29+
formatter_collection # unused function (test/test_formatter.py:47)
30+
json_formatter_collection # unused function (test/test_formatter_json.py:29)
31+
sarif_formatter_collection # unused function (test/test_formatter_sarif.py:47)

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ junit.xml
3737
.python-version
3838

3939
# Environments
40-
.env
4140
.venv
4241
env/
4342
venv/

.vscode/extensions.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
"ryanluker.vscode-coverage-gutters",
1616
"shardulm94.trailing-spaces",
1717
"tombi-toml.tombi",
18-
"timonwong.shellcheck",
19-
"znck.grammarly"
18+
"timonwong.shellcheck"
2019
],
2120
"unwantedRecommendations": [
2221
"esbenp.prettier-vscode",

.vscode/settings.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,6 @@
3333
"build": true
3434
},
3535
"git.ignoreLimitWarning": true,
36-
"grammarly.config.documentDomain": "academic",
37-
"grammarly.files.include": ["**/*.txt", "**/*.md"],
3836
"mypy-type-checker.severity": {
3937
"error": "Warning"
4038
},

mise.toml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# Ensure that you can use `uv` directly if you already have a pre-activated
2+
# virtual environment, otherwise `uv sync` will refuse to run as it will
3+
# complain about uv project environment being different than yours.
4+
[env]
5+
UV_PROJECT_ENVIRONMENT = "{{ get_env(name='VIRTUAL_ENV', default='.venv') }}"
6+
7+
[tools]
8+
python = "latest"

src/ansiblelint/rules/avoid_implicit.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,19 +44,21 @@ def matchtask(
4444
from ansiblelint.rules import RulesCollection
4545
from ansiblelint.runner import Runner
4646

47-
def test_template_instead_of_copy_positive() -> None:
47+
def test_template_instead_of_copy_positive(
48+
empty_rule_collection: RulesCollection,
49+
) -> None:
4850
"""Positive test for avoid-implicit."""
49-
collection = RulesCollection()
50-
collection.register(AvoidImplicitRule())
51+
empty_rule_collection.register(AvoidImplicitRule())
5152
success = "examples/playbooks/rule-avoid-implicit-pass.yml"
52-
good_runner = Runner(success, rules=collection)
53+
good_runner = Runner(success, rules=empty_rule_collection)
5354
assert good_runner.run() == []
5455

55-
def test_template_instead_of_copy_negative() -> None:
56+
def test_template_instead_of_copy_negative(
57+
empty_rule_collection: RulesCollection,
58+
) -> None:
5659
"""Negative test for avoid-implicit."""
57-
collection = RulesCollection()
58-
collection.register(AvoidImplicitRule())
60+
empty_rule_collection.register(AvoidImplicitRule())
5961
failure = "examples/playbooks/rule-avoid-implicit-fail.yml"
60-
bad_runner = Runner(failure, rules=collection)
62+
bad_runner = Runner(failure, rules=empty_rule_collection)
6163
errs = bad_runner.run()
6264
assert len(errs) == 1

src/ansiblelint/rules/deprecated_bare_vars.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,19 +112,17 @@ def _matchvar(
112112
from ansiblelint.runner import Runner
113113

114114
@pytest.mark.filterwarnings("ignore::ansible_compat.runtime.AnsibleWarning")
115-
def test_use_bare_positive() -> None:
115+
def test_use_bare_positive(empty_rule_collection: RulesCollection) -> None:
116116
"""Positive test for deprecated-bare-vars."""
117-
collection = RulesCollection()
118-
collection.register(UsingBareVariablesIsDeprecatedRule())
117+
empty_rule_collection.register(UsingBareVariablesIsDeprecatedRule())
119118
success = "examples/playbooks/rule-deprecated-bare-vars-pass.yml"
120-
good_runner = Runner(success, rules=collection)
119+
good_runner = Runner(success, rules=empty_rule_collection)
121120
assert good_runner.run() == []
122121

123-
def test_use_bare_negative() -> None:
122+
def test_use_bare_negative(empty_rule_collection: RulesCollection) -> None:
124123
"""Negative test for deprecated-bare-vars."""
125-
collection = RulesCollection()
126-
collection.register(UsingBareVariablesIsDeprecatedRule())
124+
empty_rule_collection.register(UsingBareVariablesIsDeprecatedRule())
127125
failure = "examples/playbooks/rule-deprecated-bare-vars-fail.yml"
128-
bad_runner = Runner(failure, rules=collection)
126+
bad_runner = Runner(failure, rules=empty_rule_collection)
129127
errs = bad_runner.run()
130128
assert len(errs) == 11

src/ansiblelint/rules/deprecated_local_action.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ def test_local_action_transform_fail(
229229
def test_local_action_transform(
230230
config_options: Options,
231231
monkeypatch: pytest.MonkeyPatch,
232+
empty_rule_collection: RulesCollection,
232233
) -> None:
233234
"""Test transform functionality for no-log-password rule."""
234235
monkeypatch.setenv("ANSIBLE_LINT_WRITE_TMP", "1")
@@ -237,10 +238,9 @@ def test_local_action_transform(
237238
config_options.write_list = ["all"]
238239

239240
config_options.lintables = [str(playbook)]
240-
only_local_action_rule: RulesCollection = RulesCollection()
241-
only_local_action_rule.register(TaskNoLocalActionRule())
241+
empty_rule_collection.register(TaskNoLocalActionRule())
242242
runner_result = get_matches(
243-
rules=only_local_action_rule,
243+
rules=empty_rule_collection,
244244
options=config_options,
245245
)
246246
transformer = Transformer(result=runner_result, options=config_options)

src/ansiblelint/rules/empty_string_compare.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,26 @@ def matchtask(
5858
from ansiblelint.rules import RulesCollection
5959
from ansiblelint.runner import Runner
6060

61-
def test_rule_empty_string_compare_fail() -> None:
61+
def test_rule_empty_string_compare_fail(
62+
empty_rule_collection: RulesCollection,
63+
) -> None:
6264
"""Test rule matches."""
63-
rules = RulesCollection()
64-
rules.register(ComparisonToEmptyStringRule())
65+
empty_rule_collection.register(ComparisonToEmptyStringRule())
6566
results = Runner(
6667
"examples/playbooks/rule-empty-string-compare-fail.yml",
67-
rules=rules,
68+
rules=empty_rule_collection,
6869
).run()
6970
assert len(results) == 3
7071
for result in results:
7172
assert result.message == ComparisonToEmptyStringRule().shortdesc
7273

73-
def test_rule_empty_string_compare_pass() -> None:
74+
def test_rule_empty_string_compare_pass(
75+
empty_rule_collection: RulesCollection,
76+
) -> None:
7477
"""Test rule matches."""
75-
rules = RulesCollection()
76-
rules.register(ComparisonToEmptyStringRule())
78+
empty_rule_collection.register(ComparisonToEmptyStringRule())
7779
results = Runner(
7880
"examples/playbooks/rule-empty-string-compare-pass.yml",
79-
rules=rules,
81+
rules=empty_rule_collection,
8082
).run()
8183
assert len(results) == 0, results

src/ansiblelint/rules/fqcn.py

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -266,12 +266,11 @@ def transform(
266266
from ansiblelint.runner import Runner
267267

268268
@pytest.mark.libyaml
269-
def test_fqcn_builtin_fail() -> None:
269+
def test_fqcn_builtin_fail(empty_rule_collection: RulesCollection) -> None:
270270
"""Test rule matches."""
271-
collection = RulesCollection()
272-
collection.register(FQCNBuiltinsRule())
271+
empty_rule_collection.register(FQCNBuiltinsRule())
273272
success = "examples/playbooks/rule-fqcn-fail.yml"
274-
results = Runner(success, rules=collection).run()
273+
results = Runner(success, rules=empty_rule_collection).run()
275274
assert len(results) == 3
276275
assert results[0].tag == "fqcn[keyword]"
277276
assert "Avoid `collections` keyword" in results[0].message
@@ -280,36 +279,32 @@ def test_fqcn_builtin_fail() -> None:
280279
assert results[2].tag == "fqcn[action]"
281280
assert "Use FQCN for module actions, such" in results[2].message
282281

283-
def test_fqcn_builtin_pass() -> None:
282+
def test_fqcn_builtin_pass(empty_rule_collection: RulesCollection) -> None:
284283
"""Test rule does not match."""
285-
collection = RulesCollection()
286-
collection.register(FQCNBuiltinsRule())
284+
empty_rule_collection.register(FQCNBuiltinsRule())
287285
success = "examples/playbooks/rule-fqcn-pass.yml"
288-
results = Runner(success, rules=collection).run()
286+
results = Runner(success, rules=empty_rule_collection).run()
289287
assert len(results) == 0, results
290288

291-
def test_fqcn_deep_fail() -> None:
289+
def test_fqcn_deep_fail(empty_rule_collection: RulesCollection) -> None:
292290
"""Test rule matches."""
293-
collection = RulesCollection()
294-
collection.register(FQCNBuiltinsRule())
291+
empty_rule_collection.register(FQCNBuiltinsRule())
295292
failure = "examples/.collection/plugins/modules/deep/beta.py"
296-
results = Runner(failure, rules=collection).run()
293+
results = Runner(failure, rules=empty_rule_collection).run()
297294
assert len(results) == 1
298295
assert results[0].tag == "fqcn[deep]"
299296
assert "Deep plugins directory is discouraged" in results[0].message
300297

301-
def test_fqcn_deep_pass() -> None:
298+
def test_fqcn_deep_pass(empty_rule_collection: RulesCollection) -> None:
302299
"""Test rule does not match."""
303-
collection = RulesCollection()
304-
collection.register(FQCNBuiltinsRule())
300+
empty_rule_collection.register(FQCNBuiltinsRule())
305301
success = "examples/.collection/plugins/modules/alpha.py"
306-
results = Runner(success, rules=collection).run()
302+
results = Runner(success, rules=empty_rule_collection).run()
307303
assert len(results) == 0
308304

309-
def test_fqcn_deep_test_dir_pass() -> None:
305+
def test_fqcn_deep_test_dir_pass(empty_rule_collection: RulesCollection) -> None:
310306
"""Test rule does not match."""
311-
collection = RulesCollection()
312-
collection.register(FQCNBuiltinsRule())
307+
empty_rule_collection.register(FQCNBuiltinsRule())
313308
success = "examples/.collection/plugins/modules/tests/gamma.py"
314-
results = Runner(success, rules=collection).run()
309+
results = Runner(success, rules=empty_rule_collection).run()
315310
assert len(results) == 0

0 commit comments

Comments
 (0)