cargo-wasi-src 0.1.15

Subcommand for Cargo to easily build code for `wasm32-wasi`
Documentation
# Testing in WASI

Testing in WASI generall works the same as [testing in
Rust](https://doc.rust-lang.org/book/ch11-01-writing-tests.html), but there's an
important caveat about failing tests in WASI.

The `wasm32-wasi` target for Rust is effectively a `panic=abort` target which
has no support for unwinding. Most tests report failure, however by panicking!
This means that a failing test will actually abort the whole wasi process, which
isn't always a great experience.

To compound the problems here Rust's test framework by default captures all
output of a panic to print later after all tests have finished executing. If the
process aborts on a panic though, nothing ends up getting printed! Instead
you'll see something like:

```
$ cargo wasi test
...
     Running `/code/wasi-hello-world/target/wasm32-wasi/debug/deps/foo-38c031b0dc9ed5bc.wasm`

running 1 test
test foo ... error: failed to process main module `/code/wasi-hello-world/target/wasm32-wasi/debug/deps/foo-38c031b0dc9ed5bc.wasm`
    caused by: Instantiation error: Trap occurred while invoking start function: wasm trap: unreachable, source location: @4143a
```

and that's not very helpful!

To help with these issues it's recommended to use `--nocapture` which will at
least print *some* information.

```
$ cargo wasi test -- --nocapture
...
     Running `/code/wasi-hello-world/target/wasm32-wasi/debug/deps/foo-38c031b0dc9ed5bc.wasm --nocapture`

running 1 test
test foo ... thread 'main' panicked at 'assertion failed: `(left == right)`
  left: `1`,
 right: `2`', tests/foo.rs:3:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
error: failed to process main module `/code/wasi-hello-world/target/wasm32-wasi/debug/deps/foo-38c031b0dc9ed5bc.wasm`
    caused by: Instantiation error: Trap occurred while invoking start function: wasm trap: unreachable, source location: @4143a
```

In general testing and wasi isn't great today. It's something we hope to improve
over time!