Testing
=======
Use `pytest` to run the tests in [the tests directory](dinglehopper/tests):
```bash
virtualenv -p /usr/bin/python3 venv
. venv/bin/activate
pip install -r requirements.txt
pip install -r requirements-dev.txt
pytest
```

## Test running examples

Only unit tests:
```bash
pytest -m "not integration"
```

Only integration tests:
```bash
pytest -m integration
```

All tests:
```bash
pytest
```

All tests with code coverage:
```bash
pytest --cov=dinglehopper --cov-report=html
```

Static code analysis:
```bash
pytest -k "not test" --mypy
pytest -k "not test" --ruff
```

# How to use pre-commit

This project optionally uses [pre-commit](https://pre-commit.com) to check commits. To use it:

- Install pre-commit, e.g. `pip install -r requirements-dev.txt`
- Install the repo-local git hooks: `pre-commit install`


# Releasing a new version

- Update `ocrd-tool.json`
- `git commit`
- `git tag vx.y.z`
- `git push && git push --tags`
- The GitHub Actions workflow `release` will now create
  a. a new release on GitHub and
  b. a new release on PyPI
- Currently requires a review for PYPI?