diff options
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md')
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md b/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md new file mode 100644 index 00000000000..4efc64ca5a9 --- /dev/null +++ b/Build/source/libs/harfbuzz/harfbuzz-src/TESTING.md @@ -0,0 +1,75 @@ +## Build & Run + +Depending on what area you are working in change or add `HB_DEBUG_<whatever>`. +Values defined in `hb-debug.hh`. + +```shell +# quick sanity check +time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \ + && (make -j4 -C test/api check || cat test/api/test-suite.log)) + +# slower sanity check +time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \ + && make -j4 -C src check \ + && make -j4 -C test/api check \ + && make -j4 -C test/subset check) + +# confirm you didn't break anything else +time (make -j4 CPPFLAGS='-DHB_DEBUG_SUBSET=100' \ + && make -j4 check) + +# often catches files you didn't add, e.g. test fonts to EXTRA_DIST +make distcheck +``` + +### Run tests with asan + +**NOTE**: this sometimes yields harder to read results than the full fuzzer + +```shell +# For nice symbols tell asan how to symoblize. Note that it doesn't like versioned copies like llvm-symbolizer-3.8 +# export ASAN_SYMBOLIZER_PATH=path to version-less llvm-symbolizer +# ex +export ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.8/bin/llvm-symbolizer + +./configure CC=clang CXX=clang++ CPPFLAGS=-fsanitize=address LDFLAGS=-fsanitize=address +# make/run tests as usual +``` + +### Debug with GDB + +``` +cd ./util +../libtool --mode=execute gdb --args ./hb-subset ... +``` + +### Enable Debug Logging + +```shell +# make clean if you previously build w/o debug logging +make CPPFLAGS=-DHB_DEBUG_SUBSET=100 +``` + +## Build and Test via CMake + +Note: You'll need to first install ninja-build via apt-get. + +```shell +cd harfbuzz +mkdir buid +cmake -DHB_CHECK=ON -Bbuild -H. -GNinja && ninja -Cbuild && CTEST_OUTPUT_ON_FAILURE=1 ninja -Cbuild test +``` +## Test with the Fuzzer + +```shell +# push your changs to a branch on googlefonts/harfbuzz +# In a local copy of oss-fuzz, edit projects/harfbuzz/Dockerfile +# Change the git clone to pull your branch + +# Do this periodically +sudo python infra/helper.py build_image harfbuzz + +# Do these to update/run +sudo python infra/helper.py build_fuzzers --sanitizer address harfbuzz +sudo python infra/helper.py run_fuzzer harfbuzz hb-subset-fuzzer +``` |