blob: 32502af4d875f19b85c3646c70a653b205b3a76f [file] [log] [blame] [view] [edit]
Adding tests
============
`test/vector` validates `hb-vector` CLI output by comparing exact stdout with
golden files.
Test file format (`data/tests/*.tests`)
---------------------------------------
Each non-empty, non-comment line has 4 semicolon-separated fields:
```
font-file;options;unicodes;expected-file
```
- `font-file`: relative to the `.tests` file (or absolute path).
- `options`: shell-split arguments passed to `hb-vector`.
- `unicodes`: Unicode sequence, using shape-style codepoint format
(for example `U+0061,U+0062,U+0063`).
- `expected-file`: path to golden output, relative to the `.tests` file.
This is also used as the TAP test name.
Example:
```
../../../api/fonts/Roboto-Regular.abc.ttf;--font-size=64;U+0061,U+0062,U+0063;../expected/basic/reuse-svg.svg
```
Running vector tests
--------------------
In an in-tree build:
```sh
meson test -C build-default -v --suite vector
```
Updating expected output
------------------------
Regenerate a golden file with the current `hb-vector` binary and replace the
file under `data/expected/`.
Recording a new test case
-------------------------
Use `record-test.sh`:
```sh
./record-test.sh -o data/tests/basic.tests --test-name reuse-svg ../../build-default/util/hb-vector ../api/fonts/Roboto-Regular.abc.ttf --font-size=64 abc
```
It subsets the input font, verifies subset-vs-original rendering with
`hb-view`, stores the subset font under `../fonts/<sha1>.ttf` (relative to the target
`.tests` file), writes expected output under
`../expected/<tests-stem>/<test-name>.<ext>` by default (unless
`--expected-dir` or `--expected-file` is provided), and
appends one test line to the target `.tests` file. `hb-shape`, `hb-view`, and
`hb-subset` are resolved as sibling executables next to the provided
`hb-vector` binary. The emitted test line uses Unicode codepoint input in the
`unicodes` field.