Add API tests to cmake build
authorKhaled Hosny <khaledhosny@eglug.org>
Tue, 5 Dec 2017 22:43:28 +0000 (00:43 +0200)
committerKhaled Hosny <khaledhosny@eglug.org>
Wed, 6 Dec 2017 13:25:10 +0000 (15:25 +0200)
CMakeLists.txt
test/CMakeLists.txt [new file with mode: 0644]
test/api/CMakeLists.txt [new file with mode: 0644]
test/api/hb-test.h
test/api/test-c.c

index 2357609..24ccb6f 100644 (file)
@@ -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 (file)
index 0000000..53d257b
--- /dev/null
@@ -0,0 +1 @@
+add_subdirectory(api)
diff --git a/test/api/CMakeLists.txt b/test/api/CMakeLists.txt
new file mode 100644 (file)
index 0000000..4e786ba
--- /dev/null
@@ -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)
index 4d41218..040f0c2 100644 (file)
@@ -27,7 +27,9 @@
 #ifndef HB_TEST_H
 #define HB_TEST_H
 
+#ifdef HAVE_CONFIG_H
 #include <config.h>
+#endif
 
 #include <hb-glib.h>
 
index 6e8602f..4b43b83 100644 (file)
@@ -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>