Introduce more solid no_std
testing
#199
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
no_std
tests we had before, did not enforce that our dependencies are allno_std
. E.g. any dependency could use the standard library and still ourno_std
tests would succeed.We now circumvent this by defining a custom panic handler and a global allocator such that any dependencies that make use of the standard library will fail to compile, because in that case there would be more than one global allocator and panic handler. Inspiration was taken from serde's no_std testing (Thanks for the hint @niklasad1).
Testing in
no_std
is a bit difficult, but one approach I take here is just running a main function, that returnsAborted (core dumped)
with a non-zero exit code if a panic is encountered (e.g. in an untrue assert). This can run in the CI to make sure the code runs and not only compiles in ano_std
environment.