From 328fad453a1a3c66f075ae5002638e4aada50570 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Wed, 1 Aug 2018 16:35:13 +0100 Subject: WIP Signed-off-by: Philip Withnall --- service/dconf-gvdb-utils.c | 7 ++++--- service/meson.build | 22 ++++++++++++++++------ tests/meson.build | 2 +- tests/writer.c | 22 ++++++++++++++++++++-- 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/service/dconf-gvdb-utils.c b/service/dconf-gvdb-utils.c index 0a3f137..fbdb811 100644 --- a/service/dconf-gvdb-utils.c +++ b/service/dconf-gvdb-utils.c @@ -69,11 +69,12 @@ dconf_gvdb_utils_read_file (const gchar *filename, * The code to find an unused backup filename is racy, but this is an * error handling path. Who cares. */ gchar *backup_filename = g_strdup_printf ("%s~", filename); - guint i = 0; - while (g_file_test (backup_filename, G_FILE_TEST_EXISTS)) + guint i; + + for (i = 0; i < G_MAXUINT && g_file_test (backup_filename, G_FILE_TEST_EXISTS); i++) { g_free (backup_filename); - backup_filename = g_strdup_printf ("%s~%u", filename, i++); + backup_filename = g_strdup_printf ("%s~%u", filename, i); } if (g_rename (filename, backup_filename) != 0) diff --git a/service/meson.build b/service/meson.build index f651e25..00e5e56 100644 --- a/service/meson.build +++ b/service/meson.build @@ -21,26 +21,28 @@ configure_file( configuration: service_conf ) -sources = [ +lib_sources = [ 'dconf-blame.c', 'dconf-gvdb-utils.c', 'dconf-keyfile-writer.c', 'dconf-service.c', 'dconf-shm-writer.c', 'dconf-writer.c', - 'main.c' +] +sources = [ + 'main.c', ] -sources += gnome.gdbus_codegen( +lib_sources += gnome.gdbus_codegen( 'dconf-generated', dconf_namespace + '.xml', interface_prefix: dconf_namespace + '.', namespace: 'DConfDBus' ) -executable( - 'dconf-service', - sources, +libdconf_service = static_library( + name, + sources: lib_sources, include_directories: top_inc, dependencies: gio_unix_dep, link_with: [ @@ -48,6 +50,14 @@ executable( libdconf_shm, libgvdb ], +) + +executable( + 'dconf-service', + sources, + include_directories: top_inc, + dependencies: gio_unix_dep, + link_with: libdconf_service, install: true, install_dir: dconf_libexecdir ) diff --git a/tests/meson.build b/tests/meson.build index 6d70212..6948ee9 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -25,7 +25,7 @@ unit_tests = [ ['gdbus-filter', 'dbus.c', '-DDBUS_BACKEND="/gdbus/filter"', gio_unix_dep, libdconf_gdbus_filter], ['engine', 'engine.c', '-DSRCDIR="@0@"'.format(test_dir), [glib_dep, dl_dep, m_dep], [libdconf_engine, libdconf_common, libdconf_mock]], ['client', 'client.c', '-DSRCDIR="@0@"'.format(test_dir), gio_unix_dep, [libdconf_client, libdconf_engine, libdconf_common, libdconf_mock]], - ['writer', 'writer.c', '-DSRCDIR="@0@"'.format(test_dir), [glib_dep, dl_dep, m_dep], [libdconf_engine, libdconf_common, libdconf_mock]], + ['writer', 'writer.c', '-DSRCDIR="@0@"'.format(test_dir), [glib_dep, dl_dep, m_dep], [libdconf_service, libdconf_mock]], ] foreach unit_test: unit_tests diff --git a/tests/writer.c b/tests/writer.c index 92757d1..f4813ec 100644 --- a/tests/writer.c +++ b/tests/writer.c @@ -19,26 +19,44 @@ #include -#include "service/dconf-generated.h" #include "service/dconf-writer.h" +/* Test basic initialisation of a #DConfWriter. This is essentially a smoketest. */ static void test_writer_basic (void) { g_autoptr(DConfWriter) writer = NULL; - writer = dconf_writer_new (DCONF_TYPE_KEYFILE_WRITER, "some-name"); + writer = DCONF_WRITER (dconf_writer_new (DCONF_TYPE_KEYFILE_WRITER, "some-name")); g_assert_nonnull (writer); g_assert_cmpstr (dconf_writer_get_name (writer), ==, "some-name"); } +/* TODO */ +static void +test_writer_corrupt_file (void) +{ + g_autoptr(DConfWriter) writer = NULL; + gboolean retval; + g_autoptr(GError) local_error = NULL; + + writer = DCONF_WRITER (dconf_writer_new (DCONF_TYPE_KEYFILE_WRITER, "some-name")); + g_assert_nonnull (writer); + + writer_iface = DCONF_DBUS_WRITER_GET_IFACE (writer); + retval = writer_iface->handle_init (DCONF_DBUS_WRITER (writer), invocation); + + /* TODO: this is arse */ +} + int main (int argc, char **argv) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/writer/basic", test_writer_basic); + g_test_add_func ("/writer/corrupt-file", test_writer_corrupt_file); return g_test_run (); } -- cgit v1.2.1