Contributors’s Guide

We welcome contributions of any kind. Do not hesitate to open an GitHub issue or contant us via email; this part of documentation is quite sparse.


  • utils/checks/ – Runs code style checks (flake8 & dry cargo fmt)
  • utils/checks/ – Runs + all available tests
  • utils/dist/ – Compiles release binary of Rain, creates Python package and publishes release on GitHub


Rain contains two sets of tests:

  • Unittests (in Rust)
  • Integration tests (in Python)

Python tests

Python tests are placed in /rain/tests/pytests.

To execute them simply run py.test-3 in the root directory of Rain. The logs are stored in rain/tests/pytests/work.

Important notes:

  • Make sure you are running Python 3 py.test.
  • Working directory rain/tests/pytests/work is fully cleaned before every test! Therefore, if you want to see logs, make sure that no other test is executed after the test you want to see. See options -x and -k of py.test-3
  • By default, Python tests run with rain binary located in rain/target/debug/ directory. This path can be modified using RAIN_TEST_BIN environment variable.


Rain Dashboard is implement in JavaScript over NodeJs. However, we do not want to have Node.js as a hard dependency when Rain is built from sources. Therefore, compiled form of Dashboard is included in Rain git repository. Neverthless, if you want to work on Dashboard, you need to install Node.js.


(We assume that you have already installed Node.js.)

cd dashboard
npm install


For development, just run:

npm start

It starts on Rain dashboard on port 3000. Now you can just edit dashboard sources, without recompiling Rain binary. Dashboard in the development mode assumes, that http rain server is running at localhost:8080. If you need, you can change the address in dashboard/src/utils/fetch.js, but do not commit this change, please.


All Dashboard resources (including JS source codes) are included into Rain binary. When Rain is compiled, files in dashboard/dist are read. To generate dist directory from actual dashboard sources, you need to run:

cd dashboard

Then you need rebuild Rain (e.g. cargo build). When you finish work on dashboard, do not forget to include files in dist into repository.