Development Guide

If you would like to write a patch for Greenwave, this document will help you get started.

Quick development setup

Install dependencies:

$ sudo dnf builddep greenwave.spec

Create a local configuration file:

$ cp conf/settings.py.example conf/settings.py

Run the server:

$ DEV=true python run-dev-server.py

The server is now running at <http://localhost:5005> and API calls can be sent to <http://localhost:5005/api/v1.0>.

Running the tests

You can run the unit tests, which live in the greenwave.tests package, with the following command:

$ TEST=true py.test greenwave/tests/

There are also functional tests in the functional-tests directory. The functional tests will start their own copy of the ResultsDB, WaiverDB, and Greenwave servers and then send HTTP requests to them. You can run the functional tests like this:

$ TEST=true PYTHONPATH=. py.test functional-tests/

The functional tests assume you have ResultsDB and WaiverDB git checkouts in ../resultsdb and ../waiverdb respectively. You can tell it to find them in a different location by passing RESULTSDB or WAIVERDB environment variables.

Building the documentation

The documentation is built using Sphinx. If you’ve made changes to the documentation, you can build it locally and view it in your browser:

$ cd docs
$ make html
$ firefox _build/html/index.html

Code style

We follow the PEP 8 style guide for Python. You can check your code’s style using flake8:

$ flake8

Additionally, we follow the “Google style” for docstrings.