diff options
author | Philip Withnall <philip@tecnocode.co.uk> | 2022-05-26 16:42:02 +0000 |
---|---|---|
committer | Philip Withnall <philip@tecnocode.co.uk> | 2022-05-26 16:42:02 +0000 |
commit | 8625d8144bcc57074cf34586e7cf5bb36b16ea78 (patch) | |
tree | 3ee554cd0ba2e0da69b666ff5375740b0c5a9ec3 | |
parent | a20a432100be78041656628bae24b8d19a53178e (diff) | |
parent | 0dca8bb6aaa2e33a16275f7429306c1e08649d85 (diff) | |
download | glib-8625d8144bcc57074cf34586e7cf5bb36b16ea78.tar.gz |
Merge branch 'module_tests' into 'main'
Move tests/module-test.c to gmodules/tests/
See merge request GNOME/glib!2660
-rw-r--r-- | gmodule/tests/libmoduletestplugin_a.c (renamed from tests/libmoduletestplugin_a.c) | 6 | ||||
-rw-r--r-- | gmodule/tests/libmoduletestplugin_b.c (renamed from tests/libmoduletestplugin_b.c) | 5 | ||||
-rw-r--r-- | gmodule/tests/meson.build | 33 | ||||
-rw-r--r-- | gmodule/tests/module-test.c (renamed from tests/module-test.c) | 80 | ||||
-rw-r--r-- | tests/meson.build | 72 |
5 files changed, 75 insertions, 121 deletions
diff --git a/tests/libmoduletestplugin_a.c b/gmodule/tests/libmoduletestplugin_a.c index 56bd52904..cb65f1ce1 100644 --- a/tests/libmoduletestplugin_a.c +++ b/gmodule/tests/libmoduletestplugin_a.c @@ -19,14 +19,10 @@ * Modified by the GLib Team and others 1997-2000. See the AUTHORS * file for a list of people on the GLib Team. See the ChangeLog * files for a list of changes. These files are distributed with - * GLib at ftp://ftp.gtk.org/pub/gtk/. + * GLib at ftp://ftp.gtk.org/pub/gtk/. */ -#undef G_DISABLE_ASSERT -#undef G_LOG_DOMAIN - #include <gmodule.h> -#include <stdlib.h> G_MODULE_EXPORT void gplugin_a_func (void); G_MODULE_EXPORT void gplugin_clash_func (void); diff --git a/tests/libmoduletestplugin_b.c b/gmodule/tests/libmoduletestplugin_b.c index e147dd24e..aee241bcf 100644 --- a/tests/libmoduletestplugin_b.c +++ b/gmodule/tests/libmoduletestplugin_b.c @@ -19,12 +19,9 @@ * Modified by the GLib Team and others 1997-2000. See the AUTHORS * file for a list of people on the GLib Team. See the ChangeLog * files for a list of changes. These files are distributed with - * GLib at ftp://ftp.gtk.org/pub/gtk/. + * GLib at ftp://ftp.gtk.org/pub/gtk/. */ -#undef G_DISABLE_ASSERT -#undef G_LOG_DOMAIN - #include <gmodule.h> G_MODULE_EXPORT gchar* gplugin_b_state; diff --git a/gmodule/tests/meson.build b/gmodule/tests/meson.build index 9b475a88e..1650fe5e0 100644 --- a/gmodule/tests/meson.build +++ b/gmodule/tests/meson.build @@ -2,8 +2,40 @@ gmodule_tests = { 'cxx' : { 'source' : ['cxx.cpp'], }, + 'module-test-library' : { + 'export_dynamic' : true, + 'source': 'module-test.c', + 'c_args': ['-DMODULE_TYPE="library"'], + }, + 'module-test-plugin' : { + 'export_dynamic' : true, + 'source': 'module-test.c', + 'c_args': ['-DMODULE_TYPE="plugin"'], + }, } +module_suffix = [] +# Keep the autotools convention for shared module suffix because GModule +# depends on it: https://gitlab.gnome.org/GNOME/glib/issues/520 +if ['darwin', 'ios'].contains(host_machine.system()) + module_suffix = 'so' +endif + +foreach module : ['moduletestplugin_a', 'moduletestplugin_b'] + shared_module(module + '_plugin', 'lib@0@.c'.format(module), + dependencies : [libglib_dep, libgmodule_dep], + install_dir : installed_tests_execdir, + install : installed_tests_enabled, + name_suffix : module_suffix + ) + shared_library(module + '_library', 'lib@0@.c'.format(module), + dependencies : [libglib_dep, libgmodule_dep], + install_dir : installed_tests_execdir, + install : installed_tests_enabled, + name_suffix : module_suffix + ) +endforeach + test_env = environment() test_env.set('G_TEST_SRCDIR', meson.current_source_dir()) test_env.set('G_TEST_BUILDDIR', meson.current_build_dir()) @@ -35,6 +67,7 @@ foreach test_name, extra_args : gmodule_tests c_args : test_cargs + extra_args.get('c_args', []), link_args : extra_args.get('link_args', []), dependencies : test_deps + extra_args.get('dependencies', []), + export_dynamic : extra_args.get('export_dynamic', false), install_dir: installed_tests_execdir, install: install, ) diff --git a/tests/module-test.c b/gmodule/tests/module-test.c index a74bc74d4..e6cd69ac1 100644 --- a/tests/module-test.c +++ b/gmodule/tests/module-test.c @@ -19,14 +19,10 @@ * Modified by the GLib Team and others 1997-2000. See the AUTHORS * file for a list of people on the GLib Team. See the ChangeLog * files for a list of changes. These files are distributed with - * GLib at ftp://ftp.gtk.org/pub/gtk/. + * GLib at ftp://ftp.gtk.org/pub/gtk/. */ -#undef G_DISABLE_ASSERT -#undef G_LOG_DOMAIN - #include <gmodule.h> -#include <string.h> #ifdef _MSC_VER # define MODULE_FILENAME_PREFIX "" @@ -34,7 +30,7 @@ # define MODULE_FILENAME_PREFIX "lib" #endif -gchar* global_state; +gchar *global_state = NULL; G_MODULE_EXPORT void g_clash_func (void); @@ -55,30 +51,28 @@ compare (const gchar *desc, const gchar *expected, const gchar *found) { if (!expected && !found) return; - + if (expected && found && strcmp (expected, found) == 0) return; - + g_error ("error: %s state should have been \"%s\", but is \"%s\"", desc, expected ? expected : "NULL", found ? found : "NULL"); } -static void -test_states (const gchar *global, const gchar *gplugin_a, - const gchar *gplugin_b) -{ +static void +test_states (const gchar *global, const gchar *gplugin_a, const gchar *gplugin_b) +{ compare ("global", global, global_state); compare ("Plugin A", gplugin_a, *gplugin_a_state); compare ("Plugin B", gplugin_b, *gplugin_b_state); - + global_state = *gplugin_a_state = *gplugin_b_state = NULL; } - + static SimpleFunc plugin_clash_func = NULL; -int -main (int argc, - char **argv) +static void +test_module_basics (void) { GModule *module_self, *module_a, *module_b; gchar *plugin_a, *plugin_b; @@ -86,8 +80,6 @@ main (int argc, GModuleFunc gmod_f; GError *error = NULL; - g_test_init (&argc, &argv, NULL); - if (!g_module_supported ()) g_error ("dynamic modules not supported"); @@ -95,7 +87,7 @@ main (int argc, plugin_b = g_test_build_filename (G_TEST_BUILT, MODULE_FILENAME_PREFIX "moduletestplugin_b_" MODULE_TYPE, NULL); /* module handles */ - + module_self = g_module_open_full (NULL, G_MODULE_BIND_LAZY, &error); g_assert_no_error (error); if (!module_self) @@ -120,34 +112,33 @@ main (int argc, /* get plugin state vars */ - if (!g_module_symbol (module_a, "gplugin_a_state", - (gpointer *) &gplugin_a_state)) + if (!g_module_symbol (module_a, "gplugin_a_state", + (gpointer *) &gplugin_a_state)) g_error ("error: %s", g_module_error ()); - - if (!g_module_symbol (module_b, "gplugin_b_state", - (gpointer *) &gplugin_b_state)) + + if (!g_module_symbol (module_b, "gplugin_b_state", + (gpointer *) &gplugin_b_state)) g_error ("error: %s", g_module_error ()); test_states (NULL, NULL, "check-init"); - - /* get plugin specific symbols and call them - */ + + /* get plugin specific symbols and call them */ + if (!g_module_symbol (module_a, "gplugin_a_func", (gpointer *) &f_a)) g_error ("error: %s", g_module_error ()); test_states (NULL, NULL, NULL); - + if (!g_module_symbol (module_b, "gplugin_b_func", (gpointer *) &f_b)) g_error ("error: %s", g_module_error ()); test_states (NULL, NULL, NULL); - + f_a (); test_states (NULL, "Hello world", NULL); - + f_b (); test_states (NULL, NULL, "Hello world"); - - /* get and call globally clashing functions - */ - + + /* get and call globally clashing functions */ + if (!g_module_symbol (module_self, "g_clash_func", (gpointer *) &f_self)) g_error ("error: %s", g_module_error ()); test_states (NULL, NULL, NULL); @@ -155,14 +146,14 @@ main (int argc, if (!g_module_symbol (module_a, "g_clash_func", (gpointer *) &f_a)) g_error ("error: %s", g_module_error ()); test_states (NULL, NULL, NULL); - + if (!g_module_symbol (module_b, "g_clash_func", (gpointer *) &f_b)) g_error ("error: %s", g_module_error ()); test_states (NULL, NULL, NULL); - + f_self (); test_states ("global clash", NULL, NULL); - + f_a (); test_states (NULL, "global clash", NULL); @@ -195,7 +186,7 @@ main (int argc, gmod_f (module_b); test_states (NULL, NULL, "BOOH"); - + gmod_f (module_a); test_states (NULL, "BOOH", NULL); @@ -210,5 +201,14 @@ main (int argc, g_free (plugin_a); g_free (plugin_b); g_module_close (module_self); - return 0; +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + g_test_add_func ("/module/basics", test_module_basics); + + return g_test_run (); } diff --git a/tests/meson.build b/tests/meson.build index 777ba428c..ab7f20686 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -15,21 +15,6 @@ test_cargs = ['-DG_LOG_DOMAIN="GLib"', '-UG_DISABLE_ASSERT'] subdir('gobject') subdir('refcount') -tests = { - 'module-test-library' : { - 'dependencies' : [libgmodule_dep], - 'export_dynamic' : true, - 'source': 'module-test.c', - 'c_args': ['-DMODULE_TYPE="library"'], - }, - 'module-test-plugin' : { - 'dependencies' : [libgmodule_dep], - 'export_dynamic' : true, - 'source': 'module-test.c', - 'c_args': ['-DMODULE_TYPE="plugin"'], - }, -} - test_extra_programs = { 'slice-test' : { 'extra_sources' : ['memchunks.c'], @@ -37,66 +22,9 @@ test_extra_programs = { 'assert-msg-test' : {}, } -module_suffix = [] -# Keep the autotools convention for shared module suffix because GModule -# depends on it: https://gitlab.gnome.org/GNOME/glib/issues/520 -if ['darwin', 'ios'].contains(host_machine.system()) - module_suffix = 'so' -endif - -foreach module : ['moduletestplugin_a', 'moduletestplugin_b'] - shared_module(module + '_plugin', 'lib@0@.c'.format(module), - dependencies : [libglib_dep, libgmodule_dep], - install_dir : installed_tests_execdir, - install : installed_tests_enabled, - name_suffix : module_suffix - ) - shared_library(module + '_library', 'lib@0@.c'.format(module), - dependencies : [libglib_dep, libgmodule_dep], - install_dir : installed_tests_execdir, - install : installed_tests_enabled, - name_suffix : module_suffix - ) -endforeach - common_c_args = test_cargs + ['-DGLIB_DISABLE_DEPRECATION_WARNINGS'] common_deps = [libm, thread_dep, libglib_dep] -foreach test_name, extra_args : tests - source = extra_args.get('source', test_name + '.c') - extra_sources = extra_args.get('extra_sources', []) - install = installed_tests_enabled and extra_args.get('install', true) - template = extra_args.get('tap', false) ? installed_tests_template_tap : installed_tests_template - - if install - test_conf = configuration_data() - test_conf.set('installed_tests_dir', installed_tests_execdir) - test_conf.set('program', test_name) - test_conf.set('env', '') - configure_file( - input: template, - output: test_name + '.test', - install_dir: installed_tests_metadir, - configuration: test_conf - ) - endif - - # FIXME? $(GLIB_DEBUG_FLAGS) - exe = executable(test_name, [source, extra_sources], - c_args : common_c_args + extra_args.get('c_args', []), - dependencies : common_deps + extra_args.get('dependencies', []), - export_dynamic : extra_args.get('export_dynamic', false), - include_directories : extra_args.get('include_directories', []), - install_dir: installed_tests_execdir, - install: install, - ) - - suite = ['glib'] + extra_args.get('suite', []) - timeout = suite.contains('slow') ? test_timeout_slow : test_timeout - # FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset - test(test_name, exe, env : test_env, timeout : timeout, suite : suite) -endforeach - foreach program_name, extra_args : test_extra_programs source = extra_args.get('source', program_name + '.c') extra_sources = extra_args.get('extra_sources', []) |