Coverage for /home/runner/work/coxbuild/coxbuild/src/coxbuild/extensions/python/test.py: 0%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

26 statements  

1from pathlib import Path 

2 

3from coxbuild import get_working_directory 

4from coxbuild.schema import depend, group, precond, run, task 

5 

6from .. import ProjectSettings, withProject 

7from . import grouped 

8from .package import hasPackages, upgradePackages 

9 

10subgrouped = group("test") 

11 

12 

13@grouped 

14@subgrouped 

15@precond(lambda: not hasPackages({"pytest": "*", "pytest-asyncio": "*", "pytest-cov": "*", "coverage": "*"})) 

16@task 

17def restore(): 

18 """Restore Python test tools.""" 

19 upgradePackages("pytest", "pytest-asyncio", "coverage", "pytest-cov") 

20 

21 

22@grouped 

23@subgrouped 

24@withProject 

25@depend(restore) 

26@task 

27def pytest(src: Path | None = None, test: Path | None = None, *, project: ProjectSettings): 

28 """Use pytest to test Python code.""" 

29 run(["pytest", "--cov-report=term-missing", 

30 "--cov-report=html", f"--cov={str(src or project.src)}"], cwd=str(test or project.test)) 

31 

32 

33@grouped 

34@subgrouped 

35@depend(pytest) 

36@task 

37def test(): 

38 """Test Python code.""" 

39 pass