summaryrefslogtreecommitdiff
path: root/test cases/frameworks
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-10-16 17:47:39 +0300
committerGitHub <noreply@github.com>2016-10-16 17:47:39 +0300
commita417efdf2483e0a2cbb1a4f9ff51fab2cc051d91 (patch)
treee4625f10fe5c79abdf11fc20aa9422997bd53532 /test cases/frameworks
parentd7fdeb4d154a0858b5b1bbaa82e452b570198b0a (diff)
parent25f13067c2aae06748654b9a48869c0da17ea07d (diff)
downloadmeson-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')
-rw-r--r--test cases/frameworks/7 gnome/meson.build1
-rw-r--r--test cases/frameworks/7 gnome/resources-data/meson.build16
-rw-r--r--test cases/frameworks/7 gnome/resources-data/res1.txt (renamed from test cases/frameworks/7 gnome/resources/data/res1.txt)0
-rw-r--r--test cases/frameworks/7 gnome/resources-data/res3.txt.in1
-rw-r--r--test cases/frameworks/7 gnome/resources-data/subdir/meson.build8
-rw-r--r--test cases/frameworks/7 gnome/resources-data/subdir/res2.txt1
-rw-r--r--test cases/frameworks/7 gnome/resources-data/subdir/res4.txt.in1
-rw-r--r--test cases/frameworks/7 gnome/resources/generated-main.c27
-rw-r--r--test cases/frameworks/7 gnome/resources/generated.gresource.xml9
-rw-r--r--test cases/frameworks/7 gnome/resources/meson.build34
-rw-r--r--test cases/frameworks/7 gnome/resources/myresource.gresource.xml3
-rw-r--r--test cases/frameworks/7 gnome/resources/simple-main.c (renamed from test cases/frameworks/7 gnome/resources/main.c)6
-rw-r--r--test cases/frameworks/7 gnome/resources/simple.gresource.xml7
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>