diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md index 5d54260..76d98f1 100644 --- a/docs/book/src/SUMMARY.md +++ b/docs/book/src/SUMMARY.md @@ -3,7 +3,7 @@ # Quickstart - [Installation](./quickstart/install.md) -- [Usage]() +- [Usage](./quickstart/usage.md) - [Concepts]() - [Configuration]() diff --git a/docs/book/src/quickstart/usage.md b/docs/book/src/quickstart/usage.md new file mode 100644 index 0000000..21ae058 --- /dev/null +++ b/docs/book/src/quickstart/usage.md @@ -0,0 +1,121 @@ +# Usage +`typst-test` is a command line program, it can be run by simply invoking it in your favorite shell and passing the appropriate arguments. + +If you opened a shell in a folder `project` and `typst-test` is at `project/bin/typst-test`, then you can run it using `./project/bin/typst-test`. +Placing it directly in your project is most likely not what you will do or want to do. +You should install it to a directory which is contained in your `PATH`, allowing you to simply run it using `typst-test`. +How to add such folders to your `PATH` depends on your operating system, but if you installed `typst-test` using one of the recommended methods in [Installation](.install.md), then such a folder should be chosen for you. + +
+ +For the remainder of this document `tt` is used in favor of `typst-test` whenever a command line example is shown. +When you see an example such as +```bash +tt run -e 'name(~id)' +``` +it is meant to be run as +```bash +typst-test run -e 'name(~id)' +``` + +You can also define an alias of the same name to make typing it easier. + +
+ +`typst-test` requires a certain project structure to work, if you want to start testing your project's code, you can create an example test and the required directory structure using the `init` command. + +```bash +tt init +``` + +This will create the default example to give you a graps at where tests are located and how they are structured. +`typs-test` will look for the project root by checking for directories containing a `typst.toml` manifest file. +This is because `typst-test` is primarily aimed at developers of packages, if you want to use a different project root, or don't have a `typst-manifest` you can provide the root directory using the `--root` like so. + +```bash +tt init --root ./path/to/root/ +``` + +Keep in mind that you must pass this option for every command that operates on a project. +Alternatively the `TYPST_ROOT` environment variable can be set to the project root. + +Further examples assume the existence of a manifest or the `TYPST_ROOT` variable being set +If you're just following along and don't have a package to test this with, you can use a an empty project with the following manifest: + +```toml +[package] +name = "foo" +description = "A fancy Typst package!" +authors = ["John Doe"] +license = "MIT" + +entrypoint = "src/lib.typ" +version = "0.1.0" +``` + +Once the project is initialized, you can run the example test to see that everything works. + +```bash +tt run example +``` + +You should see something along the lines of + +```txt +Running tests + ok example + +Summary + 1 / 1 passed. +``` + +Let's edit the test to actually do something, the default example test can be found in `/tests/example/` and simply contains `Hello World`. +Let's write something else in there and see what happens +```diff +-Hello World ++Typst is Great! +``` + +Once we run `typst-test` again we'll see that the test no longer passes: + +```txt +Running tests + failed example + Page 1 had 1292 deviations + hint: Diff images have been saved at '/tests/example/diff' + +Summary + 0 / 1 passed. +``` + +`typst-test` has compared the reference output from the original `Hello World` docuemnt to the new document and determined that they don't match. +It also told you where you can inspect the difference, the `/test/example` contains a `diff` directory. +You can take a look to see what changed by also looking at the `out` and `ref` directories, these contain the output of the current test and the expected reference output respectively. + +Well, but this wasn't a mistake, this was a deliberate change. +So let's update the references to reflect that. +For this we use the appropriately named `update` command: + +```bash +tt update example +``` + +You should see output similar to + +```txt +Updating tests + updated example + +Summary + 1 / 1 updated. +``` + +and the test should once again pass. + +
+ +Beware that `update` will by default update all test which aren't ignored, this may change before 0.1.0 is released. +Ensure you always have your references checked into your VCS to avoid losing them. +Check out the sections about test sets to learn more about how tests are selected. + +