icinga2-checks/check_docker/DEVLOPEMENT.md

48 lines
1.5 KiB
Markdown

# Development environment setup
You should have the following installed
- docker
- python (version >= 3.0)
- pipenv
- vagrant
Initialize your pipenv
pipenv install --skip-lock
# Running the tests
## Normal tests
tox and Pytest is used for testing. You can can run test by running the following from
the root of the project
tox
## Isolated tests
Sometimes test cases can interact with Docker on the development machine making
it hard to determine the cause of a test success or failure. To address this
you can use the `run_isolated_tests.sh` script to run pytest inside a
environment isolated from any network. Additionally this isolated test will
run the unit tests on multiple versions of python so you can validate your
changes are not python version specific.
./run_isolated_tests.sh
## Package tests
These test verify that, after created, the package can be installed and
runs successfully(not just passes unit tests). To do this a test environment is set up in vagrant.
./run_package_tests.sh
# Coverage report
The aim is to keep coverage above 90% on the actual checks
(check_docker.py and check_swarm.py). To generate a coverage report.
pipenv run py.test --cov=check_docker/
# Tips
When jumping back and forth between normal and isolated tests the `__pycache__`
directories can fall out fo sync with your execution environment. When this
happens you see errors like `ImportError: No module named 'check_docker'. The
fix is simple, just remove all the `__pycache__` directories in the project.