Developer’s Guide#
Testing Guidelines#
This section describes how to test the hvpy
package.
The testing framework used by hvpy
is the pytest framework.
Running Tests#
There are currently two different ways to invoke hvpy
tests.
tox
#
The most robust way to run the tests (which can also be the slowest) is to make use of Tox, which is a general purpose tool for automating Python testing.
One of the benefits of tox
is that it first creates a source distribution of the package being tested, and installs it into a new virtual environment, along with any dependencies that are declared in the package, before running the tests.
This can therefore catch issues related to undeclared package data, or missing dependencies.
Since we use tox to run many of the tests on continuous integration services, it can also be used in many cases to reproduce issues seen on those services.
To run the tests with tox
, first make sure that tox
is installed:
pip install tox
You can see a list of available test environments with:
tox -l -v
which will also explain what each of them does.
You can also run checks or commands not directly related to tests - for instance:
tox -e codestyle
will run checks on the code style using precommit hooks.
pytest
#
Note
We run the test suite with the beta version of the Helioviewer API. So if you run pytest without it, the tests will fail. This is set automatically when you use tox.
There are two ways to change this.
1. Set the environment variable HELIOVIEWER_API_URL
to https://api.beta.helioviewer.org/v2/
.
2. Add HELIOVIEWER_API_URL="https://api.beta.helioviewer.org/v2/"
to the command line when you run pytest.
The test suite can also be run directly from the native pytest
command, which is generally faster than using tox for iterative development.
In this case, it is important for developers to be aware that they must manually rebuild any extensions by running:
pip install -e ".[test]"
before running the test with pytest with:
pytest
To run all the test in the hvpy
package, you can use:
pytest -c hvpy
you can also run specific test functions with:
pytest -c hvpy -k test_function
Building Documentation#
Note
Building the documentation is not necessary unless you are writing new documentation or do not have internet access, because the latest versions of hvpy
’s should be available at hvpy.readthedocs.io.
This does not include Graphviz. If you do not install this package separately then the documentation build process will produce a very large number of lengthy warnings (which can obscure bona fide warnings) and also not generate inheritance graphs.
Building#
There are two ways to build the hvpy
documentation.
The easiest way is to execute the following tox command (from the hvpy
source directory):
tox -e build_docs
If you do this, you do not need to install any of the documentation dependencies as this will be done automatically.
The documentation will be built in the docs/_build/html
directory, and can be read by pointing a web browser to docs/_build/html/index.html
.
Alternatively, you can do:
cd docs
make html
And the documentation will be generated in the same location.
Note that this uses the installed version of hvpy
, so if you want to make sure the current repository version is used, you will need to install it with:
pip install -e ".[docs]"
before changing to the docs
directory.