blob: f5c0fbecbb95a63735cc738dc58fc6cb09d29947 [file] [log] [blame]
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'],
'install' : false,
},
'gwakeup-fallback' : {
'skip' : not glib_conf.has('HAVE_EVENTFD'),
'source' : ['gwakeuptest.c', '../gwakeup.c'],
'c_args' : ['-DTEST_EVENTFD_FALLBACK'],
'install' : false,
},
'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'],
'install' : false,
},
'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()
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_deps = [libm, thread_dep, libglib_dep]
test_cargs = ['-DG_LOG_DOMAIN="GLib"']
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')
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', test_name)
configure_file(
input: installed_tests_template,
output: test_name + '.test',
install_dir: installed_tests_metadir,
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: install,
)
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
# test-spawn-echo helper binary required by the spawn tests above
executable('test-spawn-echo', 'test-spawn-echo.c',
c_args : test_cargs,
dependencies : test_deps,
install_dir: installed_tests_execdir,
install: installed_tests_enabled,
)
# 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