diff --git a/gio/tests/meson.build b/gio/tests/meson.build index e4b4959cb..a1b41872d 100644 --- a/gio/tests/meson.build +++ b/gio/tests/meson.build @@ -140,11 +140,16 @@ if host_machine.system() != 'windows' 'slow-connect-preload.c', name_prefix : '', dependencies: cc.find_library('dl'), + install_dir : installed_tests_execdir, + install: installed_tests_enabled, ) ], 'env' : { 'LD_PRELOAD': '@0@/slow-connect-preload.so'.format(meson.current_build_dir()) }, + 'installed_tests_env' : { + 'LD_PRELOAD': '@0@/slow-connect-preload.so'.format(installed_tests_execdir), + }, 'suite': ['flaky'], }, 'gschema-compile' : {'install' : false}, @@ -593,11 +598,21 @@ foreach test_name, extra_args : gio_tests source = extra_args.get('source', test_name + '.c') extra_sources = extra_args.get('extra_sources', []) install = installed_tests_enabled and extra_args.get('install', true) + installed_tests_env = extra_args.get('installed_tests_env', {}) if install test_conf = configuration_data() test_conf.set('installed_tests_dir', installed_tests_execdir) test_conf.set('program', test_name) + test_env_override = '' + if installed_tests_env != {} + envs = [] + foreach var, value : installed_tests_env + envs += '@0@=@1@'.format(var, value) + endforeach + test_env_override = '@0@ @1@ '.format(env_program.path(), ' '.join(envs)) + endif + test_conf.set('env', test_env_override) configure_file( input: installed_tests_template_tap, output: test_name + '.test', diff --git a/glib/tests/meson.build b/glib/tests/meson.build index 814ddbe01..d54fc41fa 100644 --- a/glib/tests/meson.build +++ b/glib/tests/meson.build @@ -183,6 +183,7 @@ foreach test_name, extra_args : glib_tests test_conf = configuration_data() test_conf.set('installed_tests_dir', installed_tests_execdir) test_conf.set('program', test_name) + test_conf.set('env', '') configure_file( input: installed_tests_template_tap, output: test_name + '.test', diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build index 44d4588d1..b7fb2364c 100644 --- a/gobject/tests/meson.build +++ b/gobject/tests/meson.build @@ -77,6 +77,7 @@ foreach test_name, extra_args : gobject_tests test_conf = configuration_data() test_conf.set('installed_tests_dir', installed_tests_execdir) test_conf.set('program', test_name) + test_conf.set('env', '') configure_file( input: installed_tests_template_tap, output: test_name + '.test', diff --git a/meson.build b/meson.build index 98907ca16..ad8c4cdd8 100644 --- a/meson.build +++ b/meson.build @@ -1893,6 +1893,9 @@ endif have_bash = find_program('bash', required : false).found() # For completion scripts have_sh = find_program('sh', required : false).found() # For glib-gettextize +# Some installed tests require a custom environment +env_program = find_program('env', required: installed_tests_enabled) + # FIXME: How to detect Solaris? https://github.com/mesonbuild/meson/issues/1578 if host_system == 'sunos' glib_conf.set('_XOPEN_SOURCE_EXTENDED', 1) diff --git a/template-tap.test.in b/template-tap.test.in index 6adf73f03..30cd16686 100644 --- a/template-tap.test.in +++ b/template-tap.test.in @@ -1,4 +1,4 @@ [Test] Type=session -Exec=@installed_tests_dir@/@program@ --tap +Exec=@env@@installed_tests_dir@/@program@ --tap Output=TAP diff --git a/tests/gobject/meson.build b/tests/gobject/meson.build index 4b1c69085..eabaea5b2 100644 --- a/tests/gobject/meson.build +++ b/tests/gobject/meson.build @@ -66,6 +66,7 @@ foreach test_name, extra_args : gobject_tests test_conf = configuration_data() test_conf.set('installed_tests_dir', installed_tests_execdir) test_conf.set('program', test_name) + test_conf.set('env', '') configure_file( input: template, output: test_name + '.test', diff --git a/tests/meson.build b/tests/meson.build index 1d53db288..11075dd8e 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -109,6 +109,7 @@ foreach test_name, extra_args : tests test_conf = configuration_data() test_conf.set('installed_tests_dir', installed_tests_execdir) test_conf.set('program', test_name) + test_conf.set('env', '') configure_file( input: template, output: test_name + '.test', diff --git a/tests/refcount/meson.build b/tests/refcount/meson.build index 22b9655d7..e17e38b45 100644 --- a/tests/refcount/meson.build +++ b/tests/refcount/meson.build @@ -36,6 +36,7 @@ foreach test_name, extra_args : refcount_tests test_conf = configuration_data() test_conf.set('installed_tests_dir', installed_tests_execdir) test_conf.set('program', test_name) + test_conf.set('env', '') configure_file( input: installed_tests_template, output: test_name + '.test',