Meson: Group all glib tests into a single dict
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
index ebce3c6..e684af4 100644
--- a/glib/tests/meson.build
+++ b/glib/tests/meson.build
@@ -1,94 +1,130 @@
-glib_tests = [
- 'array-test',
- 'asyncqueue',
- 'base64',
- 'bitlock',
- 'bookmarkfile',
- 'bytes',
- 'cache',
- 'charset',
- 'checksum',
- 'collate',
- 'cond',
- 'convert',
- 'dataset',
- 'date',
- 'dir',
- 'environment',
- 'error',
- 'fileutils',
- 'gdatetime',
- 'guuid',
- 'gvariant',
- 'hash',
- 'hmac',
- 'hook',
- 'hostutils',
- 'keyfile',
- 'list',
- 'logging',
- 'mainloop',
- 'mappedfile',
- 'markup',
- 'markup-parse',
- 'markup-collect',
- 'markup-escape',
- 'markup-subparser',
- 'mem-overflow',
- 'mutex',
- 'node',
- 'once',
- 'option-context',
- 'option-argv0',
- 'overflow',
- # overflow-fallback handled separately below
- 'pattern',
- 'private',
- 'protocol',
- 'queue',
- 'rand',
- 'rcbox',
- 'rec-mutex',
- 'refcount',
- 'refcount-macro',
- 'refstring',
- 'regex',
- 'rwlock',
- 'scannerapi',
- 'search-utils',
- 'sequence',
- 'shell',
- 'slice',
- 'slist',
- 'sort',
- 'spawn-multithreaded',
- 'spawn-singlethread',
- 'strfuncs',
- 'string',
- 'testing',
- 'test-printf',
- 'thread',
- 'timeout',
- 'timer',
- 'tree',
- 'utf8-performance',
- 'utf8-pointer',
- 'utf8-validate',
- 'utf8-misc',
- 'utils',
- 'unicode',
- 'uri',
- '1bit-mutex',
- '642026',
-]
-
-if host_machine.system() != 'windows'
- glib_tests += [ 'unix', 'include' ]
-endif
-
-if cc.get_id() != 'msvc'
- glib_tests += [ 'autoptr' ]
-endif
+glib_tests = {
+ 'array-test' : {},
+ 'asyncqueue' : {},
+ 'atomic' : {
+ 'c_args' : cc.get_id() == 'gcc' ? ['-Wstrict-aliasing=2'] : [],
+ },
+ 'autoptr' : {
+ 'skip' : cc.get_id() == 'msvc',
+ },
+ 'base64' : {},
+ 'bitlock' : {},
+ 'bookmarkfile' : {},
+ 'bytes' : {},
+ 'cache' : {},
+ 'charset' : {},
+ 'checksum' : {},
+ 'collate' : {},
+ 'cond' : {},
+ 'convert' : {},
+ 'dataset' : {},
+ 'date' : {},
+ 'dir' : {},
+ 'environment' : {},
+ 'error' : {},
+ 'fileutils' : {},
+ 'gdatetime' : {},
+ 'guuid' : {},
+ 'gvariant' : {
+ 'suite' : ['slow'],
+ },
+ 'gwakeup' : {
+ 'source' : ['gwakeuptest.c', '../gwakeup.c'],
+ },
+ 'gwakeup-fallback' : {
+ 'skip' : not glib_conf.has('HAVE_EVENTFD'),
+ 'source' : ['gwakeuptest.c', '../gwakeup.c'],
+ 'c_args' : ['-DTEST_EVENTFD_FALLBACK'],
+ },
+ 'hash' : {},
+ 'hmac' : {},
+ 'hook' : {},
+ 'hostutils' : {},
+ 'include' : {
+ 'skip' : host_machine.system() == 'windows',
+ },
+ 'keyfile' : {},
+ 'list' : {},
+ 'logging' : {},
+ 'mainloop' : {},
+ 'mappedfile' : {},
+ 'markup' : {},
+ 'markup-parse' : {},
+ 'markup-collect' : {},
+ 'markup-escape' : {},
+ 'markup-subparser' : {},
+ 'mem-overflow' : {},
+ 'mutex' : {},
+ 'node' : {},
+ 'once' : {},
+ 'option-context' : {},
+ 'option-argv0' : {},
+ 'overflow' : {},
+ 'overflow-fallback' : {
+ 'source' : 'overflow.c',
+ 'c_args' : ['-D_GLIB_TEST_OVERFLOW_FALLBACK'],
+ },
+ 'pattern' : {},
+ 'private' : {},
+ 'protocol' : {},
+ 'queue' : {},
+ 'rand' : {},
+ 'rcbox' : {},
+ 'rec-mutex' : {},
+ 'refcount' : {},
+ 'refcount-macro' : {
+ 'source' : 'refcount.c',
+ 'c_args' : ['-DG_DISABLE_CHECKS'],
+ },
+ 'refstring' : {},
+ 'regex' : {
+ 'dependencies' : [pcre],
+ 'c_args' : use_pcre_static_flag ? ['-DPCRE_STATIC'] : [],
+ },
+ 'rwlock' : {},
+ 'scannerapi' : {},
+ 'search-utils' : {},
+ 'sequence' : {
+ 'suite' : ['slow'],
+ },
+ 'shell' : {},
+ 'slice' : {},
+ 'slist' : {},
+ 'sort' : {},
+ 'spawn-multithreaded' : {},
+ 'spawn-singlethread' : {},
+ 'strfuncs' : {},
+ 'string' : {},
+ 'testing' : {},
+ 'test-printf' : {},
+ 'thread' : {},
+ 'timeout' : {},
+ 'timer' : {},
+ 'tree' : {},
+ 'utf8-performance' : {},
+ 'utf8-pointer' : {},
+ 'utf8-validate' : {},
+ 'utf8-misc' : {},
+ 'utils' : {},
+ 'unicode' : {},
+ 'unix' : {
+ 'skip' : host_machine.system() == 'windows',
+ },
+ 'uri' : {},
+ '1bit-mutex' : {},
+ '1bit-emufutex' : {
+ 'source' : '1bit-mutex.c',
+ 'c_args' : ['-DTEST_EMULATED_FUTEX'],
+ },
+ '642026' : {
+ 'suite' : ['slow'],
+ },
+ '642026-ec' : {
+ 'source' : '642026.c',
+ 'c_args' : ['-DG_ERRORCHECK_MUTEXES'],
+ 'suite' : ['slow'],
+ },
+}
# Not entirely random of course, but at least it changes over time
random_number = minor_version + meson.version().split('.').get(1).to_int()
@@ -100,99 +136,32 @@
test_env.set('MALLOC_CHECK_', '2')
test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
+test_deps = [libm, thread_dep, libglib_dep]
test_cargs = ['-DG_LOG_DOMAIN="GLib"']
-# Tests that consistently time out on the CI infrastructure
-slow_tests = [
- 'gvariant',
- 'sequence',
- '642026',
-]
+foreach test_name, extra_args : glib_tests
+ # FIXME: This condition is ugly, meson should either have 'continue'
+ # keyword (https://github.com/mesonbuild/meson/issues/3601), or support
+ # mutable to dictionaries (https://github.com/mesonbuild/meson/pull/3820).
+ if not extra_args.get('skip', false)
+ source = extra_args.get('source', test_name + '.c')
-foreach test_name : glib_tests
- deps = [libm, thread_dep, libglib_dep]
- source = test_name + '.c'
- c_args = test_cargs + ['-DPCRE_STATIC']
- if test_name == 'regex'
- deps += [pcre]
- endif
- if test_name == 'gdatetime'
- deps += [libintl]
- endif
- # We build the refcount test twice: one to test the function-based API,
- # and the other to test the macro-based API that is used when disabling
- # checks
- if test_name == 'refcount-macro'
- source = 'refcount.c'
- c_args += ['-DG_DISABLE_CHECKS']
- endif
- exe = executable(test_name, source,
- c_args : c_args,
- dependencies : deps,
- install : false,
- )
- # These tests may take more than 30 seconds to run on the CI infrastructure
- if slow_tests.contains(test_name)
- test(test_name, exe, env : test_env, timeout : 120, suite : ['glib', 'slow'])
- else
- test(test_name, exe, env : test_env, suite : ['glib'])
+ exe = executable(test_name, source,
+ c_args : test_cargs + extra_args.get('c_args', []),
+ dependencies : test_deps + extra_args.get('dependencies', []),
+ install: false,
+ )
+
+ suite = ['glib'] + extra_args.get('suite', [])
+ timeout = suite.contains('slow') ? 120 : 30
+ test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
endif
endforeach
-c_args_atomic = []
-if cc.get_id() == 'gcc'
- c_args_atomic += ['-Wstrict-aliasing=2']
-endif
-
-deps = [libm, thread_dep, libglib_dep]
-
-exe = executable('atomic', 'atomic.c',
- c_args : test_cargs + c_args_atomic,
- dependencies : deps,
-)
-test('atomic', exe, env : test_env, suite : ['glib'])
-
-# FIXME: consolidate all of these into the array
-exe = executable('overflow-fallback', 'overflow.c',
- c_args : test_cargs + ['-D_GLIB_TEST_OVERFLOW_FALLBACK'],
- dependencies : deps,
- install : false,
-)
-test('overflow-fallback', exe, env : test_env, suite : ['glib'])
-
-exe = executable('642026-ec', '642026.c',
- c_args : test_cargs + ['-DG_ERRORCHECK_MUTEXES'],
- dependencies : deps,
- install : false,
-)
-test('642026-ec', exe, env : test_env, timeout : 90, suite : ['glib', 'slow'])
-
-exe = executable('1bit-emufutex', '1bit-mutex.c',
- c_args : test_cargs + ['-DTEST_EMULATED_FUTEX'],
- dependencies : deps,
- install : false,
-)
-test('1bit-emufutex', exe, env : test_env, suite : ['glib'])
-
-exe = executable('gwakeup', 'gwakeuptest.c', '../gwakeup.c',
- c_args : test_cargs,
- dependencies : deps,
- install : false)
-test('gwakeup', exe, env : test_env, suite : ['glib'])
-
-if glib_conf.has('HAVE_EVENTFD')
- exe = executable('gwakeup-fallback', 'gwakeuptest.c', '../gwakeup.c',
- c_args : test_cargs + ['-DTEST_EVENTFD_FALLBACK'],
- dependencies : deps,
- install : false,
- )
- test('gwakeup-fallback', exe, env : test_env, suite : ['glib'])
-endif
-
# test-spawn-echo helper binary required by the spawn tests above
executable('test-spawn-echo', 'test-spawn-echo.c',
c_args : test_cargs,
- dependencies : deps,
+ dependencies : test_deps,
install : false,
)