Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 1 | From cf8077a7e3ab0ae236ebde79b7fc0b02eac658de Mon Sep 17 00:00:00 2001 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 2 | From: Carlos Rafael Giani <crg7475@mailbox.org> |
| 3 | Date: Fri, 25 Oct 2019 00:06:26 +0200 |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 4 | Subject: [PATCH 3/3] meson: Add option for installed tests |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 5 | |
| 6 | This adds an option for producing installed versions of the unit tests. |
| 7 | These versions don't need meson to run (only a small shell script). This |
| 8 | makes it easier to run cross compiled tests on a target machine. |
| 9 | |
| 10 | Upstream-Status: Pending |
| 11 | |
| 12 | Signed-off-by: Carlos Rafael Giani <crg7475@mailbox.org> |
| 13 | --- |
| 14 | build-aux/gen-installed-test-desc.py | 18 ++++++ |
| 15 | build-aux/gen-installed-test-shscript.py | 25 ++++++++ |
| 16 | meson_options.txt | 2 + |
| 17 | tests/check/meson.build | 46 +++++++++++++- |
| 18 | tests/files/testfile | 80 ++++++++++++++++++++++++ |
| 19 | 5 files changed, 170 insertions(+), 1 deletion(-) |
| 20 | create mode 100644 build-aux/gen-installed-test-desc.py |
| 21 | create mode 100644 build-aux/gen-installed-test-shscript.py |
| 22 | create mode 100644 tests/files/testfile |
| 23 | |
| 24 | diff --git a/build-aux/gen-installed-test-desc.py b/build-aux/gen-installed-test-desc.py |
| 25 | new file mode 100644 |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 26 | index 000000000..69e8a0faf |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 27 | --- /dev/null |
| 28 | +++ b/build-aux/gen-installed-test-desc.py |
| 29 | @@ -0,0 +1,18 @@ |
| 30 | +import sys |
| 31 | +import os |
| 32 | +import argparse |
| 33 | + |
| 34 | +def write_template(filename, data): |
| 35 | + with open(filename, 'w') as f: |
| 36 | + f.write(data) |
| 37 | + |
| 38 | +def build_template(testdir, testname): |
| 39 | + return "[Test]\nType=session\nExec={}\n".format(os.path.join(testdir, testname)) |
| 40 | + |
| 41 | +argparser = argparse.ArgumentParser(description='Generate installed-test data.') |
| 42 | +argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory') |
| 43 | +argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name') |
| 44 | +argparser.add_argument('--output', metavar='file', required=True, help='Output file') |
| 45 | +args = argparser.parse_args() |
| 46 | + |
| 47 | +write_template(args.output, build_template(args.test_execdir, args.testname)) |
| 48 | diff --git a/build-aux/gen-installed-test-shscript.py b/build-aux/gen-installed-test-shscript.py |
| 49 | new file mode 100644 |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 50 | index 000000000..5da86fb37 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 51 | --- /dev/null |
| 52 | +++ b/build-aux/gen-installed-test-shscript.py |
| 53 | @@ -0,0 +1,25 @@ |
| 54 | +import sys |
| 55 | +import os |
| 56 | +import argparse |
| 57 | + |
| 58 | +def write_template(filename, data): |
| 59 | + with open(filename, 'w') as f: |
| 60 | + f.write(data) |
| 61 | + |
| 62 | +def build_template(testdir, testname): |
| 63 | + return ''.join([ |
| 64 | + "#!/usr/bin/env sh\n", |
| 65 | + "export GST_STATE_IGNORE_ELEMENTS=''\n", |
| 66 | + "export CK_DEFAULT_TIMEOUT=20\n", |
| 67 | + "export GST_PLUGIN_LOADING_WHITELIST='gstreamer'\n", |
| 68 | + "{}\n".format(os.path.join(testdir, testname)), |
| 69 | + ]) |
| 70 | + |
| 71 | +argparser = argparse.ArgumentParser(description='Generate installed-test data.') |
| 72 | +argparser.add_argument('--test-execdir', metavar='dir', required=True, help='Installed test directory') |
| 73 | +argparser.add_argument('--testname', metavar='name', required=True, help='Installed test name') |
| 74 | +argparser.add_argument('--output', metavar='file', required=True, help='Output file') |
| 75 | +args = argparser.parse_args() |
| 76 | + |
| 77 | +write_template(args.output, build_template(args.test_execdir, args.testname)) |
| 78 | +os.chmod(args.output, 0o755) |
| 79 | diff --git a/meson_options.txt b/meson_options.txt |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 80 | index 72c3997e2..346c423d4 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 81 | --- a/meson_options.txt |
| 82 | +++ b/meson_options.txt |
Andrew Geissler | 6ce62a2 | 2020-11-30 19:58:47 -0600 | [diff] [blame] | 83 | @@ -15,6 +15,8 @@ option('poisoning', type : 'boolean', value : false, description : 'Enable poiso |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 84 | option('memory-alignment', type: 'combo', |
| 85 | choices : ['1', '2', '4', '8', '16', '32', '64', '128', '256', '512', '1024', '2048', '4096', '8192', 'malloc', 'pagesize'], |
| 86 | value: 'malloc') |
| 87 | +option('installed-tests', type : 'boolean', value : false, description : 'enable installed tests') |
| 88 | +option('test-files-path', type : 'string', description : 'Path where to find test files') |
| 89 | |
| 90 | # Feature options |
| 91 | option('check', type : 'feature', value : 'auto', description : 'Build unit test libraries') |
| 92 | diff --git a/tests/check/meson.build b/tests/check/meson.build |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 93 | index a617cf159..e629131c5 100644 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 94 | --- a/tests/check/meson.build |
| 95 | +++ b/tests/check/meson.build |
Andrew Geissler | 6ce62a2 | 2020-11-30 19:58:47 -0600 | [diff] [blame] | 96 | @@ -120,11 +120,17 @@ if add_languages('cpp', native: false, required: false) |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 97 | ] |
| 98 | endif |
| 99 | |
| 100 | +test_files_path = get_option('test-files-path') |
| 101 | +if test_files_path == '' |
| 102 | + test_files_path = meson.current_source_dir() + '/../files' |
| 103 | +endif |
| 104 | +message('Using path "@0@" as the path to read test files from'.format(test_files_path)) |
| 105 | + |
| 106 | test_defines = [ |
| 107 | '-UG_DISABLE_ASSERT', |
| 108 | '-UG_DISABLE_CAST_CHECKS', |
| 109 | '-DGST_CHECK_TEST_ENVIRONMENT_BEACON="GST_STATE_IGNORE_ELEMENTS"', |
| 110 | - '-DTESTFILE="' + meson.current_source_dir() + '/meson.build"', |
| 111 | + '-DTESTFILE="@0@"'.format(test_files_path + '/testfile'), |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 112 | '-DGST_DISABLE_DEPRECATED', |
| 113 | ] |
Andrew Geissler | 6ce62a2 | 2020-11-30 19:58:47 -0600 | [diff] [blame] | 114 | |
| 115 | @@ -138,6 +144,14 @@ endif |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 116 | glib_deps = [gio_dep, gobject_dep, gmodule_dep, glib_dep] |
| 117 | gst_deps = [gst_dep, gst_base_dep, gst_check_dep, gst_net_dep, gst_controller_dep] |
| 118 | |
| 119 | +installed_tests_datadir = join_paths(prefix, get_option('datadir'), 'installed-tests', 'gstreamer-1.0') |
| 120 | +installed_tests_execdir = join_paths(prefix, libexecdir, 'installed-tests', 'gstreamer-1.0') |
| 121 | +installed_tests_enabled = get_option('installed-tests') |
| 122 | + |
| 123 | +python = import('python').find_installation() |
| 124 | +gen_installed_test_desc = files('../../build-aux/gen-installed-test-desc.py') |
| 125 | +gen_installed_test_shscript = files('../../build-aux/gen-installed-test-shscript.py') |
| 126 | + |
| 127 | foreach t : core_tests |
| 128 | fname = t[0] |
| 129 | test_name = fname.split('.')[0].underscorify() |
Andrew Geissler | 6ce62a2 | 2020-11-30 19:58:47 -0600 | [diff] [blame] | 130 | @@ -151,8 +165,38 @@ foreach t : core_tests |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 131 | include_directories : [configinc], |
| 132 | link_with : link_with_libs, |
| 133 | dependencies : test_deps + glib_deps + gst_deps, |
| 134 | + install_dir: installed_tests_execdir, |
| 135 | + install: installed_tests_enabled |
| 136 | ) |
| 137 | |
| 138 | + if installed_tests_enabled |
| 139 | + installed_test_shscript = test_name + '.sh' |
| 140 | + shscript = custom_target (test_name + '_shscript', |
| 141 | + output: installed_test_shscript, |
| 142 | + command: [ |
| 143 | + python, |
| 144 | + gen_installed_test_shscript, |
| 145 | + '--test-execdir=@0@'.format(installed_tests_execdir), |
| 146 | + '--testname=@0@'.format(test_name), |
| 147 | + '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_shscript)), |
| 148 | + ], |
| 149 | + install: true, |
| 150 | + install_dir: installed_tests_execdir) |
| 151 | + |
| 152 | + installed_test_desc = test_name + '.test' |
| 153 | + data = custom_target(test_name + '_desc', |
| 154 | + output: installed_test_desc, |
| 155 | + command: [ |
| 156 | + python, |
| 157 | + gen_installed_test_desc, |
| 158 | + '--test-execdir=@0@'.format(installed_tests_execdir), |
| 159 | + '--testname=@0@'.format(installed_test_shscript), |
| 160 | + '--output=@0@'.format(join_paths('@OUTDIR@', installed_test_desc)), |
| 161 | + ], |
| 162 | + install: true, |
| 163 | + install_dir: installed_tests_datadir) |
| 164 | + endif |
| 165 | + |
| 166 | env = environment() |
| 167 | env.set('GST_PLUGIN_PATH_1_0', meson.build_root()) |
| 168 | env.set('GST_PLUGIN_SYSTEM_PATH_1_0', '') |
| 169 | diff --git a/tests/files/testfile b/tests/files/testfile |
| 170 | new file mode 100644 |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 171 | index 000000000..89954e0e2 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 172 | --- /dev/null |
| 173 | +++ b/tests/files/testfile |
| 174 | @@ -0,0 +1,80 @@ |
| 175 | +................................................................................ |
| 176 | +................................................................................ |
| 177 | +................................................................................ |
| 178 | +................................................................................ |
| 179 | +................................................................................ |
| 180 | +................................................................................ |
| 181 | +................................................................................ |
| 182 | +................................................................................ |
| 183 | +................................................................................ |
| 184 | +................................................................................ |
| 185 | +................................................................................ |
| 186 | +................................................................................ |
| 187 | +................................................................................ |
| 188 | +................................................................................ |
| 189 | +................................................................................ |
| 190 | +................................................................................ |
| 191 | +................................................................................ |
| 192 | +................................................................................ |
| 193 | +................................................................................ |
| 194 | +................................................................................ |
| 195 | +................................................................................ |
| 196 | +................................................................................ |
| 197 | +................................................................................ |
| 198 | +................................................................................ |
| 199 | +................................................................................ |
| 200 | +................................................................................ |
| 201 | +................................................................................ |
| 202 | +................................................................................ |
| 203 | +................................................................................ |
| 204 | +................................................................................ |
| 205 | +................................................................................ |
| 206 | +................................................................................ |
| 207 | +................................................................................ |
| 208 | +................................................................................ |
| 209 | +................................................................................ |
| 210 | +................................................................................ |
| 211 | +................................................................................ |
| 212 | +................................................................................ |
| 213 | +................................................................................ |
| 214 | +................................................................................ |
| 215 | +................................................................................ |
| 216 | +................................................................................ |
| 217 | +................................................................................ |
| 218 | +................................................................................ |
| 219 | +................................................................................ |
| 220 | +................................................................................ |
| 221 | +................................................................................ |
| 222 | +................................................................................ |
| 223 | +................................................................................ |
| 224 | +................................................................................ |
| 225 | +................................................................................ |
| 226 | +................................................................................ |
| 227 | +................................................................................ |
| 228 | +................................................................................ |
| 229 | +................................................................................ |
| 230 | +................................................................................ |
| 231 | +................................................................................ |
| 232 | +................................................................................ |
| 233 | +................................................................................ |
| 234 | +................................................................................ |
| 235 | +................................................................................ |
| 236 | +................................................................................ |
| 237 | +................................................................................ |
| 238 | +................................................................................ |
| 239 | +................................................................................ |
| 240 | +................................................................................ |
| 241 | +................................................................................ |
| 242 | +................................................................................ |
| 243 | +................................................................................ |
| 244 | +................................................................................ |
| 245 | +................................................................................ |
| 246 | +................................................................................ |
| 247 | +................................................................................ |
| 248 | +................................................................................ |
| 249 | +................................................................................ |
| 250 | +................................................................................ |
| 251 | +................................................................................ |
| 252 | +................................................................................ |
| 253 | +................................................................................ |
| 254 | +................................................................................ |
| 255 | -- |
Andrew Geissler | d1e8949 | 2021-02-12 15:35:20 -0600 | [diff] [blame] | 256 | 2.29.2 |
Andrew Geissler | 82c905d | 2020-04-13 13:39:40 -0500 | [diff] [blame] | 257 | |