typst/tests
2024-02-28 14:24:50 +00:00
..
fuzz Externalize assets (#3515) 2024-02-28 10:06:54 +00:00
packages Allow packages to specify their minimum compiler version 2023-09-04 16:29:57 +02:00
ref Fix float overlap (#3507) 2024-02-27 13:05:29 +00:00
src Make use of is_some_and where applicable (#3523) 2024-02-28 14:24:50 +00:00
typ Implement alpha modification methods for colors (#3516) 2024-02-28 14:09:13 +00:00
Cargo.toml Externalize assets (#3515) 2024-02-28 10:06:54 +00:00
README.md Check crate docs in CI 2023-05-20 10:48:25 +02:00

Tests

Directory structure

Top level directory structure:

  • src: Testing code.
  • typ: Input files. The tests in compiler specifically test the compiler while the others test the standard library (but also the compiler indirectly).
  • ref: Reference images which the output is compared with to determine whether a test passed or failed.
  • png: PNG files produced by tests.
  • pdf: PDF files produced by tests.

Running the tests

Running all tests (including unit tests):

cargo test --workspace

Running just the integration tests (the tests in this directory):

cargo test --workspace --test tests

You may want to make yourself an alias like:

testit

Running all tests whose paths contain the string page or stack.

testit page stack

Running a test with the exact filename page.typ.

testit --exact page.typ

Debug-printing the layout trees for all executed tests.

testit --debug empty.typ

To make the integration tests go faster they don't generate PDFs by default. Pass the --pdf flag to generate those. Mind that PDFs are not tested automatically at the moment, so you should always check the output manually when making changes.

testit --pdf

Update expected images

If you created a new test or fixed a bug in an existing test, you need to update the reference image used for comparison. For this, you can use the UPDATE_EXPECT environment variable or the --update flag:

testit mytest --update

If you use the VS Code test helper extension (see the tools folder), you can alternatively use the checkmark button to update the reference image. In that case you should also install oxipng on your system so that the test helper can optimize the reference images.

Making an alias

If you want to have a quicker way to run the tests, consider adding a shortcut to your shell profile so that you can simply write something like:

testit empty.typ

Bash

Open your Bash configuration by executing nano ~/.bashrc.

alias testit="cargo test --workspace --test tests --"

PowerShell

Open your PowerShell profile by executing notepad $profile.

function testit {
    cargo test --workspace --test tests -- $args
}