mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-11-11 11:56:16 +01:00
62dca6c1cf
We have tests that are failing in some environments, but it's difficult to handle them because: - for some environments we just allow all the tests to fail: DANGEROUS - when we don't allow failures we have flacky tests: A CI pain So, to avoid this and ensure that: - New failing tests are tracked in all platforms - gitlab integration on tests reports is working - coverage is reported also for failing tests Add support for `can_fail` keyword on tests that would mark the test as part of the `failing` test suite. Not adding the suite directly when defining the tests as this is definitely simpler and allows to define conditions more clearly (see next commits). Now, add a default test setup that does not run the failing and flaky tests by default (not to bother distributors with testing well-known issues) and eventually run all the tests in CI: - Non-flaky tests cannot fail in all platforms - Failing and Flaky tests can fail In both cases we save the test reports so that gitlab integration is preserved.
54 lines
1.6 KiB
Meson
54 lines
1.6 KiB
Meson
gobject_tests = {
|
|
'performance' : { 'args' : [ '--seconds', '0' ] },
|
|
'performance-threaded' : { 'args' : [ '--seconds', '0' ] },
|
|
}
|
|
|
|
test_env = environment(common_test_env)
|
|
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, libglib_dep, libgobject_dep]
|
|
test_cargs = ['-DG_LOG_DOMAIN="GLib-GObject"', '-UG_DISABLE_ASSERT']
|
|
|
|
foreach test_name, extra_args : gobject_tests
|
|
source = extra_args.get('source', test_name + '.c')
|
|
install = installed_tests_enabled and extra_args.get('install', true)
|
|
|
|
if install
|
|
test_conf = configuration_data()
|
|
test_conf.set('installed_tests_dir', installed_tests_execdir)
|
|
test_conf.set('program', '@0@ --seconds 1'.format(test_name))
|
|
test_conf.set('env', '')
|
|
configure_file(
|
|
input: installed_tests_template,
|
|
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', []),
|
|
dependencies : test_deps + extra_args.get('dependencies', []),
|
|
install_dir: installed_tests_execdir,
|
|
install_tag: 'tests',
|
|
install: install,
|
|
)
|
|
|
|
suite = ['gobject', 'performance'] + extra_args.get('suite', [])
|
|
timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
|
|
args = extra_args.get('args', [])
|
|
|
|
if extra_args.get('can_fail', false)
|
|
suite += 'failing'
|
|
endif
|
|
|
|
test(test_name, exe,
|
|
env : test_env,
|
|
timeout : timeout,
|
|
suite : suite,
|
|
args : args,
|
|
)
|
|
endforeach
|