# Contributing ### Running Tests Tests are split into two parts: 1. Unit tests, run by running `cargo test` in the root directory. 2. Integration tests (containing usages of the proc macro and ui-tests): `(cd test-crates && cargo test)` You can run both of these with `just test` (see [just](https://github.com/casey/just)) for more information. Just is not required to contribute but may save you a small amount of time. The [UI tests](test-crates) are currently tested against Rust 1.79.0 To run a single test set the TESTNAME environment variable. For example: ``` TESTNAME=log_global_ref_and_chained_calls just test ``` ### Debugging Duchess looks for the `DUCHESS_DEBUG` environment variable during proc-macro expansion. When this variable is set, if it is `true` or `1`, **all** generated code will be formatted and dumped to a directory. Clickable links are printed to stderr: For example: ``` file:////var/folders/20/gm3mpm1n6lj3r3tb6q2hx2_80000gr/T/.tmpjJadBD/auth_Authenticated.rs file:////var/folders/20/gm3mpm1n6lj3r3tb6q2hx2_80000gr/T/.tmpjJadBD/auth_AuthorizeRequest.rs file:////var/folders/20/gm3mpm1n6lj3r3tb6q2hx2_80000gr/T/.tmpjJadBD/auth_HttpAuth.rs ``` If you want to filter specific Java class paths, you can pass a string like `auth` or `java.lang`: ``` DUCHESS_DEBUG=java.lang ``` This will only dump debug information for these specific classes.