|
| 1 | +"""File with common jobs definitions. Run them with 'pdm run nox -e [job_name]'.""" |
1 | 2 | import os |
| 3 | +import tempfile |
2 | 4 |
|
3 | 5 | import nox |
| 6 | +from nox.sessions import Session |
4 | 7 |
|
5 | 8 | os.environ.update(PDM_IGNORE_SAVED_PYTHON="1", PDM_USE_VENV="1") |
6 | 9 |
|
| 10 | +PYSRC = ["src/", "noxfile.py", "tests/"] |
7 | 11 |
|
8 | | -@nox.session(python=("3.9", "3.10", "3.11")) |
9 | | -def test(session): |
10 | | - session.run_always("pdm", "install", "-Gtest", external=True) |
11 | | - session.run("pytest", "tests/") |
| 12 | + |
| 13 | +@nox.session |
| 14 | +def test(session: Session) -> None: |
| 15 | + """Run tests. |
| 16 | + |
| 17 | + Args: |
| 18 | + session (Session): nox session object |
| 19 | + """ |
| 20 | + session.run_always("pdm", "install", "-G", "ci-tests", external=True) |
| 21 | + session.run("pytest", "--cov", "tests/") |
| 22 | + |
| 23 | + |
| 24 | +@nox.session |
| 25 | +def format(session: Session) -> None: |
| 26 | + """Run autoformatters. |
| 27 | + |
| 28 | + Args: |
| 29 | + session (Session): nox session object |
| 30 | + """ |
| 31 | + session.run_always("pdm", "install", "-G", "ci-quality", external=True) |
| 32 | + session.run("ruff", "check", "--config", "config/ruff.toml", "--fix", *PYSRC) |
| 33 | + session.run("black", "--config", "config/black.toml", *PYSRC) |
| 34 | + |
| 35 | + |
| 36 | +@nox.session |
| 37 | +def lint(session: Session) -> None: |
| 38 | + """Run ruff checks. |
| 39 | + |
| 40 | + Args: |
| 41 | + session (Session): nox session object |
| 42 | + """ |
| 43 | + session.run_always("pdm", "install", "-G", "ci-quality", external=True) |
| 44 | + session.run("ruff", "check", "--config", "config/ruff.toml", *PYSRC) |
| 45 | + |
| 46 | + |
| 47 | +@nox.session |
| 48 | +def check_types(session: Session) -> None: |
| 49 | + """Run type checking. |
| 50 | + |
| 51 | + Args: |
| 52 | + session (Session): nox session object |
| 53 | + """ |
| 54 | + session.run_always("pdm", "install", "-G", "ci-quality", external=True) |
| 55 | + session.run("mypy", "--config-file", "config/mypy.ini", *PYSRC) |
| 56 | + |
| 57 | + |
| 58 | +@nox.session |
| 59 | +def check_safety(session: Session) -> None: |
| 60 | + """Run safety checks. |
| 61 | + |
| 62 | + Args: |
| 63 | + session (Session): nox session object |
| 64 | + """ |
| 65 | + session.run_always("pdm", "install", "-G", "ci-quality", external=True) |
| 66 | + session.run("bandit", "--configfile", "config/bandit.toml", *PYSRC) |
| 67 | + with tempfile.NamedTemporaryFile() as requirements: |
| 68 | + session.run( |
| 69 | + "pdm", "export", "-f", "requirements", "-o", requirements.name, "--without-hashes", external=True |
| 70 | + ) |
| 71 | + session.run("safety", "check", f"--file={requirements.name}", "--full-report") |
0 commit comments