From 9e1700cbfeaaa751fb5a0d385d6ea18d69a5ac1c Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Sat, 14 Mar 2015 17:58:03 +0200 Subject: Moved different gnome feature tests in their own subdirectories. --- modules/gnome.py | 2 +- .../7 gnome/com.github.meson.gschema.xml | 12 --- test cases/frameworks/7 gnome/data/res1.txt | 1 - test cases/frameworks/7 gnome/gir/golib.c | 94 ++++++++++++++++++++++ test cases/frameworks/7 gnome/gir/golib.h | 37 +++++++++ test cases/frameworks/7 gnome/gir/meson.build | 15 ++++ test cases/frameworks/7 gnome/gir/prog.c | 24 ++++++ test cases/frameworks/7 gnome/golib.c | 94 ---------------------- test cases/frameworks/7 gnome/golib.h | 37 --------- test cases/frameworks/7 gnome/main.c | 27 ------- test cases/frameworks/7 gnome/meson.build | 32 +------- .../frameworks/7 gnome/myresource.gresource.xml | 6 -- test cases/frameworks/7 gnome/prog.c | 24 ------ .../frameworks/7 gnome/resources/data/res1.txt | 1 + test cases/frameworks/7 gnome/resources/main.c | 27 +++++++ .../frameworks/7 gnome/resources/meson.build | 7 ++ .../7 gnome/resources/myresource.gresource.xml | 6 ++ test cases/frameworks/7 gnome/schemaprog.c | 47 ----------- .../7 gnome/schemas/com.github.meson.gschema.xml | 12 +++ test cases/frameworks/7 gnome/schemas/meson.build | 8 ++ test cases/frameworks/7 gnome/schemas/schemaprog.c | 47 +++++++++++ 21 files changed, 282 insertions(+), 278 deletions(-) delete mode 100644 test cases/frameworks/7 gnome/com.github.meson.gschema.xml delete mode 100644 test cases/frameworks/7 gnome/data/res1.txt create mode 100644 test cases/frameworks/7 gnome/gir/golib.c create mode 100644 test cases/frameworks/7 gnome/gir/golib.h create mode 100644 test cases/frameworks/7 gnome/gir/meson.build create mode 100644 test cases/frameworks/7 gnome/gir/prog.c delete mode 100644 test cases/frameworks/7 gnome/golib.c delete mode 100644 test cases/frameworks/7 gnome/golib.h delete mode 100644 test cases/frameworks/7 gnome/main.c delete mode 100644 test cases/frameworks/7 gnome/myresource.gresource.xml delete mode 100644 test cases/frameworks/7 gnome/prog.c create mode 100644 test cases/frameworks/7 gnome/resources/data/res1.txt create mode 100644 test cases/frameworks/7 gnome/resources/main.c create mode 100644 test cases/frameworks/7 gnome/resources/meson.build create mode 100644 test cases/frameworks/7 gnome/resources/myresource.gresource.xml delete mode 100644 test cases/frameworks/7 gnome/schemaprog.c create mode 100644 test cases/frameworks/7 gnome/schemas/com.github.meson.gschema.xml create mode 100644 test cases/frameworks/7 gnome/schemas/meson.build create mode 100644 test cases/frameworks/7 gnome/schemas/schemaprog.c diff --git a/modules/gnome.py b/modules/gnome.py index a1c5025..f6d13a9 100644 --- a/modules/gnome.py +++ b/modules/gnome.py @@ -26,7 +26,7 @@ class GnomeModule: def compile_resources(self, state, args, kwargs): cmd = ['glib-compile-resources', '@INPUT@', '--generate'] if 'source_dir' in kwargs: - d = os.path.join(state.build_to_src, kwargs.pop('source_dir')) + d = os.path.join(state.build_to_src, state.subdir, kwargs.pop('source_dir')) cmd += ['--sourcedir', d] if 'c_name' in kwargs: cmd += ['--c-name', kwargs.pop('c_name')] diff --git a/test cases/frameworks/7 gnome/com.github.meson.gschema.xml b/test cases/frameworks/7 gnome/com.github.meson.gschema.xml deleted file mode 100644 index 741518d..0000000 --- a/test cases/frameworks/7 gnome/com.github.meson.gschema.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - "Hello" - A greeting - - Sample text to test schema compilation - - - - \ No newline at end of file diff --git a/test cases/frameworks/7 gnome/data/res1.txt b/test cases/frameworks/7 gnome/data/res1.txt deleted file mode 100644 index e10afea..0000000 --- a/test cases/frameworks/7 gnome/data/res1.txt +++ /dev/null @@ -1 +0,0 @@ -This is a resource. diff --git a/test cases/frameworks/7 gnome/gir/golib.c b/test cases/frameworks/7 gnome/gir/golib.c new file mode 100644 index 0000000..8d70649 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/golib.c @@ -0,0 +1,94 @@ +#include "golib.h" +#include + +G_DEFINE_TYPE (MesonSample, meson_sample, G_TYPE_OBJECT) + +#define MESON_SAMPLE_GET_PRIVATE(o) \ + (G_TYPE_INSTANCE_GET_PRIVATE ((o), MESON_SAMPLE_TYPE, MesonSamplePrivate)) + +struct _MesonSamplePrivate { + gchar *msg; +}; + +enum { + PROP_0, + PROP_MSG, + N_PROPERTIES +}; + +static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; + +static void meson_sample_init (MesonSample *object) +{ + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + priv->msg = NULL; +} +static void meson_sample_finalize (GObject *object) +{ + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + g_free (priv->msg); + G_OBJECT_CLASS (meson_sample_parent_class)->finalize (object); +} + +static void meson_sample_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + switch (property_id) { + case PROP_MSG: + g_free (priv->msg); + priv->msg = g_value_dup_string (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void meson_sample_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { + MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); + switch (property_id) { + case PROP_MSG: + g_value_set_string (value, priv->msg); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + break; + } +} + +static void meson_sample_class_init (MesonSampleClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS (klass); + object_class->set_property = meson_sample_set_property; + object_class->get_property = meson_sample_get_property; + object_class->finalize = meson_sample_finalize; + + obj_properties[PROP_MSG] = + g_param_spec_string ("msg", + "Msg", + "The message to print.", + "propertytext", + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT); + g_object_class_install_properties (object_class, + N_PROPERTIES, + obj_properties); + g_type_class_add_private (object_class, sizeof (MesonSamplePrivate)); +} + +MesonSample* meson_sample_new () { + MesonSample *sample; + sample = g_object_new(MESON_SAMPLE_TYPE, NULL); + return sample; +} + +void meson_sample_func (MesonSample *sample) { + MesonSamplePrivate *priv; + g_return_if_fail (sample != NULL); + priv = MESON_SAMPLE_GET_PRIVATE(sample); + printf("GObject introspection is working, %s!\n", priv->msg); +} diff --git a/test cases/frameworks/7 gnome/gir/golib.h b/test cases/frameworks/7 gnome/gir/golib.h new file mode 100644 index 0000000..40bf901 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/golib.h @@ -0,0 +1,37 @@ +#ifndef GOLIB_H +#define GOLIB_H + +#include +#include + +#define MESON_SAMPLE_TYPE \ + (meson_sample_get_type()) +#define MESON_SAMPLE(o) \ + (G_TYPE_CHECK_INSTANCE_CAST ((o), MESON_SAMPLE_TYPE, MesonSample)) +#define MESON_SAMPLE_CLASS(c) \ + (G_TYPE_CHECK_CLASS_CAST ((c), MESON_SAMPLE_TYPE, MesonSampleClass)) +#define MESON_IS_SAMPLE(o) \ + (G_TYPE_CHECK_INSTANCE_TYPE ((o), MESON_SAMPLE_TYPE)) +#define MESON_IS_SAMPLE_CLASS(c) \ + (G_TYPE_CHECK_CLASS_TYPE ((c), MESON_SAMPLE_TYPE)) +#define MESON_SAMPLE_GET_CLASS(o) \ + (G_TYPE_INSTANCE_GET_CLASS ((o), MESON_SAMPLE_TYPE, MesonSampleClass)) + +typedef struct _MesonSample MesonSample; +typedef struct _MesonSamplePrivate MesonSamplePrivate; +typedef struct _MesonSampleClass MesonSampleClass; + +struct _MesonSample { + GObject parent; +}; + +struct _MesonSampleClass { + GObjectClass parent; +}; + +GType meson_sample_get_type () G_GNUC_CONST; +MesonSample* meson_sample_new (void); + +void meson_sample_func (MesonSample *sample); + +#endif diff --git a/test cases/frameworks/7 gnome/gir/meson.build b/test cases/frameworks/7 gnome/gir/meson.build new file mode 100644 index 0000000..115631e --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/meson.build @@ -0,0 +1,15 @@ + +libsources = ['golib.c', 'golib.h'] + +girexe = executable('girprog', libsources, 'prog.c', +dependencies : [glib, gobj, gir, gmod]) + +gnome.generate_gir(girexe, +sources : libsources, +nsversion : '1.0', +namespace : 'Meson', +install : true, +install_dir : 'typelibdir', +) + +test('gobject introspection', girexe) diff --git a/test cases/frameworks/7 gnome/gir/prog.c b/test cases/frameworks/7 gnome/gir/prog.c new file mode 100644 index 0000000..71584d6 --- /dev/null +++ b/test cases/frameworks/7 gnome/gir/prog.c @@ -0,0 +1,24 @@ +#include"golib.h" + +#include + +int main(int argc, char *argv[]) { + GOptionContext *ctx; + GError *error = NULL; + MesonSample *i; + + ctx = g_option_context_new(NULL); + g_option_context_add_group(ctx, g_irepository_get_option_group ()); + + if (!g_option_context_parse(ctx, &argc, &argv, &error)) { + g_print("sample: %s\n", error->message); + return 1; + } + + i = meson_sample_new(); + meson_sample_func(i); + g_object_unref(G_OBJECT(i)); + + return 0; +} + diff --git a/test cases/frameworks/7 gnome/golib.c b/test cases/frameworks/7 gnome/golib.c deleted file mode 100644 index 8d70649..0000000 --- a/test cases/frameworks/7 gnome/golib.c +++ /dev/null @@ -1,94 +0,0 @@ -#include "golib.h" -#include - -G_DEFINE_TYPE (MesonSample, meson_sample, G_TYPE_OBJECT) - -#define MESON_SAMPLE_GET_PRIVATE(o) \ - (G_TYPE_INSTANCE_GET_PRIVATE ((o), MESON_SAMPLE_TYPE, MesonSamplePrivate)) - -struct _MesonSamplePrivate { - gchar *msg; -}; - -enum { - PROP_0, - PROP_MSG, - N_PROPERTIES -}; - -static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, }; - -static void meson_sample_init (MesonSample *object) -{ - MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); - priv->msg = NULL; -} -static void meson_sample_finalize (GObject *object) -{ - MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); - g_free (priv->msg); - G_OBJECT_CLASS (meson_sample_parent_class)->finalize (object); -} - -static void meson_sample_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) { - MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); - switch (property_id) { - case PROP_MSG: - g_free (priv->msg); - priv->msg = g_value_dup_string (value); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void meson_sample_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) { - MesonSamplePrivate *priv = MESON_SAMPLE_GET_PRIVATE (object); - switch (property_id) { - case PROP_MSG: - g_value_set_string (value, priv->msg); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } -} - -static void meson_sample_class_init (MesonSampleClass *klass) { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - object_class->set_property = meson_sample_set_property; - object_class->get_property = meson_sample_get_property; - object_class->finalize = meson_sample_finalize; - - obj_properties[PROP_MSG] = - g_param_spec_string ("msg", - "Msg", - "The message to print.", - "propertytext", - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT); - g_object_class_install_properties (object_class, - N_PROPERTIES, - obj_properties); - g_type_class_add_private (object_class, sizeof (MesonSamplePrivate)); -} - -MesonSample* meson_sample_new () { - MesonSample *sample; - sample = g_object_new(MESON_SAMPLE_TYPE, NULL); - return sample; -} - -void meson_sample_func (MesonSample *sample) { - MesonSamplePrivate *priv; - g_return_if_fail (sample != NULL); - priv = MESON_SAMPLE_GET_PRIVATE(sample); - printf("GObject introspection is working, %s!\n", priv->msg); -} diff --git a/test cases/frameworks/7 gnome/golib.h b/test cases/frameworks/7 gnome/golib.h deleted file mode 100644 index 40bf901..0000000 --- a/test cases/frameworks/7 gnome/golib.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef GOLIB_H -#define GOLIB_H - -#include -#include - -#define MESON_SAMPLE_TYPE \ - (meson_sample_get_type()) -#define MESON_SAMPLE(o) \ - (G_TYPE_CHECK_INSTANCE_CAST ((o), MESON_SAMPLE_TYPE, MesonSample)) -#define MESON_SAMPLE_CLASS(c) \ - (G_TYPE_CHECK_CLASS_CAST ((c), MESON_SAMPLE_TYPE, MesonSampleClass)) -#define MESON_IS_SAMPLE(o) \ - (G_TYPE_CHECK_INSTANCE_TYPE ((o), MESON_SAMPLE_TYPE)) -#define MESON_IS_SAMPLE_CLASS(c) \ - (G_TYPE_CHECK_CLASS_TYPE ((c), MESON_SAMPLE_TYPE)) -#define MESON_SAMPLE_GET_CLASS(o) \ - (G_TYPE_INSTANCE_GET_CLASS ((o), MESON_SAMPLE_TYPE, MesonSampleClass)) - -typedef struct _MesonSample MesonSample; -typedef struct _MesonSamplePrivate MesonSamplePrivate; -typedef struct _MesonSampleClass MesonSampleClass; - -struct _MesonSample { - GObject parent; -}; - -struct _MesonSampleClass { - GObjectClass parent; -}; - -GType meson_sample_get_type () G_GNUC_CONST; -MesonSample* meson_sample_new (void); - -void meson_sample_func (MesonSample *sample); - -#endif diff --git a/test cases/frameworks/7 gnome/main.c b/test cases/frameworks/7 gnome/main.c deleted file mode 100644 index 471f07e..0000000 --- a/test cases/frameworks/7 gnome/main.c +++ /dev/null @@ -1,27 +0,0 @@ -#include -#include -#include -#include"myresources.h" - -#define EXPECTED "This is a resource.\n" - -int main(int argc, char **argv) { - GResource *res = myres_get_resource(); - GError *err = NULL; - GBytes *data = g_resources_lookup_data("/com/example/myprog/res1.txt", - G_RESOURCE_LOOKUP_FLAGS_NONE, &err); - - if(data == NULL) { - fprintf(stderr, "Data lookup failed: %s\n", err->message); - return 1; - } - if(strcmp(g_bytes_get_data(data, NULL), EXPECTED) != 0) { - fprintf(stderr, "Resource contents are wrong:\n %s\n", - (const char*)g_bytes_get_data(data, NULL)); - return 1; - } - fprintf(stderr, "All ok.\n"); - g_bytes_unref(data); - g_resource_unref(res); - return 0; -} diff --git a/test cases/frameworks/7 gnome/meson.build b/test cases/frameworks/7 gnome/meson.build index 957e8ab..4a45e62 100644 --- a/test cases/frameworks/7 gnome/meson.build +++ b/test cases/frameworks/7 gnome/meson.build @@ -7,33 +7,7 @@ gobj = dependency('gobject-2.0') gir = dependency('gobject-introspection-1.0') gmod = dependency('gmodule-2.0') -myres = gnome.compile_resources('myresources', 'myresource.gresource.xml', -source_dir : 'data', -c_name : 'myres') +subdir('resources') +subdir('gir') +subdir('schemas') -resexe = executable('resprog', 'main.c', myres, -dependencies : gio) -test('resource test', resexe) - -libsources = ['golib.c', 'golib.h'] - -girexe = executable('girprog', libsources, 'prog.c', -dependencies : [glib, gobj, gir, gmod]) - -gnome.generate_gir(girexe, -sources : libsources, -nsversion : '1.0', -namespace : 'Meson', -install : true, -install_dir : 'typelibdir', -) - -test('gobject introspection', girexe) - -gnome.compile_schemas() -install_data('com.github.meson.gschema.xml', -install_dir : 'share/glib-2.0/schemas') - -schemaexe = executable('schemaprog', 'schemaprog.c', -dependencies : gio) -test('schema test', schemaexe) diff --git a/test cases/frameworks/7 gnome/myresource.gresource.xml b/test cases/frameworks/7 gnome/myresource.gresource.xml deleted file mode 100644 index b44c879..0000000 --- a/test cases/frameworks/7 gnome/myresource.gresource.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - res1.txt - - diff --git a/test cases/frameworks/7 gnome/prog.c b/test cases/frameworks/7 gnome/prog.c deleted file mode 100644 index 71584d6..0000000 --- a/test cases/frameworks/7 gnome/prog.c +++ /dev/null @@ -1,24 +0,0 @@ -#include"golib.h" - -#include - -int main(int argc, char *argv[]) { - GOptionContext *ctx; - GError *error = NULL; - MesonSample *i; - - ctx = g_option_context_new(NULL); - g_option_context_add_group(ctx, g_irepository_get_option_group ()); - - if (!g_option_context_parse(ctx, &argc, &argv, &error)) { - g_print("sample: %s\n", error->message); - return 1; - } - - i = meson_sample_new(); - meson_sample_func(i); - g_object_unref(G_OBJECT(i)); - - return 0; -} - diff --git a/test cases/frameworks/7 gnome/resources/data/res1.txt b/test cases/frameworks/7 gnome/resources/data/res1.txt new file mode 100644 index 0000000..e10afea --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/data/res1.txt @@ -0,0 +1 @@ +This is a resource. diff --git a/test cases/frameworks/7 gnome/resources/main.c b/test cases/frameworks/7 gnome/resources/main.c new file mode 100644 index 0000000..471f07e --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/main.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include"myresources.h" + +#define EXPECTED "This is a resource.\n" + +int main(int argc, char **argv) { + GResource *res = myres_get_resource(); + GError *err = NULL; + GBytes *data = g_resources_lookup_data("/com/example/myprog/res1.txt", + G_RESOURCE_LOOKUP_FLAGS_NONE, &err); + + if(data == NULL) { + fprintf(stderr, "Data lookup failed: %s\n", err->message); + return 1; + } + if(strcmp(g_bytes_get_data(data, NULL), EXPECTED) != 0) { + fprintf(stderr, "Resource contents are wrong:\n %s\n", + (const char*)g_bytes_get_data(data, NULL)); + return 1; + } + fprintf(stderr, "All ok.\n"); + g_bytes_unref(data); + g_resource_unref(res); + return 0; +} diff --git a/test cases/frameworks/7 gnome/resources/meson.build b/test cases/frameworks/7 gnome/resources/meson.build new file mode 100644 index 0000000..937dc47 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/meson.build @@ -0,0 +1,7 @@ +myres = gnome.compile_resources('myresources', 'myresource.gresource.xml', +source_dir : 'data', +c_name : 'myres') + +resexe = executable('resprog', 'main.c', myres, +dependencies : gio) +test('resource test', resexe) diff --git a/test cases/frameworks/7 gnome/resources/myresource.gresource.xml b/test cases/frameworks/7 gnome/resources/myresource.gresource.xml new file mode 100644 index 0000000..b44c879 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/myresource.gresource.xml @@ -0,0 +1,6 @@ + + + + res1.txt + + diff --git a/test cases/frameworks/7 gnome/schemaprog.c b/test cases/frameworks/7 gnome/schemaprog.c deleted file mode 100644 index 51bfbd9..0000000 --- a/test cases/frameworks/7 gnome/schemaprog.c +++ /dev/null @@ -1,47 +0,0 @@ -#include -#include -#include - -int main(int argc, char **argv) { - GSettingsSchemaSource *src; - GSettingsSchema *schema; - GSettings *settings; - GVariant *value; - - GError *error = NULL; - src = g_settings_schema_source_new_from_directory(".", - g_settings_schema_source_get_default(), TRUE, &error); - if(error) { - fprintf(stderr, "Fail: %s\n", error->message); - g_error_free(error); - return 1; - } - - schema = g_settings_schema_source_lookup(src, "com.github.meson", FALSE); - if(!schema) { - fprintf(stderr, "Could not get schema from source.\n"); - return 2; - } - - settings = g_settings_new_full(schema, NULL, NULL); - if(!settings) { - fprintf(stderr, "Could not get settings object.\n"); - return 3; - } - - value = g_settings_get_value(settings, "greeting"); - if(!value) { - fprintf(stderr, "Could not get value from settings.\n"); - return 4; - } - - if(strcmp("Hello", g_variant_get_string(value, NULL)) != 0) { - fprintf(stderr, "Value of setting is incorrect.\n"); - return 5; - } - g_variant_unref(value); - g_object_unref(settings); - g_settings_schema_unref(schema); - g_settings_schema_source_unref(src); - return 0; -} diff --git a/test cases/frameworks/7 gnome/schemas/com.github.meson.gschema.xml b/test cases/frameworks/7 gnome/schemas/com.github.meson.gschema.xml new file mode 100644 index 0000000..741518d --- /dev/null +++ b/test cases/frameworks/7 gnome/schemas/com.github.meson.gschema.xml @@ -0,0 +1,12 @@ + + + + + "Hello" + A greeting + + Sample text to test schema compilation + + + + \ No newline at end of file diff --git a/test cases/frameworks/7 gnome/schemas/meson.build b/test cases/frameworks/7 gnome/schemas/meson.build new file mode 100644 index 0000000..b4765b6 --- /dev/null +++ b/test cases/frameworks/7 gnome/schemas/meson.build @@ -0,0 +1,8 @@ + +gnome.compile_schemas() +install_data('com.github.meson.gschema.xml', +install_dir : 'share/glib-2.0/schemas') + +schemaexe = executable('schemaprog', 'schemaprog.c', +dependencies : gio) +test('schema test', schemaexe) diff --git a/test cases/frameworks/7 gnome/schemas/schemaprog.c b/test cases/frameworks/7 gnome/schemas/schemaprog.c new file mode 100644 index 0000000..17dab65 --- /dev/null +++ b/test cases/frameworks/7 gnome/schemas/schemaprog.c @@ -0,0 +1,47 @@ +#include +#include +#include + +int main(int argc, char **argv) { + GSettingsSchemaSource *src; + GSettingsSchema *schema; + GSettings *settings; + GVariant *value; + + GError *error = NULL; + src = g_settings_schema_source_new_from_directory("schemas", + g_settings_schema_source_get_default(), TRUE, &error); + if(error) { + fprintf(stderr, "Fail: %s\n", error->message); + g_error_free(error); + return 1; + } + + schema = g_settings_schema_source_lookup(src, "com.github.meson", FALSE); + if(!schema) { + fprintf(stderr, "Could not get schema from source.\n"); + return 2; + } + + settings = g_settings_new_full(schema, NULL, NULL); + if(!settings) { + fprintf(stderr, "Could not get settings object.\n"); + return 3; + } + + value = g_settings_get_value(settings, "greeting"); + if(!value) { + fprintf(stderr, "Could not get value from settings.\n"); + return 4; + } + + if(strcmp("Hello", g_variant_get_string(value, NULL)) != 0) { + fprintf(stderr, "Value of setting is incorrect.\n"); + return 5; + } + g_variant_unref(value); + g_object_unref(settings); + g_settings_schema_unref(schema); + g_settings_schema_source_unref(src); + return 0; +} -- cgit v1.1