# 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') # FIXME: We are using list of dictionnaries until we can depend on Meson 0.48.0 # that supports '+=' operator on dictionnaries. 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' : {}, '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' : {}, 'spawn-test' : {}, 'iochannel-test' : {}, }] 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_dict : tests foreach test_name, extra_args : test_dict 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) 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') ? 120 : 30 # 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 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, ) endforeach