CI problem fixed, CONTRIBUTION.md now includes CI prep.

This commit is contained in:
Per Lindgren 2021-10-27 13:45:37 +02:00
parent 718a240182
commit 426522df6e
5 changed files with 40 additions and 11 deletions

View file

@ -1,16 +1,53 @@
# Contributing # Contributing
## New features ## New features
New features should go through the [RFC process][rfcs] before a Pull Request is made to this repository. New features should go through the [RFC process][rfcs] before a Pull Request is made to this repository.
[rfcs](https://github.com/rtic-rs/rfcs) [rfcs](https://github.com/rtic-rs/rfcs)
## Bugs ## Bugs
Report bugs by creating an issue in this repository. Report bugs by creating an issue in this repository.
## Pull Requests ## Pull Requests
Please make pull requests against the master branch. Please make pull requests against the master branch.
Always use rebase instead of merge when bringing in changes from master to your feature branch. Always use rebase instead of merge when bringing in changes from master to your feature branch.
## Writing documentation ## Writing documentation
Documentation improvements are always welcome. The source for the book is in `book/` and API documentation is generated from the source code. Documentation improvements are always welcome. The source for the book is in `book/` and API documentation is generated from the source code.
## CI test preparation
To reduce risk of CI failing for your PR, please make sure that tests passes locally before submitting.
```shell
> cargo xtask --target all
```
Will execute `run` tests on your local `qemu` install. (You may also pass a single target `--target thumbv6m-none-eabi/thumbv7m-none-eabi` during your development). These test are quite time consuming as they compile and run all `examples`.
If you have added further tests, you need to add the expected output in the `ci/expected` folder.
```shell
> cargo run --example <NAME> --target thumbv7m-none-eabi > ci/expected/<NAME>.run
```
Internal fail tests can be locally run:
```shell
> cargo test --tests
```
If you have added fail tests or changed the expected behavior, the expected output needs to be updated (corresponding `.stderr` files). Inspect the error output, when sure that `ACTUAL OUTPUT` is correct you can re-run the test as:
```shell
> TRYBUILD=overwrite cargo test --tests
```
This will update the expected output to match the `ACTUAL OUTPUT`. Please check that the updated files are indeed correct as to avoid regressions.
Once all tests pass you are ready to make a PR.

View file

@ -1,5 +1,3 @@
foo: a = 1, b = 2 foo: a = 1, b = 2
baz baz
still in foo::lock
bar: a = 3 bar: a = 3
still in foo

View file

@ -1,5 +1,3 @@
foo: a = 1, b = 2 foo: a = 1, b = 2
baz baz
still in foo::lock
bar: a = 3 bar: a = 3
still in foo

View file

@ -35,9 +35,7 @@ mod app {
*s.a += 1; *s.a += 1;
bar::spawn().unwrap(); bar::spawn().unwrap();
baz::spawn().unwrap(); baz::spawn().unwrap();
hprintln!("still in foo::lock").ok();
}); });
hprintln!("still in foo").ok();
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
} }

View file

@ -35,19 +35,17 @@ mod app {
**a += 1; **a += 1;
bar::spawn().unwrap(); bar::spawn().unwrap();
baz::spawn().unwrap(); baz::spawn().unwrap();
hprintln!("still in foo::lock").ok();
}); });
hprintln!("still in foo").ok();
debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator debug::exit(debug::EXIT_SUCCESS); // Exit QEMU simulator
} }
#[task(priority = 2, shared = [a])] #[task(priority = 2, shared = [a])]
fn bar(mut c: bar::Context) { fn bar(mut c: bar::Context) {
// the higher priority task does still need a critical section // the higher priority task does still need a critical section
let a = c.shared.lock(|s| { let a = c.shared.lock(|bar::Shared { a }| {
*s.a += 1; **a += 1;
// *s.b += 1; `b` not accessible // *s.b += 1; `b` not accessible
*s.a **a
}); });
hprintln!("bar: a = {}", a).unwrap(); hprintln!("bar: a = {}", a).unwrap();