# Tests

To run all tests, run the following command:

```sh
cargo +nightly test --all
```

## UI tests (`ui`, `compiletest.rs`)

This checks errors detected by the macro or the Rust compiler in the resulting
expanded code.

To run this test, run the following command:

```sh
cargo +nightly test --test compiletest
```

Locally, this test updates the files in the `ui` directory if there are
changes to the generated code. If there are any changes to the files in the
`ui` directory after running the test, please commit them.

See also [`trybuild` documentation](https://docs.rs/trybuild).

## Expansion tests (`expand`, `expandtest.rs`)

Similar to ui tests, but instead of checking the compiler output, this checks
the code generated by macros.

See [examples](../examples/README.md) for descriptions of what the generated
code does, and why it needs to be generated.

To run this test, run the following command:

```sh
cargo +nightly test --test expandtest
```

Locally, this test updates the files in the `expand` directory if there are
changes to the generated code. If there are any changes to the files in the
`expand` directory after running the test, please commit them.

See also [`macrotest` documentation](https://docs.rs/macrotest).
