mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-30 15:34:33 +01:00
CI problem fixed, CONTRIBUTION.md now includes CI prep.
This commit is contained in:
parent
718a240182
commit
426522df6e
5 changed files with 40 additions and 11 deletions
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in a new issue