diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml new file mode 100644 index 0000000..e5e2bba --- /dev/null +++ b/.gitea/workflows/test.yml @@ -0,0 +1,22 @@ +name: Test + +on: + pull_request: + push: + branches: [main] + +jobs: + pytest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Install test dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + - name: Run test suite + run: | + make test diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c3d6fa2 --- /dev/null +++ b/Makefile @@ -0,0 +1,4 @@ +.PHONY: test + +test: + python3 -m pytest tests/test_ci_config.py scripts/test_*.py -v diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..75b4ea8 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pytest>=8,<9 diff --git a/tests/test_ci_config.py b/tests/test_ci_config.py new file mode 100644 index 0000000..871147f --- /dev/null +++ b/tests/test_ci_config.py @@ -0,0 +1,19 @@ +from pathlib import Path + + +def test_requirements_makefile_and_workflow_exist() -> None: + assert Path("requirements.txt").exists() + assert Path("Makefile").exists() + assert Path(".gitea/workflows/test.yml").exists() + + +def test_ci_workflow_runs_project_test_command() -> None: + workflow = Path(".gitea/workflows/test.yml").read_text(encoding="utf-8") + requirements = Path("requirements.txt").read_text(encoding="utf-8") + makefile = Path("Makefile").read_text(encoding="utf-8") + + assert "pytest" in requirements + assert "test:" in makefile + assert "python3 -m pytest tests/test_ci_config.py scripts/test_*.py -v" in makefile + assert "pip install -r requirements.txt" in workflow + assert "make test" in workflow