summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Dywan <christian.dywan@canonical.com>2014-04-04 23:49:33 +0200
committerChristian Dywan <christian.dywan@canonical.com>2014-04-04 23:49:33 +0200
commit3007d024541dd63d52de35cfa2a6c863c7ee6afe (patch)
tree5a7e35d00f80b0df79d84ad4e1bb636f30f44570
parent1485d8a3b841bbcd7fbc703e1de46d2196736958 (diff)
downloadmidori-3007d024541dd63d52de35cfa2a6c863c7ee6afe.tar.gz
Execute extension tests separately from CMake
-rw-r--r--cmake/ContainTest.cmake11
-rw-r--r--tests/CMakeLists.txt13
-rw-r--r--tests/extensions.c43
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 ();