PR Workflow

We use the bors-ng bot to merge PRs. In short, when someone replies bors r+, your PR has been scheduled for final tests and will be automatically merged. If a maintainer replies bors delegate+, then you have been granted the authority to merge your own PR (usually this will happen if there are some trivial changes required). For a full list of bors commands, see the bors documentation.

Tests

Our aim is to provide a number of tests to be safe from regression. Currently, the unit tests and the linting is automated, however, the integration tests have to be run manually.

Compilation

libtock-rs currently has two compilation targets: riscv32imac-unknown-none-elf and thumbv7em-none-eabi. You can build the library and the examples using the script build_examples.sh.

Unit Testing and Linting

There a a number of tests which run in our travis-ci environment. You can run them using cargo test --workspace.

Integration tests

If you have a nRF52-dk you can run the integration tests as follows. The pins P0.03 and P0.04 need to be connected (on a nRF52-DK). Then do the following:

  • connect your device to your computer
  • open a console, e.g. tockloader listen
  • run the tests `./run_hardware_test.sh

The desired test output is:

The expected output on the UART console will be as follows.

[test-results]
heap_test = "Heap works."
formatting =  works
should_be_one = 1
gpio_works = true
trait_obj_value_usize = 1
trait_obj_value_string = string
callbacks_work = true
all_tests_run = true