From 4e3cf91af29ff654eca91e43c0af1c1a7171b9fa Mon Sep 17 00:00:00 2001 From: Ebrahim Byagowi Date: Mon, 1 Jan 2018 11:17:51 +0330 Subject: [PATCH] [cmake] Run rest of the tests on Windows (#668) --- appveyor.yml | 6 +++--- test/CMakeLists.txt | 5 +---- test/fuzzing/CMakeLists.txt | 12 ++++++------ test/fuzzing/Makefile.am | 5 +---- test/fuzzing/run-fuzzer-tests.py | 12 +++++++++--- test/shaping/CMakeLists.txt | 9 ++++----- test/shaping/run-tests.py | 10 +++++++++- 7 files changed, 33 insertions(+), 26 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index faa04d0ce..7350b1357 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -32,16 +32,16 @@ install: - C:\msys64\usr\bin\bash -lc "pacman --noconfirm -S mingw-w64-x86_64-ragel" build_script: - - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" vcpkg install glib:%triplet% freetype:%triplet%' + - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" vcpkg install glib:%triplet% freetype:%triplet% cairo:%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" if not "%platform%"=="ARM" cmake -DHB_HAVE_UNISCRIBE=ON -DHB_HAVE_DIRECTWRITE=ON -DHB_HAVE_GLIB=ON -DHB_HAVE_FREETYPE=ON -DHB_BUILD_UTILS=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" if not "%platform%"=="ARM" ctest --output-on-failure' + - 'if "%compiler%"=="msvc" if not "%platform%"=="ARM" ctest --output-on-failure -C %configuration%' - '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,python2}"' - '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)"' diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2bebd07fa..2c97f4f81 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -1,6 +1,3 @@ add_subdirectory(api) add_subdirectory(shaping) -# Not ready yet -if (NOT MSVC) - add_subdirectory(fuzzing) -endif () +add_subdirectory(fuzzing) diff --git a/test/fuzzing/CMakeLists.txt b/test/fuzzing/CMakeLists.txt index 48432296a..06355991b 100644 --- a/test/fuzzing/CMakeLists.txt +++ b/test/fuzzing/CMakeLists.txt @@ -1,9 +1,9 @@ if (HB_HAVE_GLIB) - add_executable (hb-fuzzer hb-fuzzer.cc hb-fuzzer.hh main.cc) + file (READ "${CMAKE_CURRENT_SOURCE_DIR}/Makefile.am" MAKEFILEAM) + extract_make_variable (hb_fuzzer_SOURCES ${MAKEFILEAM}) + add_executable (hb-fuzzer ${hb_fuzzer_SOURCES}) target_link_libraries (hb-fuzzer harfbuzz) - add_test (hb-fuzzer python run-fuzzer-tests.py) - set_tests_properties (hb-fuzzer PROPERTIES - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ENVIRONMENT "top_builddir=${PROJECT_BINARY_DIR};testdir=test;fuzzingdir=fuzzing" - ) + add_test (NAME hb-fuzzer + COMMAND python run-fuzzer-tests.py $ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endif () diff --git a/test/fuzzing/Makefile.am b/test/fuzzing/Makefile.am index 2c0eb908f..6120afce7 100644 --- a/test/fuzzing/Makefile.am +++ b/test/fuzzing/Makefile.am @@ -63,9 +63,6 @@ TESTS_ENVIRONMENT = \ endif check: - cat $(srcdir)/../shaping/tests/fuzzed.tests | \ - cut -d: -f1 | while read x; do \ - ./hb-fuzzer $(srcdir)/../shaping/$$x; \ - done + $(srcdir)/run-fuzzer-tests.py -include $(top_srcdir)/git.mk diff --git a/test/fuzzing/run-fuzzer-tests.py b/test/fuzzing/run-fuzzer-tests.py index 3fc788375..aa615af70 100755 --- a/test/fuzzing/run-fuzzer-tests.py +++ b/test/fuzzing/run-fuzzer-tests.py @@ -6,9 +6,15 @@ import sys, os, subprocess srcdir = os.environ.get ("srcdir", ".") EXEEXT = os.environ.get ("EXEEXT", "") top_builddir = os.environ.get ("top_builddir", ".") -testdir = os.environ.get ("testdir", ".") -fuzzingdir = os.environ.get ("fuzzingdir", ".") -hb_fuzzer = os.path.join (top_builddir, testdir, fuzzingdir, "hb-fuzzer" + EXEEXT) +hb_fuzzer = os.path.join (top_builddir, "hb-fuzzer" + EXEEXT) + +if hb_fuzzer == ".\\hb-fuzzer": + hb_fuzzer = "./hb-fuzzer.exe" + +if not os.path.exists (hb_fuzzer): + hb_fuzzer = sys.argv[1] + +print ('hb_fuzzer:', hb_fuzzer) fails = 0 for line in open (os.path.join (srcdir, "..", "shaping", "tests", "fuzzed.tests")): diff --git a/test/shaping/CMakeLists.txt b/test/shaping/CMakeLists.txt index 5310a2c23..e186858b5 100644 --- a/test/shaping/CMakeLists.txt +++ b/test/shaping/CMakeLists.txt @@ -1,11 +1,10 @@ if (HB_BUILD_UTILS) file (READ "${CMAKE_CURRENT_SOURCE_DIR}/Makefile.am" MAKEFILEAM) extract_make_variable (TESTS ${MAKEFILEAM}) + foreach (test IN ITEMS ${TESTS}) - add_test (${test} python run-tests.py "${test}") - set_tests_properties (${test} PROPERTIES - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - ENVIRONMENT "top_builddir=${PROJECT_BINARY_DIR};utildir=." - ) + add_test (NAME ${test} + COMMAND python run-tests.py $ "${test}" + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) endforeach () endif () diff --git a/test/shaping/run-tests.py b/test/shaping/run-tests.py index 09c2f6857..342c006ef 100755 --- a/test/shaping/run-tests.py +++ b/test/shaping/run-tests.py @@ -28,14 +28,22 @@ EXEEXT = os.environ.get ("EXEEXT", "") extra_options = "--verify" hb_shape = os.path.join (top_builddir, utildir, "hb-shape" + EXEEXT) -fails = 0 args = sys.argv[1:] +if not os.path.exists (hb_shape): + hb_shape = args[0] + args = args[1:] + +fails = 0 + reference = False if len (args) and args[0] == "--reference": reference = True args = args[1:] +if not reference: + print ('hb_shape:', hb_shape) + if not len (args): args = [sys.stdin]