256 lines
14 KiB
Diff
256 lines
14 KiB
Diff
From 1453e8c73b8cb9414143df6a7dd164709d3c454c Mon Sep 17 00:00:00 2001
|
|
From: Carlos Rafael Giani <crg7475@mailbox.org>
|
|
Date: Fri, 25 Oct 2019 00:06:26 +0200
|
|
Subject: [PATCH] meson: Add option for installed tests
|
|
|
|
This adds an option for producing installed versions of the unit tests.
|
|
These versions don't need meson to run (only a small shell script). This
|
|
makes it easier to run cross compiled tests on a target machine.
|
|
|
|
Upstream-Status: Pending
|
|
|
|
Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org>
|
|
|
|
---
|
|
build-aux/gen-installed-test-desc.py | 18 ++++++
|
|
build-aux/gen-installed-test-shscript.py | 25 ++++++++
|
|
meson_options.txt | 2 +
|
|
tests/check/meson.build | 46 +++++++++++++-
|
|
tests/files/testfile | 80 ++++++++++++++++++++++++
|
|
5 files changed, 170 insertions(+), 1 deletion(-)
|
|
create mode 100644 build-aux/gen-installed-test-desc.py
|
|
create mode 100644 build-aux/gen-installed-test-shscript.py
|
|
create mode 100644 tests/files/testfile
|
|
|
|
diff --git a/build-aux/gen-installed-test-desc.py b/build-aux/gen-installed-test-desc.py
|
|
new file mode 100644
|
|
index 000000000..69e8a0faf
|
|
--- /dev/null
|
|
+++ b/build-aux/gen-installed-test-desc.py
|
|
@@ -0,0 +1,18 @@
|
|
+import sys
|
|
+import os
|
|
+import argparse
|
|
+
|
|
+def write_template(filename, data):
|
|
+ with open(filename, 'w') as f:
|
|
+ f.write(data)
|
|
+
|
|
+def build_template(testdir, testname):
|
|
+ return "[Test]\nType=session\nExec={}\n".format(os.path.join(testdir, testname))
|
|
+
|
|
+argparser = argparse.ArgumentParser(description='Generate installed-test data.')
|
|
+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory')
|
|
+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name')
|
|
+argparser.add_argument('--output', metavar='file', required=True, help='Output file')
|
|
+args = argparser.parse_args()
|
|
+
|
|
+write_template(args.output, build_template(args.test_execdir, args.testname))
|
|
diff --git a/build-aux/gen-installed-test-shscript.py b/build-aux/gen-installed-test-shscript.py
|
|
new file mode 100644
|
|
index 000000000..5da86fb37
|
|
--- /dev/null
|
|
+++ b/build-aux/gen-installed-test-shscript.py
|
|
@@ -0,0 +1,25 @@
|
|
+import sys
|
|
+import os
|
|
+import argparse
|
|
+
|
|
+def write_template(filename, data):
|
|
+ with open(filename, 'w') as f:
|
|
+ f.write(data)
|
|
+
|
|
+def build_template(testdir, testname):
|
|
+ return ''.join([
|
|
+ "#!/usr/bin/env sh\n",
|
|
+ "export GST_STATE_IGNORE_ELEMENTS=''\n",
|
|
+ "export CK_DEFAULT_TIMEOUT=20\n",
|
|
+ "export GST_PLUGIN_LOADING_WHITELIST='gstreamer'\n",
|
|
+ "{}\n".format(os.path.join(testdir, testname)),
|
|
+ ])
|
|
+
|
|
+argparser = argparse.ArgumentParser(description='Generate installed-test data.')
|
|
+argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory')
|
|
+argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name')
|
|
+argparser.add_argument('--output', metavar='file', required=True, help='Output file')
|
|
+args = argparser.parse_args()
|
|
+
|
|
+write_template(args.output, build_template(args.test_execdir, args.testname))
|
|
+os.chmod(args.output, 0o755)
|
|
diff --git a/meson_options.txt b/meson_options.txt
|
|
index 72c3997e2..346c423d4 100644
|
|
--- a/meson_options.txt
|
|
+++ b/meson_options.txt
|
|
@@ -15,6 +15,8 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso
|
|
option('memory-alignment', type: 'combo',
|
|
choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'],
|
|
value: 'malloc')
|
|
+option('installed-tests', type : 'boolean', value : false, description : 'enable installed tests')
|
|
+option('test-files-path', type : 'string', description : 'Path where to find test files')
|
|
|
|
# Feature options
|
|
option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries')
|
|
diff --git a/tests/check/meson.build b/tests/check/meson.build
|
|
index a617cf159..e629131c5 100644
|
|
--- a/tests/check/meson.build
|
|
+++ b/tests/check/meson.build
|
|
@@ -120,11 +120,17 @@ if add_languages('cpp', native: false, required: false)
|
|
]
|
|
endif
|
|
|
|
+test_files_path = get_option('test-files-path')
|
|
+if test_files_path == ''
|
|
+ test_files_path = meson.current_source_dir() + '/../files'
|
|
+endif
|
|
+message('Using path "@0@" as the path to read test files from'.format(test_files_path))
|
|
+
|
|
test_defines = [
|
|
'-UG_DISABLE_ASSERT',
|
|
'-UG_DISABLE_CAST_CHECKS',
|
|
'-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"',
|
|
- '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"',
|
|
+ '-DTESTFILE="@0@"'.format(test_files_path + '/testfile'),
|
|
'-DGST_DISABLE_DEPRECATED',
|
|
]
|
|
|
|
@@ -138,6 +144,14 @@ endif
|
|
glib_deps = [gio_dep, gobject_dep, gmodule_dep, glib_dep]
|
|
gst_deps = [gst_dep, gst_base_dep, gst_check_dep, gst_net_dep, gst_controller_dep]
|
|
|
|
+installed_tests_datadir = join_paths(prefix, get_option('datadir'), 'installed-tests', 'gstreamer-1.0')
|
|
+installed_tests_execdir = join_paths(prefix, libexecdir, 'installed-tests', 'gstreamer-1.0')
|
|
+installed_tests_enabled = get_option('installed-tests')
|
|
+
|
|
+python = import('python').find_installation()
|
|
+gen_installed_test_desc = files('../../build-aux/gen-installed-test-desc.py')
|
|
+gen_installed_test_shscript = files('../../build-aux/gen-installed-test-shscript.py')
|
|
+
|
|
foreach t : core_tests
|
|
fname = t[0]
|
|
test_name = fname.split('.')[0].underscorify()
|
|
@@ -151,8 +165,38 @@ foreach t : core_tests
|
|
include_directories : [configinc],
|
|
link_with : link_with_libs,
|
|
dependencies : test_deps + glib_deps + gst_deps,
|
|
+ install_dir: installed_tests_execdir,
|
|
+ install: installed_tests_enabled
|
|
)
|
|
|
|
+ if installed_tests_enabled
|
|
+ installed_test_shscript = test_name + '.sh'
|
|
+ shscript = custom_target (test_name + '_shscript',
|
|
+ output: installed_test_shscript,
|
|
+ command: [
|
|
+ python,
|
|
+ gen_installed_test_shscript,
|
|
+ '--test-execdir=@0@'.format(installed_tests_execdir),
|
|
+ '--testname=@0@'.format(test_name),
|
|
+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_shscript)),
|
|
+ ],
|
|
+ install: true,
|
|
+ install_dir: installed_tests_execdir)
|
|
+
|
|
+ installed_test_desc = test_name + '.test'
|
|
+ data = custom_target(test_name + '_desc',
|
|
+ output: installed_test_desc,
|
|
+ command: [
|
|
+ python,
|
|
+ gen_installed_test_desc,
|
|
+ '--test-execdir=@0@'.format(installed_tests_execdir),
|
|
+ '--testname=@0@'.format(installed_test_shscript),
|
|
+ '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_desc)),
|
|
+ ],
|
|
+ install: true,
|
|
+ install_dir: installed_tests_datadir)
|
|
+ endif
|
|
+
|
|
env = environment()
|
|
env.set('GST_PLUGIN_PATH_1_0', meson.build_root())
|
|
env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '')
|
|
diff --git a/tests/files/testfile b/tests/files/testfile
|
|
new file mode 100644
|
|
index 000000000..89954e0e2
|
|
--- /dev/null
|
|
+++ b/tests/files/testfile
|
|
@@ -0,0 +1,80 @@
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|
|
+................................................................................
|