diff --git a/rust/kcl-lib/README.md b/rust/kcl-lib/README.md index 4de47a3c9..7f28eb131 100644 --- a/rust/kcl-lib/README.md +++ b/rust/kcl-lib/README.md @@ -19,6 +19,30 @@ We've built a lot of tooling to make contributing to KCL easier. If you are inte 11. Run `just redo-kcl-stdlib-docs` to generate new Markdown documentation for your function that will be used [to generate docs on our website](https://zoo.dev/docs/kcl). 12. Create a PR in GitHub. +## Making a Simulation Test + +If you have KCL code that you want to test, simulation tests are the preferred way to do that. + +Make a new sim test. Replace `foo_bar` with the snake case name of your test. The name needs to be unique. + +```shell +just new-sim-test foo_bar +``` + +It will show the commands it ran, including the path to a new file `foo_bar/input.kcl`. Edit that with your KCL. If you need additional KCL files to import, include them in this directory. + +Then run it. + +```shell +just overwrite-sim-test foo_bar +``` + +The above should create a bunch of output files in the same directory. + +Make sure you actually look at them. Specifically, if there's an `execution_error.snap`, it means the execution failed. Depending on the test, this may be what you expect. But if it's not, delete the snap file and run it again. + +When it looks good, commit all the files, including `input.kcl`, generated output files in the test directory, and changes to `simulation_tests.rs`. + ## Bumping the version If you bump the version of kcl-lib and push it to crates, be sure to update the repos we own that use it as well. These are: