Coverage for tests/test_namespace_override.py: 95%
20 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-13 17:03 +0200
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-13 17:03 +0200
1import textwrap
2from contextlib import chdir
4from ewok import Context, task
5from ewok.cli import include_other_project_tasks
6from invoke import Collection
9def test_project_tasks_override_existing_namespace(tmp_path, capsys):
10 """A project *.tasks.py must replace a same-named packaged namespace."""
12 @task
13 def packaged_run(_: Context):
14 return "packaged"
16 root = Collection("root")
17 packaged = Collection("namespace_override")
18 packaged.add_task(packaged_run, "run")
19 root.add_collection(packaged, "namespace_override")
21 project_module = textwrap.dedent(
22 """
23 from ewok import task
25 @task(name="run")
26 def project_run(c):
27 return "project"
28 """
29 )
31 (tmp_path / "namespace_override.tasks.py").write_text(project_module)
33 with chdir(tmp_path):
34 include_other_project_tasks(root)
36 resolved = root.collections["namespace-override"].tasks["run"]
37 assert resolved.body.__name__ == "project_run"
38 assert "namespace-override" in capsys.readouterr().err