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 # 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"'] # Tests that consistently time out on the CI infrastructure slow_tests = [ 'gvariant', 'sequence', '642026', ] 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']) 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, install : false, ) # some testing of gtester functionality if not meson.is_cross_build() and host_system != 'windows' xmllint = find_program('xmllint', required: false) if xmllint.found() tmpsample_xml = custom_target('tmpsample.xml', output : 'tmpsample.xml', command : [ gtester, '-k', '--quiet', '-o', '@OUTPUT@', '--test-arg=--gtester-selftest', gtester]) test('gtester-xmllint-check', xmllint, args : ['--noout', tmpsample_xml], env : test_env, suite : ['glib'], ) endif endif