Merge lp:~midori/midori/containAtExecutionTime into lp:midori

Proposed by Cris Dywan
Status: Merged
Approved by: André Stösel
Approved revision: 6649
Merged at revision: 6651
Proposed branch: lp:~midori/midori/containAtExecutionTime
Merge into: lp:midori
Diff against target: 169 lines (+56/-31)
3 files modified
cmake/ContainTest.cmake (+21/-8)
tests/CMakeLists.txt (+12/-1)
tests/extensions.c (+23/-22)
To merge this branch: bzr merge lp:~midori/midori/containAtExecutionTime
Reviewer Review Type Date Requested Status
André Stösel Approve
Review via email: mp+214329@code.launchpad.net

Commit message

Use dependencies to clear test folders before execution

To post a comment you must log in.
6648. By Cris Dywan

Execute extension tests separately from CMake

6649. By Paweł Forysiuk

Swap cache and config folder variables as per alphabetic order

Revision history for this message
André Stösel (ivaldi) wrote :

looks good :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'cmake/ContainTest.cmake'
2--- cmake/ContainTest.cmake 2014-01-26 21:48:37 +0000
3+++ cmake/ContainTest.cmake 2014-04-04 21:57:24 +0000
4@@ -2,26 +2,37 @@
5
6 include(ParseArguments)
7
8-macro(contain_test test_name)
9- parse_arguments(ARGS "TEST" "" ${ARGN})
10+macro(contain_test test_name executable)
11+ parse_arguments(ARGS "test_name;executable" "" ${ARGN})
12 set(TEST_ENV "")
13- foreach(VARIABLE XDG_DATA_HOME XDG_CONFIG_HOME XDG_CACHE_HOME XDG_DATA_HOME XDG_RUNTIME_DIR TMPDIR)
14+ foreach(VARIABLE XDG_CACHE_HOME XDG_CONFIG_HOME XDG_DATA_HOME XDG_RUNTIME_DIR TMPDIR)
15 set(CONTAINER "${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/${VARIABLE}")
16- file(REMOVE_RECURSE ${CONTAINER})
17- file(MAKE_DIRECTORY ${CONTAINER})
18 set(TEST_ENV "${TEST_ENV}${VARIABLE}=${CONTAINER};")
19 endforeach()
20+
21+ add_dependencies(check contain-${test_name})
22+
23 set_tests_properties(${test_name} PROPERTIES
24 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
25 TIMEOUT 42
26 ENVIRONMENT "${TEST_ENV}"
27 )
28+ add_custom_target("contain-${test_name}"
29+ COMMAND ${CMAKE_COMMAND} -E remove_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders
30+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/XDG_CACHE_HOME
31+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/XDG_CONFIG_HOME
32+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/XDG_DATA_HOME
33+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/XDG_RUNTIME_DIR
34+ COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/${test_name}-folders/TMPDIR
35+ )
36
37+ string(REPLACE ${executable} ";" " " executable)
38 add_custom_target("gdb-${test_name}"
39 COMMAND env ${TEST_ENV} gdb
40 --batch -ex 'set print thread-events off'
41 -ex 'run' -ex 'bt'
42- ${CMAKE_BINARY_DIR}/tests/${UNIT}
43+ --args ${executable}
44+ DEPENDS "contain-${test_name}"
45 )
46
47 add_custom_target("valgrind-${test_name}"
48@@ -30,13 +41,15 @@
49 --show-possibly-lost=no
50 --undef-value-errors=yes
51 --track-origins=yes
52- ${CMAKE_BINARY_DIR}/tests/${UNIT}
53+ ${executable}
54+ DEPENDS "contain-${test_name}"
55 )
56
57 add_custom_target("callgrind-${test_name}"
58 COMMAND env ${TEST_ENV} valgrind
59 --tool=callgrind
60 --callgrind-out-file=${UNIT}.callgrind
61- ${CMAKE_BINARY_DIR}/tests/${UNIT}
62+ ${executable}
63+ DEPENDS "contain-${test_name}"
64 )
65 endmacro(contain_test)
66
67=== modified file 'tests/CMakeLists.txt'
68--- tests/CMakeLists.txt 2013-10-01 21:35:39 +0000
69+++ tests/CMakeLists.txt 2014-04-04 21:57:24 +0000
70@@ -46,9 +46,20 @@
71 ${LIBMIDORI}
72 )
73 add_test(NAME ${UNIT} COMMAND ${UNIT})
74- contain_test (${UNIT})
75+ contain_test (${UNIT} ${UNIT})
76 endforeach ()
77
78+file(GLOB TESTS ${CMAKE_BINARY_DIR}/extensions/lib*.so)
79+foreach(UNIT ${TESTS})
80+ string(REPLACE ${CMAKE_BINARY_DIR} "" TEST ${UNIT})
81+ string(REPLACE "/" "-" TEST ${TEST})
82+ string(REPLACE "-extensions-lib" "" TEST ${TEST})
83+ string(REPLACE ".so" "" TEST ${TEST})
84+ add_test(NAME ${TEST} COMMAND $<TARGET_FILE:extensions> -e ${UNIT})
85+ set(exe $<TARGET_FILE:extensions> -e ${UNIT})
86+ contain_test (${TEST} "${exe}")
87+endforeach()
88+
89 file(GLOB TESTS *.sh)
90 foreach(UNIT_SRC ${TESTS})
91 string(REPLACE ".sh" "" UNIT ${UNIT_SRC})
92
93=== modified file 'tests/extensions.c'
94--- tests/extensions.c 2014-01-25 21:04:57 +0000
95+++ tests/extensions.c 2014-04-04 21:57:24 +0000
96@@ -176,12 +176,11 @@
97 }
98
99 static void
100-extension_load (const gchar* extension_path,
101- GDir* extension_dir)
102+extension_load (const gchar* absolute_filename)
103 {
104- const gchar* filename;
105- while ((filename = g_dir_read_name (extension_dir)))
106- {
107+ g_assert (g_access (absolute_filename, F_OK) == 0);
108+ gchar* extension_path = g_path_get_dirname (absolute_filename);
109+ gchar* filename = g_path_get_basename (absolute_filename);
110 GObject* extension = midori_extension_load_from_file (extension_path, filename, FALSE, TRUE);
111 if (KATZE_IS_ARRAY (extension))
112 {
113@@ -202,7 +201,6 @@
114 g_test_add_data_func (path, extension, extension_activate);
115 g_free (path);
116 }
117- }
118 }
119
120 static void
121@@ -217,29 +215,32 @@
122 char** argv)
123 {
124 midori_test_init (&argc, &argv);
125- midori_app_setup (&argc, &argv, NULL);
126+ gchar* extension;
127+ GOptionEntry entries[] = {
128+ { "extension", 'e', 0, G_OPTION_ARG_STRING, &extension,
129+ "Execute cases defined in extension_init", "EXTENSION" },
130+ { NULL }
131+ };
132+ extension = NULL;
133+ midori_app_setup (&argc, &argv, entries);
134 midori_paths_init (MIDORI_RUNTIME_MODE_NORMAL, NULL);
135 #ifndef HAVE_WEBKIT2
136 soup_session_add_feature_by_type (webkit_get_default_session (),
137 SOUP_TYPE_COOKIE_JAR);
138 #endif
139
140- g_test_add_func ("/extensions/create", extension_create);
141- g_test_add_func ("/extensions/settings", extension_settings);
142- g_test_add_func ("/extensions/config", extension_config);
143-
144- if (g_module_supported ())
145- {
146- gchar* extension_path = midori_paths_get_lib_path (PACKAGE_NAME);
147- GDir* extension_dir = g_dir_open (extension_path, 0, NULL);
148- g_assert (extension_dir != NULL);
149-
150+ if (extension == NULL)
151+ {
152+ g_test_add_func ("/extensions/create", extension_create);
153+ g_test_add_func ("/extensions/settings", extension_settings);
154+ g_test_add_func ("/extensions/config", extension_config);
155+ }
156+ else
157+ {
158+ g_assert (g_module_supported ());
159 /* We require that extensions can be loaded repeatedly */
160- extension_load (extension_path, extension_dir);
161- extension_load (extension_path, extension_dir);
162-
163- g_dir_close (extension_dir);
164- g_free (extension_path);
165+ extension_load (extension);
166+ extension_load (extension);
167 }
168
169 return g_test_run ();

Subscribers

People subscribed via source and target branches

to all changes: