| 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. |