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

1import textwrap 

2from contextlib import chdir 

3 

4from ewok import Context, task 

5from ewok.cli import include_other_project_tasks 

6from invoke import Collection 

7 

8 

9def test_project_tasks_override_existing_namespace(tmp_path, capsys): 

10 """A project *.tasks.py must replace a same-named packaged namespace.""" 

11 

12 @task 

13 def packaged_run(_: Context): 

14 return "packaged" 

15 

16 root = Collection("root") 

17 packaged = Collection("namespace_override") 

18 packaged.add_task(packaged_run, "run") 

19 root.add_collection(packaged, "namespace_override") 

20 

21 project_module = textwrap.dedent( 

22 """ 

23 from ewok import task 

24 

25 @task(name="run") 

26 def project_run(c): 

27 return "project" 

28 """ 

29 ) 

30 

31 (tmp_path / "namespace_override.tasks.py").write_text(project_module) 

32 

33 with chdir(tmp_path): 

34 include_other_project_tasks(root) 

35 

36 resolved = root.collections["namespace-override"].tasks["run"] 

37 assert resolved.body.__name__ == "project_run" 

38 assert "namespace-override" in capsys.readouterr().err