aboutsummaryrefslogtreecommitdiffstats
path: root/meson/test cases/frameworks/7 gnome/resources
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/frameworks/7 gnome/resources
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/frameworks/7 gnome/resources')
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/copyfile.py6
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/generated-main.c27
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/generated.gresource.xml9
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/meson.build55
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/myresource.gresource.xml9
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/res3.txt1
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/resources.py10
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/simple-main.c27
-rw-r--r--meson/test cases/frameworks/7 gnome/resources/simple.gresource.xml7
9 files changed, 151 insertions, 0 deletions
diff --git a/meson/test cases/frameworks/7 gnome/resources/copyfile.py b/meson/test cases/frameworks/7 gnome/resources/copyfile.py
new file mode 100644
index 000000000..7e44c48dd
--- /dev/null
+++ b/meson/test cases/frameworks/7 gnome/resources/copyfile.py
@@ -0,0 +1,6 @@
+#!/usr/bin/env python3
+
+import sys
+import shutil
+
+shutil.copy(sys.argv[1], sys.argv[2])
diff --git a/meson/test cases/frameworks/7 gnome/resources/generated-main.c b/meson/test cases/frameworks/7 gnome/resources/generated-main.c
new file mode 100644
index 000000000..fc9efbdae
--- /dev/null
+++ b/meson/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/meson/test cases/frameworks/7 gnome/resources/generated.gresource.xml b/meson/test cases/frameworks/7 gnome/resources/generated.gresource.xml
new file mode 100644
index 000000000..7a242d702
--- /dev/null
+++ b/meson/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/meson/test cases/frameworks/7 gnome/resources/meson.build b/meson/test cases/frameworks/7 gnome/resources/meson.build
new file mode 100644
index 000000000..b945cdaf6
--- /dev/null
+++ b/meson/test cases/frameworks/7 gnome/resources/meson.build
@@ -0,0 +1,55 @@
+# There are two tests here, because the 2nd one depends on a version of
+# GLib (2.51.1) that is very recent at the time of writing.
+
+copyfile = find_program('copyfile.py')
+
+simple_gresource = configure_file(
+ input : 'simple.gresource.xml',
+ output : 'simple-gen.gresource.xml',
+ command : [copyfile, '@INPUT@', '@OUTPUT@'])
+
+simple_resources = gnome.compile_resources('simple-resources',
+ simple_gresource,
+ install_header : true,
+ export : true,
+ 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)
+
+gnome.compile_resources('simple-resources',
+ 'simple.gresource.xml',
+ gresource_bundle: true,
+ install: true,
+ install_dir: get_option('datadir'),
+ source_dir : '../resources-data',
+)
+test('simple resource test (gresource)', find_program('resources.py'))
+
+if not pretend_glib_old and glib.version() >= '2.52.0'
+ # This test cannot pass if GLib version is older than 9.99.9.
+ # 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
+
+# Test build_by_default
+gnome.compile_resources('build-resources',
+ 'simple.gresource.xml',
+ gresource_bundle : true,
+ build_by_default : true,
+ source_dir : '../resources-data',
+)
diff --git a/meson/test cases/frameworks/7 gnome/resources/myresource.gresource.xml b/meson/test cases/frameworks/7 gnome/resources/myresource.gresource.xml
new file mode 100644
index 000000000..7a242d702
--- /dev/null
+++ b/meson/test cases/frameworks/7 gnome/resources/myresource.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/meson/test cases/frameworks/7 gnome/resources/res3.txt b/meson/test cases/frameworks/7 gnome/resources/res3.txt
new file mode 100644
index 000000000..aeed4a552
--- /dev/null
+++ b/meson/test cases/frameworks/7 gnome/resources/res3.txt
@@ -0,0 +1 @@
+This file is from the wrong directory.
diff --git a/meson/test cases/frameworks/7 gnome/resources/resources.py b/meson/test cases/frameworks/7 gnome/resources/resources.py
new file mode 100644
index 000000000..b351b04e6
--- /dev/null
+++ b/meson/test cases/frameworks/7 gnome/resources/resources.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python3
+import os
+from gi.repository import Gio
+
+if __name__ == '__main__':
+ res = Gio.resource_load(os.path.join('resources', 'simple-resources.gresource'))
+ Gio.Resource._register(res)
+
+ data = Gio.resources_lookup_data('/com/example/myprog/res1.txt', Gio.ResourceLookupFlags.NONE)
+ assert(data.get_data() == b'This is a resource.\n')
diff --git a/meson/test cases/frameworks/7 gnome/resources/simple-main.c b/meson/test cases/frameworks/7 gnome/resources/simple-main.c
new file mode 100644
index 000000000..3569901cb
--- /dev/null
+++ b/meson/test cases/frameworks/7 gnome/resources/simple-main.c
@@ -0,0 +1,27 @@
+#include<stdio.h>
+#include<string.h>
+#include<gio/gio.h>
+#include"simple-resources.h"
+
+#define EXPECTED "This is a resource.\n"
+
+int main(int argc, char **argv) {
+ 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);
+
+ 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/meson/test cases/frameworks/7 gnome/resources/simple.gresource.xml b/meson/test cases/frameworks/7 gnome/resources/simple.gresource.xml
new file mode 100644
index 000000000..6e5591051
--- /dev/null
+++ b/meson/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>