tree: afae4e9e0839162215713f2365974f5c6be5fbbf [path history] [tgz]
  1. data/
  2. hb-svg-compare
  3. hb-vector-svg-compare
  4. meson.build
  5. README.md
  6. record-test.sh
  7. run-tests.py
test/vector/README.md

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:

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:

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