diff --git a/gio/gmemorysettingsbackend.c b/gio/gmemorysettingsbackend.c index c0e4c807a2f54bccc2a93e5853879a4d1bc95729..0ebc604ae0ad7a91daa8694362d2a6986ebac17d 100644 --- a/gio/gmemorysettingsbackend.c +++ b/gio/gmemorysettingsbackend.c @@ -23,7 +23,7 @@ #include "gsimplepermission.h" #include "gsettingsbackendinternal.h" -#include "giomodule.h" +#include "giomodule-priv.h" #define G_TYPE_MEMORY_SETTINGS_BACKEND (g_memory_settings_backend_get_type()) @@ -41,6 +41,7 @@ typedef struct G_DEFINE_TYPE_WITH_CODE (GMemorySettingsBackend, g_memory_settings_backend, G_TYPE_SETTINGS_BACKEND, + _g_io_modules_ensure_extension_points_registered (); g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME, g_define_type_id, "memory", 10)) diff --git a/gio/gnextstepsettingsbackend.m b/gio/gnextstepsettingsbackend.m index 9e1862b83dd3893cfc31fea077d9bb7cc19fa0e1..5ecaec8592b9942a4fdded250fa938277f05e039 100644 --- a/gio/gnextstepsettingsbackend.m +++ b/gio/gnextstepsettingsbackend.m @@ -23,7 +23,7 @@ #include "gsettingsbackendinternal.h" #include "gsimplepermission.h" -#include "giomodule.h" +#include "giomodule-priv.h" #import @@ -46,6 +46,7 @@ struct _GNextstepSettingsBackend G_DEFINE_TYPE_WITH_CODE (GNextstepSettingsBackend, g_nextstep_settings_backend, G_TYPE_SETTINGS_BACKEND, + _g_io_modules_ensure_extension_points_registered (); g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME, g_define_type_id, "nextstep", 90)); diff --git a/gio/gnullsettingsbackend.c b/gio/gnullsettingsbackend.c index 9aaacd86e542007e3a751d3859138e525dc6545b..cf12c1614dff380e6be6cc3b81c806a470e4f796 100644 --- a/gio/gnullsettingsbackend.c +++ b/gio/gnullsettingsbackend.c @@ -22,7 +22,7 @@ #include "config.h" #include "gsettingsbackendinternal.h" -#include "giomodule.h" +#include "giomodule-priv.h" #include "gsimplepermission.h" @@ -38,6 +38,7 @@ typedef GSettingsBackend GNullSettingsBackend; G_DEFINE_TYPE_WITH_CODE (GNullSettingsBackend, g_null_settings_backend, G_TYPE_SETTINGS_BACKEND, + _g_io_modules_ensure_extension_points_registered (); g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME, g_define_type_id, "null", 10)) diff --git a/gio/gregistrysettingsbackend.c b/gio/gregistrysettingsbackend.c index aecccd3f7e17d26efa538209abf04d798c21efc7..6250398770184642de96199a613ce1ad7ec70a35 100644 --- a/gio/gregistrysettingsbackend.c +++ b/gio/gregistrysettingsbackend.c @@ -93,7 +93,7 @@ #include "gregistrysettingsbackend.h" #include "gsettingsbackend.h" -#include "giomodule.h" +#include "giomodule-priv.h" #include @@ -179,6 +179,7 @@ typedef struct { G_DEFINE_TYPE_WITH_CODE (GRegistryBackend, g_registry_backend, G_TYPE_SETTINGS_BACKEND, + _g_io_modules_ensure_extension_points_registered (); g_io_extension_point_implement (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME, g_define_type_id, "registry", 90)) diff --git a/gio/tests/memory-settings-backend.c b/gio/tests/memory-settings-backend.c new file mode 100644 index 0000000000000000000000000000000000000000..80e9919bfdc67b9661339901ac5358c4f78d2563 --- /dev/null +++ b/gio/tests/memory-settings-backend.c @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2022 Ryan Hope + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Hope + */ + +#include +#include +#define G_SETTINGS_ENABLE_BACKEND +#include + +/* Test that the "gsettings-backend" extension point has been registered. + * Must be run first and separetly from other GSettingsBackend, + * as they will register the extension point making the test useless. + */ +static void +test_extension_point_registered (void) +{ + GSettingsBackend *backend; + GIOExtensionPoint *extension_point; + + backend = g_memory_settings_backend_new (); + g_assert_true (G_IS_SETTINGS_BACKEND (backend)); + + extension_point = g_io_extension_point_lookup (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME); + g_assert_nonnull (extension_point); + + g_object_unref (backend); +} + +int +main (int argc, char *argv[]) +{ + setlocale (LC_ALL, ""); + + g_test_init (&argc, &argv, NULL); + + /* Must be run first */ + g_test_add_func ("/memory-settings-backend/extension-point-registered", test_extension_point_registered); + + return g_test_run (); +} diff --git a/gio/tests/meson.build b/gio/tests/meson.build index 1cb5e30ee235be2c49c9d86526a1b06a6362e4c0..c3cc6c75cee84fe325ed4d3b62041b2c9959489b 100644 --- a/gio/tests/meson.build +++ b/gio/tests/meson.build @@ -90,10 +90,12 @@ gio_tests = { 'memory-input-stream' : {}, 'memory-monitor' : {}, 'memory-output-stream' : {}, + 'memory-settings-backend' : {}, 'mount-operation' : {}, 'network-address' : {'extra_sources': ['mock-resolver.c']}, 'network-monitor' : {}, 'network-monitor-race' : {}, + 'null-settings-backend' : {}, 'permission' : {}, 'pollable' : {'dependencies' : [libutil_dep]}, 'power-profile-monitor' : {}, diff --git a/gio/tests/null-settings-backend.c b/gio/tests/null-settings-backend.c new file mode 100644 index 0000000000000000000000000000000000000000..34dee56d2cc092e230d7f35c377411cdf24ea039 --- /dev/null +++ b/gio/tests/null-settings-backend.c @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2022 Ryan Hope + * + * SPDX-License-Identifier: LGPL-2.1-or-later + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, see . + * + * Authors: Ryan Hope + */ + +#include +#define G_SETTINGS_ENABLE_BACKEND +#include + +/* Test that the "gsettings-backend" extension point has been registered. + * Must be run first and separetly from other GSettingsBackend, + * as they will register the extension point making the test useless. + */ +static void +test_extension_point_registered (void) +{ + GSettingsBackend *backend; + GIOExtensionPoint *extension_point; + + backend = g_null_settings_backend_new (); + g_assert_true (G_IS_SETTINGS_BACKEND (backend)); + extension_point = g_io_extension_point_lookup (G_SETTINGS_BACKEND_EXTENSION_POINT_NAME); + + g_assert_nonnull (extension_point); + + g_object_unref (backend); +} + +int +main (int argc, char *argv[]) +{ + g_test_init (&argc, &argv, NULL); + + /* Must be run first */ + g_test_add_func ("/null-settings-backend/extension-point-registered", test_extension_point_registered); + + return g_test_run (); +}