mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-10 11:26:16 +01:00
07a1a8031d
It's necessary sometimes for installed tests to be able to run with a custom environment. For example, the gsocketclient-slow test requires an LD_PRELOADed library to provide a slow connect() (this is to be added in a followup commit). Introduce a variable `@env@` into the installed test template, which we can override as necessary when generating `.test` files, to run tests prefixed with `/usr/bin/env <LIST OF VARIABLES>`. As the only test that requires this currently lives in `gio/tests/`, we are only hooking this up for that directory right now. If other tests in future require this treatment, then the support can be extended at that point.
150 lines
4.3 KiB
Meson
150 lines
4.3 KiB
Meson
# tests
|
|
|
|
# Not entirely random of course, but at least it changes over time
|
|
random_number = minor_version + meson.version().split('.').get(1).to_int()
|
|
|
|
test_env = environment()
|
|
test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
|
|
test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
|
|
test_env.set('G_DEBUG', 'gc-friendly')
|
|
test_env.set('MALLOC_CHECK_', '2')
|
|
test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
|
|
|
|
test_cargs = ['-DG_LOG_DOMAIN="GLib"']
|
|
|
|
subdir('gobject')
|
|
subdir('refcount')
|
|
|
|
tests = {
|
|
'testglib' : {'tap' : true},
|
|
'testgdate' : {},
|
|
'datetime' : {},
|
|
'atomic-test' : {},
|
|
'bit-test' : {},
|
|
'child-test' : {},
|
|
'completion-test' : {},
|
|
'dirname-test' : {},
|
|
'file-test' : {},
|
|
'env-test' : {},
|
|
'gio-test' : {},
|
|
'mainloop-test' : {},
|
|
'mapping-test' : {},
|
|
'onceinit' : {},
|
|
'asyncqueue-test' : {},
|
|
'qsort-test' : {},
|
|
'relation-test' : {},
|
|
'slice-concurrent' : {},
|
|
'slice-threadinit' : {
|
|
'dependencies' : [libgthread_dep],
|
|
},
|
|
'sources' : {},
|
|
'spawn-test' : {},
|
|
'thread-test' : {},
|
|
'threadpool-test' : {'suite' : ['slow']},
|
|
'type-test' : {},
|
|
'unicode-caseconv' : {},
|
|
'unicode-encoding' : {},
|
|
'module-test' : {
|
|
'dependencies' : [libgmodule_dep],
|
|
'export_dynamic' : true,
|
|
},
|
|
'cxx-test' : {
|
|
'source' : 'cxx-test.cpp',
|
|
'include_directories' : gmoduleinc,
|
|
'dependencies' : [libgio_dep],
|
|
},
|
|
}
|
|
|
|
test_extra_programs = {
|
|
'slice-test' : {
|
|
'extra_sources' : ['memchunks.c'],
|
|
},
|
|
'slice-color' : {
|
|
'extra_sources' : ['memchunks.c'],
|
|
},
|
|
'assert-msg-test' : {},
|
|
'unicode-collate' : {},
|
|
}
|
|
|
|
if host_machine.system() != 'windows'
|
|
tests += {
|
|
'timeloop' : {},
|
|
'iochannel-test' : {},
|
|
}
|
|
else
|
|
test_extra_programs += {
|
|
'spawn-test-win32-gui' : {'gui_app' : true}
|
|
}
|
|
endif
|
|
|
|
if installed_tests_enabled
|
|
install_data(
|
|
'iochannel-test-infile',
|
|
'casemap.txt',
|
|
'casefold.txt',
|
|
'utf8.txt',
|
|
install_dir : installed_tests_execdir,
|
|
)
|
|
endif
|
|
|
|
foreach module : ['moduletestplugin_a', 'moduletestplugin_b']
|
|
shared_module(module, 'lib@0@.c'.format(module),
|
|
dependencies : [libglib_dep, libgmodule_dep],
|
|
install_dir : installed_tests_execdir,
|
|
install : installed_tests_enabled
|
|
)
|
|
endforeach
|
|
|
|
common_c_args = test_cargs + ['-DGLIB_DISABLE_DEPRECATION_WARNINGS']
|
|
common_deps = [libm, thread_dep, libglib_dep]
|
|
|
|
foreach test_name, extra_args : 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)
|
|
template = extra_args.get('tap', false) ? installed_tests_template_tap : installed_tests_template
|
|
test_command_args = extra_args.get('tap', false) ? ['--tap'] : []
|
|
|
|
if install
|
|
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',
|
|
install_dir: installed_tests_metadir,
|
|
configuration: test_conf
|
|
)
|
|
endif
|
|
|
|
# FIXME? $(GLIB_DEBUG_FLAGS)
|
|
exe = executable(test_name, [source, extra_sources],
|
|
c_args : common_c_args + extra_args.get('c_args', []),
|
|
dependencies : common_deps + extra_args.get('dependencies', []),
|
|
export_dynamic : extra_args.get('export_dynamic', false),
|
|
include_directories : extra_args.get('include_directories', []),
|
|
install_dir: installed_tests_execdir,
|
|
install: install,
|
|
)
|
|
|
|
suite = ['glib'] + extra_args.get('suite', [])
|
|
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
|
|
# FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset
|
|
test(test_name, exe, env : test_env, timeout : timeout, suite : suite,
|
|
args : test_command_args)
|
|
endforeach
|
|
|
|
foreach program_name, extra_args : test_extra_programs
|
|
source = extra_args.get('source', program_name + '.c')
|
|
extra_sources = extra_args.get('extra_sources', [])
|
|
install = installed_tests_enabled and extra_args.get('install', true)
|
|
executable(program_name, [source, extra_sources],
|
|
c_args : common_c_args,
|
|
dependencies : common_deps + extra_args.get('dependencies', []),
|
|
install_dir : installed_tests_execdir,
|
|
install : install,
|
|
gui_app : extra_args.get('gui_app', false),
|
|
)
|
|
endforeach
|