diff options
| author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-10-16 17:47:39 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-10-16 17:47:39 +0300 |
| commit | a417efdf2483e0a2cbb1a4f9ff51fab2cc051d91 (patch) | |
| tree | e4625f10fe5c79abdf11fc20aa9422997bd53532 /test cases/frameworks | |
| parent | d7fdeb4d154a0858b5b1bbaa82e452b570198b0a (diff) | |
| parent | 25f13067c2aae06748654b9a48869c0da17ea07d (diff) | |
| download | meson-a417efdf2483e0a2cbb1a4f9ff51fab2cc051d91.tar.gz | |
Merge pull request #793 from ssssam/sam/gresource-dependencies
gnome: allow use of generated files with compile_resources()
Diffstat (limited to 'test cases/frameworks')
13 files changed, 105 insertions, 9 deletions
diff --git a/test cases/frameworks/7 gnome/meson.build b/test cases/frameworks/7 gnome/meson.build index 2c2e953d9..a771e71b7 100644 --- a/test cases/frameworks/7 gnome/meson.build +++ b/test cases/frameworks/7 gnome/meson.build @@ -9,6 +9,7 @@ gir = dependency('gobject-introspection-1.0') gmod = dependency('gmodule-2.0') add_global_arguments('-DMESON_TEST', language : 'c') +subdir('resources-data') subdir('resources') subdir('gir') subdir('schemas') diff --git a/test cases/frameworks/7 gnome/resources-data/meson.build b/test cases/frameworks/7 gnome/resources-data/meson.build new file mode 100644 index 000000000..6343c0ea9 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources-data/meson.build @@ -0,0 +1,16 @@ +subdir('subdir') + +fake_generator_script = ''' +import os, sys +assert os.path.exists(sys.argv[1]), "File %s not found" % sys.argv[1] +print("This is a generated resource") +''' + +# Generate file res3.txt from file res3.txt.in. This is then included +# in a GResource file, driven by resources/meson.build. +res3_txt = custom_target('res3.txt', + input: 'res3.txt.in', + output: 'res3.txt', + command: ['python3', '-c', fake_generator_script, '@INPUT@'], + capture: true, +) diff --git a/test cases/frameworks/7 gnome/resources/data/res1.txt b/test cases/frameworks/7 gnome/resources-data/res1.txt index e10afea83..e10afea83 100644 --- a/test cases/frameworks/7 gnome/resources/data/res1.txt +++ b/test cases/frameworks/7 gnome/resources-data/res1.txt diff --git a/test cases/frameworks/7 gnome/resources-data/res3.txt.in b/test cases/frameworks/7 gnome/resources-data/res3.txt.in new file mode 100644 index 000000000..077a8e301 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources-data/res3.txt.in @@ -0,0 +1 @@ +This content is ignored, but Meson doesn't need to know that. diff --git a/test cases/frameworks/7 gnome/resources-data/subdir/meson.build b/test cases/frameworks/7 gnome/resources-data/subdir/meson.build new file mode 100644 index 000000000..b41300f6d --- /dev/null +++ b/test cases/frameworks/7 gnome/resources-data/subdir/meson.build @@ -0,0 +1,8 @@ +cdata = configuration_data() +cdata.set('NOISE', 'BARK') + +res4_txt = configure_file( + input: 'res4.txt.in', + output: 'res4.txt', + configuration: cdata +) diff --git a/test cases/frameworks/7 gnome/resources-data/subdir/res2.txt b/test cases/frameworks/7 gnome/resources-data/subdir/res2.txt new file mode 100644 index 000000000..d297899bb --- /dev/null +++ b/test cases/frameworks/7 gnome/resources-data/subdir/res2.txt @@ -0,0 +1 @@ +This is a resource in a subdirectory. diff --git a/test cases/frameworks/7 gnome/resources-data/subdir/res4.txt.in b/test cases/frameworks/7 gnome/resources-data/subdir/res4.txt.in new file mode 100644 index 000000000..c0ec6f2a2 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources-data/subdir/res4.txt.in @@ -0,0 +1 @@ +@NOISE@ @NOISE@ @NOISE@ diff --git a/test cases/frameworks/7 gnome/resources/generated-main.c b/test cases/frameworks/7 gnome/resources/generated-main.c new file mode 100644 index 000000000..fc9efbdae --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/generated-main.c @@ -0,0 +1,27 @@ +#include<stdio.h> +#include<string.h> +#include<gio/gio.h> +#include"generated-resources.h" + +#define EXPECTED "This is a generated resource.\n" + +int main(int argc, char **argv) { + GResource *res = generated_resources_get_resource(); + GError *err = NULL; + GBytes *data = g_resources_lookup_data("/com/example/myprog/res3.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(stdout, "All ok.\n"); + g_bytes_unref(data); + g_resource_unref(res); + return 0; +} diff --git a/test cases/frameworks/7 gnome/resources/generated.gresource.xml b/test cases/frameworks/7 gnome/resources/generated.gresource.xml new file mode 100644 index 000000000..7a242d702 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/generated.gresource.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/com/example/myprog"> + <file>res1.txt</file> + <file>subdir/res2.txt</file> + <file>res3.txt</file> + <file>subdir/res4.txt</file> + </gresource> +</gresources> diff --git a/test cases/frameworks/7 gnome/resources/meson.build b/test cases/frameworks/7 gnome/resources/meson.build index 937dc478d..5762a8c6b 100644 --- a/test cases/frameworks/7 gnome/resources/meson.build +++ b/test cases/frameworks/7 gnome/resources/meson.build @@ -1,7 +1,29 @@ -myres = gnome.compile_resources('myresources', 'myresource.gresource.xml', -source_dir : 'data', -c_name : 'myres') +# There are two tests here, because the 2nd one depends on a version of +# GLib (2.48.2) that is very recent at the time of writing. -resexe = executable('resprog', 'main.c', myres, -dependencies : gio) -test('resource test', resexe) +simple_resources = gnome.compile_resources('simple-resources', + 'simple.gresource.xml', + source_dir : '../resources-data', + c_name : 'simple_resources') + +simple_res_exe = executable('simple-resources-test', + 'simple-main.c', simple_resources, + dependencies: gio) +test('simple resource test', simple_res_exe) + +if glib.version() >= '2.48.2' + # This test cannot pass if GLib version is older than 2.48.2. + # Meson will raise an error if the user tries to use the 'dependencies' + # argument and the version of GLib is too old for generated resource + # dependencies to work correctly. + generated_resources = gnome.compile_resources('generated-resources', + 'generated.gresource.xml', + source_dir : '../resources-data', + c_name : 'generated_resources', + dependencies : [res3_txt, res4_txt]) + + generated_res_exe = executable('generated-resources-test', + 'generated-main.c', generated_resources, + dependencies: gio) + test('generated resource test', generated_res_exe) +endif diff --git a/test cases/frameworks/7 gnome/resources/myresource.gresource.xml b/test cases/frameworks/7 gnome/resources/myresource.gresource.xml index b44c8798b..7a242d702 100644 --- a/test cases/frameworks/7 gnome/resources/myresource.gresource.xml +++ b/test cases/frameworks/7 gnome/resources/myresource.gresource.xml @@ -2,5 +2,8 @@ <gresources> <gresource prefix="/com/example/myprog"> <file>res1.txt</file> + <file>subdir/res2.txt</file> + <file>res3.txt</file> + <file>subdir/res4.txt</file> </gresource> </gresources> diff --git a/test cases/frameworks/7 gnome/resources/main.c b/test cases/frameworks/7 gnome/resources/simple-main.c index 471f07e47..3569901cb 100644 --- a/test cases/frameworks/7 gnome/resources/main.c +++ b/test cases/frameworks/7 gnome/resources/simple-main.c @@ -1,12 +1,12 @@ #include<stdio.h> #include<string.h> #include<gio/gio.h> -#include"myresources.h" +#include"simple-resources.h" #define EXPECTED "This is a resource.\n" int main(int argc, char **argv) { - GResource *res = myres_get_resource(); + GResource *res = simple_resources_get_resource(); GError *err = NULL; GBytes *data = g_resources_lookup_data("/com/example/myprog/res1.txt", G_RESOURCE_LOOKUP_FLAGS_NONE, &err); @@ -20,7 +20,7 @@ int main(int argc, char **argv) { (const char*)g_bytes_get_data(data, NULL)); return 1; } - fprintf(stderr, "All ok.\n"); + fprintf(stdout, "All ok.\n"); g_bytes_unref(data); g_resource_unref(res); return 0; diff --git a/test cases/frameworks/7 gnome/resources/simple.gresource.xml b/test cases/frameworks/7 gnome/resources/simple.gresource.xml new file mode 100644 index 000000000..6e5591051 --- /dev/null +++ b/test cases/frameworks/7 gnome/resources/simple.gresource.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gresources> + <gresource prefix="/com/example/myprog"> + <file>res1.txt</file> + <file>subdir/res2.txt</file> + </gresource> +</gresources> |
