mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-27 06:26:15 +01:00
9c4ff01feb
Generating gir and typelib files has inter-dependencies that may depend
on other elements.
For example, glib requires gobject and gdump generated files require
gmodule, so we've a cyclic dependency because gmodule requires gobject,
that requires glib.
To prevent this, let's just generate the introspection files at once in
a different meson file so that we don't have to deal with this.
As per this we could even revert commit fa37ab6d0
since gio is now
compiled before the gir files.
86 lines
2.6 KiB
Meson
86 lines
2.6 KiB
Meson
girepository_tests = {}
|
|
|
|
# Some GIR files are needed to test against
|
|
if enable_gir
|
|
girepository_tests += {
|
|
'repository' : {
|
|
'depends': [glib_gir, gobject_gir],
|
|
},
|
|
}
|
|
endif
|
|
|
|
test_env = environment()
|
|
test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
|
|
test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
|
|
|
|
test_deps = [libm, thread_dep, libgirepository_dep]
|
|
test_cargs = ['-DG_LOG_DOMAIN="GIRepository"', '-UG_DISABLE_ASSERT']
|
|
test_cpp_args = test_cargs
|
|
|
|
foreach test_name, extra_args : girepository_tests
|
|
source = extra_args.get('source', test_name + '.c')
|
|
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.full_path(), ' '.join(envs))
|
|
endif
|
|
test_conf.set('env', test_env_override)
|
|
configure_file(
|
|
input: installed_tests_template_tap,
|
|
output: test_name + '.test',
|
|
install_dir: installed_tests_metadir,
|
|
install_tag: 'tests',
|
|
configuration: test_conf
|
|
)
|
|
endif
|
|
|
|
exe = executable(test_name, source,
|
|
c_args: test_cargs + extra_args.get('c_args', []),
|
|
cpp_args: test_cpp_args + extra_args.get('cpp_args', []),
|
|
link_args: extra_args.get('link_args', []),
|
|
override_options: extra_args.get('override_options', []),
|
|
dependencies: test_deps + extra_args.get('dependencies', []),
|
|
link_with: extra_args.get('link_with', []),
|
|
install_dir: installed_tests_execdir,
|
|
install_tag: 'tests',
|
|
install: install,
|
|
)
|
|
|
|
depends = [extra_args.get('depends', [])]
|
|
suite = ['girepository', 'core'] + extra_args.get('suite', [])
|
|
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
|
|
|
|
if extra_args.get('can_fail', false)
|
|
suite += 'failing'
|
|
endif
|
|
|
|
foreach program : extra_args.get('extra_programs', [])
|
|
depends += test_extra_programs_targets[program]
|
|
endforeach
|
|
|
|
local_test_env = test_env
|
|
foreach var, value : extra_args.get('env', {})
|
|
local_test_env.append(var, value)
|
|
endforeach
|
|
|
|
test(test_name, exe,
|
|
args: extra_args.get('args', []),
|
|
protocol: extra_args.get('protocol', test_protocol),
|
|
depends: depends,
|
|
env: local_test_env,
|
|
timeout: timeout,
|
|
suite: suite,
|
|
should_fail: extra_args.get('should_fail', false),
|
|
)
|
|
endforeach
|