[PATCH v7 012/104] tests/tcg/meson.build: introduce plugin_test
Pierrick Bouvier <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <[email protected]> |
We add possibility to declare a test that is based on a plugin. Reviewed-by: Manos Pitsidianakis <[email protected]> Tested-by: Alex Bennée <[email protected]> Tested-by: Aniket Sahu <[email protected]> Signed-off-by: Pierrick Bouvier <[email protected]> --- tests/tcg/meson.build | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/tests/tcg/meson.build b/tests/tcg/meson.build index 9940bae80a4..7b51750b016 100644 --- a/tests/tcg/meson.build +++ b/tests/tcg/meson.build @@ -16,6 +16,10 @@ tcg_tests = {} # 'cflags': ['additional cflags to compile test', ...], # 'qemu_args': ['qemu command line flags', ...], # 'env_var': ['VAR=value', ...], +# 'plugin_test': { +# 'plugin': 'plugin_name', +# 'args': ['plugin_args', ...], +# }, # } # }, # ... @@ -59,13 +63,29 @@ foreach target, plan: tcg_tests foreach src, setup: t # return a clear error if user misspell a setup entry foreach key, _ : setup - allowed = ['exe_name', 'env_var', 'cflags', 'qemu_args', 'test_name'] + allowed = ['exe_name', 'env_var', 'cflags', 'plugin_test', + 'qemu_args', 'test_name'] if key not in allowed error('unknown tcg setup entry \'' + key + '\' for test ' + src + ' (possible: [' + ', '.join(allowed) + '])') endif endforeach + # return a clear error if user misspell a plugin entry + if 'plugin_test' in setup + foreach key, _ : setup['plugin_test'] + allowed = ['args', 'plugin'] + if key not in allowed + error('unknown tcg plugin entry \'' + key + '\' for test ' + src + + ' (possible: [' + ', '.join(allowed) + '])') + endif + endforeach + endif + + if 'plugin_test' in setup and not get_option('plugins') + continue + endif + # meson '/' operator drops left operand if right is an absolute path src = folder / src file = files(src) @@ -78,6 +98,12 @@ foreach target, plan: tcg_tests if 'test_name' in setup test_name = setup['test_name'] endif + if 'plugin_test' in setup + plugin = test_plugins[setup['plugin_test']['plugin']] + # remove 'lib' prefix + plugin_name = fs.stem(plugin).substring(3) + test_name = 'plugin-' + plugin_name + '-with-' + test_name + endif exe_name = target + '-' + exe_name test_name = target + '-' + test_name @@ -118,6 +144,21 @@ foreach target, plan: tcg_tests qemu_args = setup['qemu_args'] endif + if 'plugin_test' in setup + plugin_setup = setup['plugin_test'] + plugin = test_plugins[plugin_setup['plugin']] + plugin_args = [] + if 'args' in plugin_setup + # add empty arg to generate an additional comma + plugin_args = ['', plugin_setup['args']] + endif + plugin_args = ','.join(plugin_args) + + # since we turn plugin into a string, add dependency explicitly + depends += plugin + qemu_args = ['-plugin', plugin.full_path() + plugin_args, qemu_args] + endif + exe = built_tests[exe_name] cmd = [qemu, qemu_args, exe] -- 2.43.0