summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--meson.build1
-rw-r--r--tests/gen-all-unicode.py34
-rw-r--r--tests/gen-installed-test.py23
-rw-r--r--tests/meson.build74
4 files changed, 131 insertions, 1 deletions
diff --git a/meson.build b/meson.build
index 2bac3b58..c0f943e4 100644
--- a/meson.build
+++ b/meson.build
@@ -15,6 +15,7 @@ pango_libdir = join_paths(pango_prefix, get_option('libdir'))
pango_sysconfdir = join_paths(pango_prefix, get_option('sysconfdir'))
pango_includedir = join_paths(pango_prefix, get_option('includedir'))
pango_datadir = join_paths(pango_prefix, get_option('datadir'))
+pango_libexecdir = join_paths(pango_prefix, get_option('libexecdir'))
version = meson.project_version().split('.')
pango_major_version = version[0].to_int()
diff --git a/tests/gen-all-unicode.py b/tests/gen-all-unicode.py
new file mode 100644
index 00000000..011ab9d2
--- /dev/null
+++ b/tests/gen-all-unicode.py
@@ -0,0 +1,34 @@
+import sys
+
+# From glib/gutf8.c:
+#
+#define UNICODE_VALID(Char) \
+# ((Char) < 0x110000 && (((Char) & 0xFFFFF800) != 0xD800))
+
+def is_valid_unicode(ch):
+ if ch < 0x110000 and (ch & 0xFFFFF800) != 0xD800:
+ return True
+
+ return False
+
+if __name__ == '__main__':
+ if len(sys.argv) < 2:
+ sys.exit('Usage: gen-all-unicode.py OUTFILE')
+
+ with open(sys.argv[1], 'wb') as f:
+ for j in range(0, 2):
+ for i in range(0, 65536):
+ if is_valid_unicode(i):
+ f.write(chr(i).encode('utf-8', 'surrogatepass'))
+
+ if j == 1:
+ f.write(b' ')
+
+ if j == 0:
+ if i % 40 == 0 and i != 0:
+ f.write(b'\n')
+ else:
+ if i % 20 == 0 and i != 0:
+ f.write(b'\n')
+
+ f.write(b'\n')
diff --git a/tests/gen-installed-test.py b/tests/gen-installed-test.py
new file mode 100644
index 00000000..794ea107
--- /dev/null
+++ b/tests/gen-installed-test.py
@@ -0,0 +1,23 @@
+import sys
+import argparse
+import os
+
+template = '''[Test]
+Type=session
+Exec={}
+'''
+
+def build_template(test_dir, test_name):
+ return template.format(os.path.join(test_dir, test_name))
+
+if __name__ == '__main__':
+ argparser = argparse.ArgumentParser(description='Generate installed-test description file')
+ argparser.add_argument('installed_test_dir', help='Path for installed test binaries')
+ argparser.add_argument('test_name', help='Name of the test unit')
+ argparser.add_argument('out_dir', help='Path for the output')
+
+ args = argparser.parse_args()
+
+ outfile = os.path.join(args.out_dir, args.test_name + '.test')
+ with open(outfile, 'w') as f:
+ f.write(build_template(args.installed_test_dir, args.test_name))
diff --git a/tests/meson.build b/tests/meson.build
index d69a0d0d..a4df3bc0 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -43,15 +43,87 @@ if cairo_dep.found()
]
endif
+installed_test_data = [
+ 'boundaries.utf8',
+ 'GraphemeBreakTest.txt',
+]
+
+test_layouts_data = [
+ 'layouts/valid-1',
+ 'layouts/valid-2',
+]
+
+test_markups_data = [
+ 'markups/fail-1',
+ 'markups/fail-2',
+ 'markups/fail-3',
+ 'markups/fail-4',
+ 'markups/fail-5',
+ 'markups/valid-1',
+ 'markups/valid-2',
+ 'markups/valid-3',
+ 'markups/valid-4',
+ 'markups/valid-5',
+ 'markups/valid-6',
+ 'markups/valid-7',
+ 'markups/valid-8',
+ 'markups/valid-9',
+]
+
+installed_test_layouts_data = []
+foreach d: test_layouts_data
+ installed_test_layouts_data += d + '.markup'
+ installed_test_layouts_data += d + '.expected'
+endforeach
+
+installed_test_markups_data = []
+foreach d: test_markups_data
+ installed_test_markups_data += d + '.markup'
+ installed_test_markups_data += d + '.expected'
+endforeach
+
+installed_test_datadir = join_paths(pango_datadir, 'installed-tests', 'pango')
+installed_test_bindir = join_paths(pango_libexecdir, 'installed-tests', 'pango')
+
+install_data(installed_test_data, install_dir: installed_test_bindir)
+install_data(installed_test_layouts_data, install_dir: join_paths(installed_test_bindir, 'layouts'))
+install_data(installed_test_markups_data, install_dir: join_paths(installed_test_bindir, 'markups'))
+
+python = import('python3').find_python()
+gen_installed_test = files([ 'gen-installed-test.py' ])
+gen_all_unicode = files([ 'gen-all-unicode.py' ])
+
+custom_target('all-unicode',
+ output: 'all-unicode.txt',
+ command: [
+ python, gen_all_unicode, '@OUTPUT@'
+ ],
+ install: true,
+ install_dir: installed_test_bindir)
+
foreach t: tests
name = t[0]
src = t.get(1, [ '@0@.c'.format(name) ])
deps = t.get(2, [ libpango_dep ])
+ custom_target(name + '.test',
+ output: name + '.test',
+ command: [
+ python, gen_installed_test,
+ installed_test_bindir,
+ name,
+ '@OUTDIR@',
+ ],
+ install: true,
+ install_dir: installed_test_datadir)
+
bin = executable(name, src,
dependencies: deps,
include_directories: root_inc,
c_args: common_cflags + pango_debug_cflags + test_cflags,
- cpp_args: common_cppflags + pango_debug_cflags + test_cflags)
+ cpp_args: common_cppflags + pango_debug_cflags + test_cflags,
+ install: true,
+ install_dir: installed_test_bindir)
+
test(name, bin, env: test_env)
endforeach