.ci/deploy-docs.sh | 2 .ci/run-coveralls.sh | 14 ++++ .circleci/config.yml | 19 +++++- .travis.yml | 69 +++++++++++++--------- CMakeLists.txt | 5 + appveyor.yml | 28 ++++++--- src/hb-ot-layout-common-private.hh | 4 - src/hb-set-digest-private.hh | 12 +++ src/hb-set-private.hh | 6 + test/CMakeLists.txt | 1 test/api/CMakeLists.txt | 39 ++++++++++++ test/api/Makefile.am | 12 +-- test/api/hb-test.h | 2 test/api/test-c.c | 2 test/shaping/Makefile.am | 4 - test/shaping/run-tests.py | 115 +++++++++++++++++++++++++++++++++++++ test/shaping/run-tests.sh | 65 -------------------- 17 files changed, 286 insertions(+), 113 deletions(-)
New commits: commit 0fe62c1f333200523e10663f47a58b82e3f22154 Author: Behdad Esfahbod <[email protected]> Date: Wed Dec 13 13:12:20 2017 -0800 [set] Add add_array() To be used to optimize adding a whole bunch of (sorted) items at the same time, as in CoverageFormat1. diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh index 86a74ccb..82ace31b 100644 --- a/src/hb-ot-layout-common-private.hh +++ b/src/hb-ot-layout-common-private.hh @@ -716,9 +716,7 @@ struct CoverageFormat1 template <typename set_t> inline void add_coverage (set_t *glyphs) const { - unsigned int count = glyphArray.len; - for (unsigned int i = 0; i < count; i++) - glyphs->add (glyphArray[i]); + glyphs->add_array (glyphArray.array, glyphArray.len); } public: diff --git a/src/hb-set-digest-private.hh b/src/hb-set-digest-private.hh index 9135136c..75087085 100644 --- a/src/hb-set-digest-private.hh +++ b/src/hb-set-digest-private.hh @@ -80,6 +80,12 @@ struct hb_set_digest_lowest_bits_t mask |= mb + (mb - ma) - (mb < ma); } } + template <typename T> + inline void add_array (const T *array, unsigned int count) + { + for (unsigned int i = 0; i < count; i++) + add (array[i]); + } inline bool may_have (hb_codepoint_t g) const { return !!(mask & mask_for (g)); @@ -112,6 +118,12 @@ struct hb_set_digest_combiner_t head.add_range (a, b); tail.add_range (a, b); } + template <typename T> + inline void add_array (const T *array, unsigned int count) + { + head.add_array (array, count); + tail.add_array (array, count); + } inline bool may_have (hb_codepoint_t g) const { return head.may_have (g) && tail.may_have (g); diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh index 5971e9b7..e3048657 100644 --- a/src/hb-set-private.hh +++ b/src/hb-set-private.hh @@ -248,6 +248,12 @@ struct hb_set_t page->add_range (major_start (mb), b); } } + template <typename T> + inline void add_array (const T *array, unsigned int count) + { + for (unsigned int i = 0; i < count; i++) + add (array[i]); + } inline void del (hb_codepoint_t g) { if (unlikely (in_error)) return; commit 20e69c950d431391f92335f8845e5d4291aca8f3 Author: ebraminio <[email protected]> Date: Thu Dec 7 12:24:12 2017 +0330 [test] print commented line, like the original script (#649) diff --git a/test/shaping/run-tests.py b/test/shaping/run-tests.py index a9aec0c6..ebba75aa 100755 --- a/test/shaping/run-tests.py +++ b/test/shaping/run-tests.py @@ -62,13 +62,13 @@ for f in args: f = open (f) for line in f: + fontfile, options, unicodes, glyphs_expected = line.split (":") + if line.startswith ("#"): + if not reference: + print ("# hb-shape %s --unicodes %s" % (fontfile, unicodes)) continue - fontfile, options, unicodes, glyphs_expected = line.split (":") - if not reference: - print ("# hb-shape %s --unicodes %s" % (fontfile, unicodes)) - if not reference: print ("hb-shape %s %s %s --unicodes %s" % (fontfile, extra_options, options, unicodes)) commit 71ad2777c52aeb0842038881899499a49cb895f2 Author: ebraminio <[email protected]> Date: Thu Dec 7 11:35:36 2017 +0330 [ci] Add an after distribution test runner (#648) diff --git a/.circleci/config.yml b/.circleci/config.yml index 27738635..2824bfdb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -49,6 +49,15 @@ jobs: - run: ninja -Cbuild test - run: ninja -Cbuild install + distdir: + docker: + - image: dockcross/base + steps: + - checkout + - run: apt update && apt install -y pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev + - run: ./autogen.sh && make distdir + - run: cd harfbuzz-* && ./configure && make && make check && make install + psvita: docker: - image: dockcross/base @@ -107,6 +116,7 @@ workflows: - archlinux - freebsd9 - base + - distdir - psvita - android-arm - browser-asmjs commit 5f061d27d5289c7608a6579dca668b1f5be7f4e8 Author: ebraminio <[email protected]> Date: Thu Dec 7 11:22:55 2017 +0330 Rewrite run-tests in python (#647) diff --git a/test/shaping/Makefile.am b/test/shaping/Makefile.am index 592754b2..4cf55749 100644 --- a/test/shaping/Makefile.am +++ b/test/shaping/Makefile.am @@ -26,7 +26,7 @@ EXTRA_DIST += \ hb-unicode-encode \ hb-unicode-prettyname \ record-test.sh \ - run-tests.sh \ + run-tests.py \ texts/in-tree \ fonts/sha1sum \ $(TESTS) \ @@ -104,7 +104,7 @@ TESTS_ENVIRONMENT = \ $(NULL) endif -TESTS_LOG_COMPILER = sh $(srcdir)/run-tests.sh +TESTS_LOG_COMPILER = python $(srcdir)/run-tests.py .PHONY: manifests diff --git a/test/shaping/run-tests.py b/test/shaping/run-tests.py new file mode 100755 index 00000000..a9aec0c6 --- /dev/null +++ b/test/shaping/run-tests.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python + +from __future__ import print_function +import sys, os, subprocess + + +try: + input = raw_input +except NameError: + pass + + +def cmd(command): + p = subprocess.Popen ( + command, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p.wait () + print (p.stderr.read (), file=sys.stderr) + return p.stdout.read ().decode ("utf-8"), p.returncode + + +srcdir = os.environ.get ("srcdir", ".") +builddir = os.environ.get ("builddir", ".") +top_builddir = os.environ.get ("top_builddir", + os.path.normpath (os.path.join (os.getcwd (), "..", ".."))) +EXEEXT = os.environ.get ("EXEEXT", "") + +extra_options = "--verify" +hb_shape = os.path.join (top_builddir, "util", "hb-shape" + EXEEXT) + +fails = 0 +args = sys.argv[1:] + +reference = False +if len (args) and args[0] == "--reference": + reference = True + args = args[1:] + +if not len (args): + args = [sys.stdin] + +for f in args: + if not reference: + if f == sys.stdin: + print ("Running tests from standard input") + else: + print ("Running tests in " + f) + + if f == sys.stdin: + def f(): + while True: + try: + line = input () + except EOFError: + break + + if len (line): + yield line + else: + break + f = f() + else: + f = open (f) + + for line in f: + if line.startswith ("#"): + continue + + fontfile, options, unicodes, glyphs_expected = line.split (":") + if not reference: + print ("# hb-shape %s --unicodes %s" % (fontfile, unicodes)) + + if not reference: + print ("hb-shape %s %s %s --unicodes %s" % + (fontfile, extra_options, options, unicodes)) + + glyphs1, returncode = cmd ([hb_shape, "--font-funcs=ft", + os.path.join (srcdir, fontfile), extra_options, "--unicodes", + unicodes] + (options.split (' ') if len(options) else [])) + + if returncode: + print ("hb-shape --font-funcs=ft failed.", file=sys.stderr) + fails = fails + 1 + #continue + + glyphs2, returncode = cmd ([hb_shape, "--font-funcs=ot", + os.path.join (srcdir, fontfile), extra_options, "--unicodes", + unicodes] + (options.split (' ') if len(options) else [])) + + if returncode: + print ("hb-shape --font-funcs=ot failed.", file=sys.stderr) + fails = fails + 1 + #continue + + if glyphs1 != glyphs2: + print ("FT funcs: " + glyphs1, file=sys.stderr) + print ("OT funcs: " + glyphs2, file=sys.stderr) + fails = fails + 1 + + if reference: + print (":".join ([fontfile, options, unicodes, glyphs1])) + continue + + if glyphs1.strip() != glyphs_expected.strip(): + print ("Actual: " + glyphs1, file=sys.stderr) + print ("Expected: " + glyphs_expected, file=sys.stderr) + fails = fails + 1 + +if fails != 0: + if not reference: + print (str (fails) + " tests failed.") + sys.exit (1) + +else: + if not reference: + print ("All tests passed.") diff --git a/test/shaping/run-tests.sh b/test/shaping/run-tests.sh deleted file mode 100755 index 5fa8017c..00000000 --- a/test/shaping/run-tests.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh - -test "x$srcdir" = x && srcdir=. -test "x$builddir" = x && builddir=. -test "x$top_builddir" = x && top_builddir=../.. - -extra_options="--verify" -hb_shape="$top_builddir/util/hb-shape$EXEEXT" -#hb_shape="$top_builddir/util/hb-shape$EXEEXT" - -fails=0 - -reference=false -if test "x$1" = x--reference; then - reference=true - shift -fi - -if test $# = 0; then - set /dev/stdin -fi - -for f in "$@"; do - $reference || echo "Running tests in $f" - while IFS=: read fontfile options unicodes glyphs_expected; do - if echo "$fontfile" | grep -q '^#'; then - $reference || echo "# hb-shape $fontfile --unicodes $unicodes" - continue - fi - $reference || echo "hb-shape $fontfile $extra_options $options --unicodes $unicodes" - glyphs1=`$hb_shape --font-funcs=ft "$srcdir/$fontfile" $extra_options $options --unicodes "$unicodes"` - if test $? != 0; then - echo "hb-shape --font-funcs=ft failed." >&2 - fails=$((fails+1)) - #continue - fi - glyphs2=`$hb_shape --font-funcs=ot "$srcdir/$fontfile" $extra_options $options --unicodes "$unicodes"` - if test $? != 0; then - echo "hb-shape --font-funcs=ot failed." >&2 - fails=$((fails+1)) - #continue - fi - if ! test "x$glyphs1" = "x$glyphs2"; then - echo "FT funcs: $glyphs1" >&2 - echo "OT funcs: $glyphs2" >&2 - fails=$((fails+1)) - fi - if $reference; then - echo "$fontfile:$options:$unicodes:$glyphs1" - continue - fi - if ! test "x$glyphs1" = "x$glyphs_expected"; then - echo "Actual: $glyphs1" >&2 - echo "Expected: $glyphs_expected" >&2 - fails=$((fails+1)) - fi - done < "$f" -done - -if test $fails != 0; then - $reference || echo "$fails tests failed." - exit 1 -else - $reference || echo "All tests passed." -fi commit 3ce6c7bd96296a44950110e84ade76c7c1df06e4 Author: Khaled Hosny <[email protected]> Date: Wed Dec 6 21:08:20 2017 +0200 [ci] Sort out Travis configuration Use a matrix to avoid a gazillion if's. diff --git a/.ci/deploy-docs.sh b/.ci/deploy-docs.sh index 086982b3..a8a85233 100755 --- a/.ci/deploy-docs.sh +++ b/.ci/deploy-docs.sh @@ -3,6 +3,8 @@ set -x set -o errexit -o nounset +if test "x$TRAVIS_SECURE_ENV_VARS" != xtrue; then exit; fi + BRANCH="$TRAVIS_BRANCH" if test "x$BRANCH" != xmaster; then exit; fi diff --git a/.ci/run-coveralls.sh b/.ci/run-coveralls.sh new file mode 100755 index 00000000..58b83114 --- /dev/null +++ b/.ci/run-coveralls.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -x +set -o errexit -o nounset + +if test "x$TRAVIS_SLUG" != x"harfbuzz/harfbuzz"; then exit; fi + +pip install --user nose +pip install --user cpp-coveralls +export PATH=$HOME/.local/bin:$PATH + +rm -f src/.libs/NONE.gcov +touch src/NONE +coveralls -e docs diff --git a/.travis.yml b/.travis.yml index 315e5ce4..5b5ae0e7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,39 +1,54 @@ # Build Configuration for Travis -sudo: required # For Trusty beta -os: - - linux - - osx dist: trusty + language: cpp -compiler: - - clang - - gcc + env: global: - CPPFLAGS="" - CFLAGS="-Werror --coverage" - CXXFLAGS="-Werror -Wno-deprecated-register --coverage" # glib uses register and clang raises a warning - LDFLAGS="--coverage" -install: - - if [ "$TRAVIS_OS_NAME" == "linux" ]; then pip install --user nose; fi - - if [ "$TRAVIS_OS_NAME" == "linux" ]; then pip install --user cpp-coveralls; fi # for coveralls.io code coverage tracking - - if [ "$TRAVIS_OS_NAME" == "linux" ]; then export PATH=$HOME/.local/bin:$PATH; fi # Make sure we can find the above Python packages - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then export CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations"; fi; # https://github.com/harfbuzz/harfbuzz/issues/345 - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew update; fi; - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew uninstall libtool && brew install libtool; fi # Workaround Travis/brew bug - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install ragel freetype glib gobject-introspection cairo icu4c graphite2; fi - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew link --force icu4c; fi # icu4c is keg-only -script: - - NOCONFIGURE=1 ./autogen.sh - - export CONFIGURE_OPTS="--with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2" - - if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" ]; then export CONFIGURE_OPTS="$CONFIGURE_OPTS --enable-gtk-doc"; fi - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then export CONFIGURE_OPTS="$CONFIGURE_OPTS --with-coretext"; fi - - ./configure $CONFIGURE_OPTS - - make - - make check || (cat */test-suite.log test/*/test-suite.log && false) - - if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" -a "$TRAVIS_SLUG" == "harfbuzz/harfbuzz" ]; then rm -f src/.libs/NONE.gcov; touch src/NONE; coveralls -e docs; fi -after_success: - - if [ "$TRAVIS_OS_NAME" == "linux" -a "$CC" == "gcc" -a "$TRAVIS_SECURE_ENV_VARS" == "true" ]; then bash .ci/deploy-docs.sh; fi + - CONFIGURE_OPTS="--with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2" + - NOCONFIGURE=1 + +matrix: + include: + - os: linux + compiler: gcc + script: + - ./autogen.sh + - ./configure $CONFIGURE_OPTS --enable-gtk-doc + - make + - make check || (cat */test-suite.log test/*/test-suite.log && false) + after_success: + - bash .ci/run-coveralls.sh # for coveralls.io code coverage tracking + - bash .ci/deploy-docs.sh + + - os: linux + compiler: clang + script: + - ./autogen.sh + - ./configure $CONFIGURE_OPTS + - make + - make check || (cat */test-suite.log test/*/test-suite.log && false) + + - os: osx + compiler: clang + install: + # https://github.com/harfbuzz/harfbuzz/issues/345 + - export CXXFLAGS="$CXXFLAGS -Wno-deprecated-declarations" + - brew update; + # Workaround Travis/brew bug + - brew uninstall libtool && brew install libtool + - brew install ragel freetype glib gobject-introspection cairo icu4c graphite2 + - brew link --force icu4c # icu4c is keg-only + script: + - ./autogen.sh + - ./configure $CONFIGURE_OPTS --with-coretext + - make + - make check || (cat */test-suite.log test/*/test-suite.log && false) + notifications: irc: "irc.freenode.org#harfbuzz" email: [email protected] commit 5a6d2b986a02fc47fa9dcbb330e6949af8e375ff Author: ebraminio <[email protected]> Date: Wed Dec 6 18:27:27 2017 +0330 [ci] minor improvements (#644) diff --git a/.circleci/config.yml b/.circleci/config.yml index 63ce2911..27738635 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -11,6 +11,8 @@ jobs: - run: wget http://$ODSUSER:[email protected]/harfbuzz-private/OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 && tar xf OracleDeveloperStudio12.6-linux-x86-bin.tar.bz2 --owner root --group root --no-same-owner - run: CC=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/suncc CXX=/root/project/OracleDeveloperStudio12.6-linux-x86-bin/developerstudio12.6/bin/sunCC cmake -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_ICU=ON -DHB_HAVE_FREETYPE=ON -Bbuild -H. - run: make -Cbuild + - run: make -Cbuild test + - run: make -Cbuild install fedora: docker: @@ -45,6 +47,7 @@ jobs: - run: cmake -DHB_HAVE_FREETYPE=ON -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_ICU=ON -DHB_BUILD_UTILS=ON -Bbuild -H. -GNinja - run: ninja -Cbuild - run: ninja -Cbuild test + - run: ninja -Cbuild install psvita: docker: diff --git a/appveyor.yml b/appveyor.yml index 926b50d2..9a34052b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,7 +41,7 @@ build_script: - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" cmake -DHB_HAVE_UNISCRIBE=ON -DHB_HAVE_DIRECTWRITE=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_FREETYPE=ON -G "%generator%" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake ../' - 'if "%compiler%"=="msvc" msbuild harfbuzz.sln /p:Configuration=%configuration% /p:Platform=%platform%' - - 'if "%compiler%"=="msvc" ctest' + - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" ctest' - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-$MSYS2_ARCH-{freetype,cairo,icu,gettext,gobject-introspection,gcc,gcc-libs,glib2,graphite2,pkg-config}"' - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER; PATH=$PATH:/mingw64/bin:/mingw32/bin; ./autogen.sh --with-uniscribe --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 --build=%MINGW_CHOST% --host=%MINGW_CHOST% --prefix=%MINGW_PREFIX%; make; make check || (cat */test-suite.log test/*/test-suite.log && false)"' commit 840a32e3f3ed0a85bfa84e69efaeb504d92d1aa7 Author: Khaled Hosny <[email protected]> Date: Wed Dec 6 00:49:25 2017 +0200 Run cmake tests on CI builds diff --git a/.circleci/config.yml b/.circleci/config.yml index 370252a9..63ce2911 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -41,8 +41,10 @@ jobs: - image: dockcross/base steps: - checkout - - run: apt update && apt install ragel - - run: cmake -Bbuild -H. -GNinja && ninja -Cbuild + - run: apt update && apt install -y pkg-config ragel gtk-doc-tools libfreetype6-dev libglib2.0-dev libcairo2-dev libicu-dev libgraphite2-dev + - run: cmake -DHB_HAVE_FREETYPE=ON -DHB_HAVE_GRAPHITE2=ON -DHB_BUILTIN_UCDN=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_ICU=ON -DHB_BUILD_UTILS=ON -Bbuild -H. -GNinja + - run: ninja -Cbuild + - run: ninja -Cbuild test psvita: docker: diff --git a/appveyor.yml b/appveyor.yml index 9bcdb58d..926b50d2 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -41,7 +41,7 @@ build_script: - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" cmake -DHB_HAVE_UNISCRIBE=ON -DHB_HAVE_DIRECTWRITE=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_FREETYPE=ON -G "%generator%" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake ../' - 'if "%compiler%"=="msvc" msbuild harfbuzz.sln /p:Configuration=%configuration% /p:Platform=%platform%' - + - 'if "%compiler%"=="msvc" ctest' - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-$MSYS2_ARCH-{freetype,cairo,icu,gettext,gobject-introspection,gcc,gcc-libs,glib2,graphite2,pkg-config}"' - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER; PATH=$PATH:/mingw64/bin:/mingw32/bin; ./autogen.sh --with-uniscribe --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 --build=%MINGW_CHOST% --host=%MINGW_CHOST% --prefix=%MINGW_PREFIX%; make; make check || (cat */test-suite.log test/*/test-suite.log && false)"' commit c8609551485cfca6f9629c565b9dd5f02aa14f3e Author: Khaled Hosny <[email protected]> Date: Wed Dec 6 00:43:28 2017 +0200 Add API tests to cmake build diff --git a/CMakeLists.txt b/CMakeLists.txt index 23576099..24ccb6fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 2.8.0) project(harfbuzz) +enable_testing() ## Limit framework build to Xcode generator if (BUILD_FRAMEWORK) @@ -683,3 +684,7 @@ if (NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL) endif () endif () endif () + +# Needs to come last so that variables defined above are passed to +# subdirectories. +add_subdirectory(test) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 00000000..53d257b0 --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(api) diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt new file mode 100644 index 00000000..4e786ba6 --- /dev/null +++ b/test/api/CMakeLists.txt @@ -0,0 +1,39 @@ +macro (_add_tests) + foreach(test_name ${ARGV}) + if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${test_name}.c) + add_executable (${test_name} ${test_name}.c) + elseif (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${test_name}.cc) + add_executable (${test_name} ${test_name}.cc) + else () + message(FATAL_ERROR "No source file found for test ${test_name}") + endif () + target_link_libraries (${test_name} harfbuzz) + add_test (${test_name} ${test_name}) + endforeach () + set_tests_properties (${ARGV} PROPERTIES ENVIRONMENT + "G_TEST_SRCDIR=${CMAKE_CURRENT_SOURCE_DIR};G_TEST_BUILDDIR=${CMAKE_CURRENT_BINARY_DIR}" + ) +endmacro () + +if (HB_HAVE_GLIB) + _add_tests ( + test-blob + test-buffer + test-common + test-font + test-object + test-set + test-shape + test-unicode + test-version + test-ot-tag + test-c + test-cplusplus + ) + + if (HB_HAVE_FREETYPE) + _add_tests ( + test-ot-math + ) + endif (HB_HAVE_FREETYPE) +endif (HB_HAVE_GLIB) diff --git a/test/api/hb-test.h b/test/api/hb-test.h index 4d41218b..040f0c21 100644 --- a/test/api/hb-test.h +++ b/test/api/hb-test.h @@ -27,7 +27,9 @@ #ifndef HB_TEST_H #define HB_TEST_H +#ifdef HAVE_CONFIG_H #include <config.h> +#endif #include <hb-glib.h> diff --git a/test/api/test-c.c b/test/api/test-c.c index 6e8602f7..4b43b837 100644 --- a/test/api/test-c.c +++ b/test/api/test-c.c @@ -27,7 +27,9 @@ /* This file tests that all headers can be included from .c files */ +#ifdef HAVE_CONFIG_H #include <config.h> +#endif #include <hb.h> commit f19126dd35b03f6e05a67cbc406b3ce4a3e35022 Author: Khaled Hosny <[email protected]> Date: Tue Dec 5 22:52:54 2017 +0200 We are already inside âif HAVE_GLIBâ check diff --git a/test/api/Makefile.am b/test/api/Makefile.am index 530bf3ed..231ec22d 100644 --- a/test/api/Makefile.am +++ b/test/api/Makefile.am @@ -31,11 +31,11 @@ TEST_PROGS = \ test-version \ $(NULL) -test_unicode_CPPFLAGS = $(AM_CPPFLAGS) +test_unicode_CPPFLAGS = \ + $(AM_CPPFLAGS) \ + $(GLIB_CFLAGS) \ + $(NULL) test_unicode_LDADD = $(LDADD) -if HAVE_GLIB -test_unicode_CPPFLAGS += $(GLIB_CFLAGS) -endif if HAVE_ICU test_unicode_CPPFLAGS += $(ICU_CFLAGS) test_unicode_LDADD += $(top_builddir)/src/libharfbuzz-icu.la $(ICU_LIBS) @@ -149,12 +149,12 @@ check-symbols: symbols-untested.txt -else +else # !HAVE_GLIB check-am: err-glib err-glib: @echo "You need to have glib support enabled to run the tests" @exit 77 -endif +endif # HAVE_GLIB .PHONY: check-symbols check-tool check-valgrind commit 7af48a3f37abac0aa1a1ad79c98399a9a71bd903 Author: ebraminio <[email protected]> Date: Wed Dec 6 14:22:19 2017 +0330 [ci] Don't cache msys2 folder diff --git a/appveyor.yml b/appveyor.yml index 9857cef9..9bcdb58d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -48,7 +48,6 @@ build_script: cache: - c:\tools\vcpkg\installed\ - - c:\msys64\ # disable automatic tests test: off commit b6f505c7164e302d2990cf056b73e918a641e976 Author: ebraminio <[email protected]> Date: Wed Dec 6 13:51:04 2017 +0330 [ci] Enable glib and freetype on appveyor cmake (#643) diff --git a/appveyor.yml b/appveyor.yml index c27a899f..9857cef9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -2,19 +2,23 @@ platform: x64 environment: matrix: - - compiler: cmake + - compiler: msvc generator: Visual Studio 14 platform: Win32 configuration: Debug - - compiler: cmake + triplet: x86-windows + - compiler: msvc generator: Visual Studio 14 Win64 platform: x64 configuration: Debug - - compiler: cmake + triplet: x64-windows + + - compiler: msvc generator: Visual Studio 14 ARM platform: ARM configuration: Debug + - compiler: msys2 MINGW_PREFIX: /c/msys2/mingw64/ MINGW_CHOST: x86_64-w64-mingw32 @@ -28,14 +32,23 @@ install: - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-x86_64-ragel" build_script: - - 'if "%compiler%"=="cmake" md build' - - 'if "%compiler%"=="cmake" cd build' - - 'if "%compiler%"=="cmake" set PATH=%PATH%;C:\Program Files (x86)\MSBuild\14.0\Bin;c:\msys64\mingw64\bin' # msys2 is added just for having "ragel" on PATH - - 'if "%compiler%"=="cmake" cmake -DHB_HAVE_UNISCRIBE=ON -DHB_HAVE_DIRECTWRITE=ON -G "%generator%" ../' - - 'if "%compiler%"=="cmake" msbuild harfbuzz.sln /p:Configuration=%configuration% /p:Platform=%platform%' + - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" vcpkg install glib:%triplet% freetype:%triplet%' + - 'if "%compiler%"=="msvc" md build' + - 'if "%compiler%"=="msvc" cd build' + - 'if "%compiler%"=="msvc" set PATH=%PATH%;C:\Program Files (x86)\MSBuild\14.0\Bin;c:\msys64\mingw64\bin' # msys2 is added just for having "ragel" on PATH + + - 'if "%compiler%"=="msvc" if "%platform%"=="ARM" cmake -DHB_HAVE_UNISCRIBE=ON -DHB_HAVE_DIRECTWRITE=ON -G "%generator%" ../' + - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" cmake -DHB_HAVE_UNISCRIBE=ON -DHB_HAVE_DIRECTWRITE=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_FREETYPE=ON -G "%generator%" -DCMAKE_TOOLCHAIN_FILE=c:/tools/vcpkg/scripts/buildsystems/vcpkg.cmake ../' + + - 'if "%compiler%"=="msvc" msbuild harfbuzz.sln /p:Configuration=%configuration% /p:Platform=%platform%' + - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-$MSYS2_ARCH-{freetype,cairo,icu,gettext,gobject-introspection,gcc,gcc-libs,glib2,graphite2,pkg-config}"' - 'if "%compiler%"=="msys2" C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER; PATH=$PATH:/mingw64/bin:/mingw32/bin; ./autogen.sh --with-uniscribe --with-freetype --with-glib --with-gobject --with-cairo --with-icu --with-graphite2 --build=%MINGW_CHOST% --host=%MINGW_CHOST% --prefix=%MINGW_PREFIX%; make; make check || (cat */test-suite.log test/*/test-suite.log && false)"' +cache: + - c:\tools\vcpkg\installed\ + - c:\msys64\ + # disable automatic tests test: off
_______________________________________________ HarfBuzz mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/harfbuzz
