diff options
author | Christian Dywan <christian.dywan@canonical.com> | 2014-04-04 23:49:33 +0200 |
---|---|---|
committer | Christian Dywan <christian.dywan@canonical.com> | 2014-04-04 23:49:33 +0200 |
commit | 3007d024541dd63d52de35cfa2a6c863c7ee6afe (patch) | |
tree | 5a7e35d00f80b0df79d84ad4e1bb636f30f44570 | |
parent | 1485d8a3b841bbcd7fbc703e1de46d2196736958 (diff) | |
download | midori-3007d024541dd63d52de35cfa2a6c863c7ee6afe.tar.gz |
Execute extension tests separately from CMake
-rw-r--r-- | cmake/ContainTest.cmake | 11 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 13 | ||||
-rw-r--r-- | tests/extensions.c | 43 |
3 files changed, 40 insertions, 27 deletions
diff --git a/cmake/ContainTest.cmake b/cmake/ContainTest.cmake index c671fd28..49bad07e 100644 --- a/cmake/ContainTest.cmake +++ b/cmake/ContainTest.cmake @@ -2,8 +2,8 @@ include(ParseArguments) -macro(contain_test test_name) - parse_arguments(ARGS "TEST" "" ${ARGN}) +macro(contain_test test_name executable) + parse_arguments(ARGS "test_name;executable" "" ${ARGN}) set(TEST_ENV "") foreach(VARIABLE XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_RUNTIME_DIR TMPDIR) set(CONTAINER "${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/${VARIABLE}") @@ -26,11 +26,12 @@ macro(contain_test test_name) COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/TMPDIR ) + string(REPLACE ${executable} ";" " " executable) add_custom_target("gdb-${test_name}" COMMAND env ${TEST_ENV} gdb --batch -ex 'set print thread-events off' -ex 'run' -ex 'bt' - ${CMAKE_BINARY_DIR}/tests/${UNIT} + --args ${executable} DEPENDS "contain-${test_name}" ) @@ -40,7 +41,7 @@ macro(contain_test test_name) --show-possibly-lost=no --undef-value-errors=yes --track-origins=yes - ${CMAKE_BINARY_DIR}/tests/${UNIT} + ${executable} DEPENDS "contain-${test_name}" ) @@ -48,7 +49,7 @@ macro(contain_test test_name) COMMAND env ${TEST_ENV} valgrind --tool=callgrind --callgrind-out-file=${UNIT}.callgrind - ${CMAKE_BINARY_DIR}/tests/${UNIT} + ${executable} DEPENDS "contain-${test_name}" ) endmacro(contain_test) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7782ff77..54b66808 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -46,9 +46,20 @@ foreach(UNIT_SRC ${TESTS}) ${LIBMIDORI} ) add_test(NAME ${UNIT} COMMAND ${UNIT}) - contain_test (${UNIT}) + contain_test (${UNIT} ${UNIT}) endforeach () +file(GLOB TESTS ${CMAKE_BINARY_DIR}/extensions/lib*.so) +foreach(UNIT ${TESTS}) + string(REPLACE ${CMAKE_BINARY_DIR} "" TEST ${UNIT}) + string(REPLACE "/" "-" TEST ${TEST}) + string(REPLACE "-extensions-lib" "" TEST ${TEST}) + string(REPLACE ".so" "" TEST ${TEST}) + add_test(NAME ${TEST} COMMAND $<TARGET_FILE:extensions> -e ${UNIT}) + set(exe $<TARGET_FILE:extensions> -e ${UNIT}) + contain_test (${TEST} "${exe}") +endforeach() + file(GLOB TESTS *.sh) foreach(UNIT_SRC ${TESTS}) string(REPLACE ".sh" "" UNIT ${UNIT_SRC}) diff --git a/tests/extensions.c b/tests/extensions.c index 4fe3ddf6..327ba1ba 100644 --- a/tests/extensions.c +++ b/tests/extensions.c @@ -176,12 +176,11 @@ extension_activate (gconstpointer data) } static void -extension_load (const gchar* extension_path, - GDir* extension_dir) +extension_load (const gchar* absolute_filename) { - const gchar* filename; - while ((filename = g_dir_read_name (extension_dir))) - { + g_assert (g_access (absolute_filename, F_OK) == 0); + gchar* extension_path = g_path_get_dirname (absolute_filename); + gchar* filename = g_path_get_basename (absolute_filename); GObject* extension = midori_extension_load_from_file (extension_path, filename, FALSE, TRUE); if (KATZE_IS_ARRAY (extension)) { @@ -202,7 +201,6 @@ extension_load (const gchar* extension_path, g_test_add_data_func (path, extension, extension_activate); g_free (path); } - } } static void @@ -217,29 +215,32 @@ main (int argc, char** argv) { midori_test_init (&argc, &argv); - midori_app_setup (&argc, &argv, NULL); + gchar* extension; + GOptionEntry entries[] = { + { "extension", 'e', 0, G_OPTION_ARG_STRING, &extension, + "Execute cases defined in extension_init", "EXTENSION" }, + { NULL } + }; + extension = NULL; + midori_app_setup (&argc, &argv, entries); midori_paths_init (MIDORI_RUNTIME_MODE_NORMAL, NULL); #ifndef HAVE_WEBKIT2 soup_session_add_feature_by_type (webkit_get_default_session (), SOUP_TYPE_COOKIE_JAR); #endif - g_test_add_func ("/extensions/create", extension_create); - g_test_add_func ("/extensions/settings", extension_settings); - g_test_add_func ("/extensions/config", extension_config); - - if (g_module_supported ()) + if (extension == NULL) { - gchar* extension_path = midori_paths_get_lib_path (PACKAGE_NAME); - GDir* extension_dir = g_dir_open (extension_path, 0, NULL); - g_assert (extension_dir != NULL); - + g_test_add_func ("/extensions/create", extension_create); + g_test_add_func ("/extensions/settings", extension_settings); + g_test_add_func ("/extensions/config", extension_config); + } + else + { + g_assert (g_module_supported ()); /* We require that extensions can be loaded repeatedly */ - extension_load (extension_path, extension_dir); - extension_load (extension_path, extension_dir); - - g_dir_close (extension_dir); - g_free (extension_path); + extension_load (extension); + extension_load (extension); } return g_test_run (); |