1# tests 2 3# Not entirely random of course, but at least it changes over time 4random_number = minor_version + meson.version().split('.').get(1).to_int() 5 6test_env = environment() 7test_env.set('G_TEST_SRCDIR', meson.current_source_dir()) 8test_env.set('G_TEST_BUILDDIR', meson.current_build_dir()) 9test_env.set('G_DEBUG', 'gc-friendly') 10test_env.set('MALLOC_CHECK_', '2') 11test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256)) 12 13test_cargs = ['-DG_LOG_DOMAIN="GLib"', '-UG_DISABLE_ASSERT'] 14 15subdir('gobject') 16subdir('refcount') 17 18tests = { 19 'testglib' : {'tap' : true}, 20 'testgdate' : {}, 21 'datetime' : {}, 22 'atomic-test' : {}, 23 'bit-test' : {}, 24 'child-test' : {}, 25 'completion-test' : {}, 26 'dirname-test' : {}, 27 'file-test' : {}, 28 'env-test' : {}, 29 'gio-test' : {}, 30 'mainloop-test' : {}, 31 'mapping-test' : {}, 32 'onceinit' : {}, 33 'asyncqueue-test' : {}, 34 'qsort-test' : {}, 35 'relation-test' : {}, 36 'slice-concurrent' : {}, 37 'slice-threadinit' : { 38 'dependencies' : [libgthread_dep], 39 }, 40 'sources' : {}, 41 'spawn-test' : {}, 42 'thread-test' : {}, 43 'threadpool-test' : {'suite' : ['slow']}, 44 'type-test' : {}, 45 'unicode-caseconv' : {}, 46 'unicode-encoding' : {}, 47 'module-test-library' : { 48 'dependencies' : [libgmodule_dep], 49 'export_dynamic' : true, 50 'source': 'module-test.c', 51 'c_args': ['-DMODULE_TYPE="library"'], 52 }, 53 'module-test-plugin' : { 54 'dependencies' : [libgmodule_dep], 55 'export_dynamic' : true, 56 'source': 'module-test.c', 57 'c_args': ['-DMODULE_TYPE="plugin"'], 58 }, 59 'cxx-test' : { 60 'source' : 'cxx-test.cpp', 61 'include_directories' : gmoduleinc, 62 'dependencies' : [libgio_dep], 63 }, 64} 65 66test_extra_programs = { 67 'slice-test' : { 68 'extra_sources' : ['memchunks.c'], 69 }, 70 'slice-color' : { 71 'extra_sources' : ['memchunks.c'], 72 }, 73 'assert-msg-test' : {}, 74 'unicode-collate' : {}, 75} 76 77if host_machine.system() != 'windows' 78 tests += { 79 'timeloop' : {}, 80 'iochannel-test' : {}, 81 } 82else 83 test_extra_programs += { 84 'spawn-test-win32-gui' : {'gui_app' : true} 85 } 86endif 87 88if installed_tests_enabled 89 install_data( 90 'iochannel-test-infile', 91 'casemap.txt', 92 'casefold.txt', 93 'utf8.txt', 94 install_dir : installed_tests_execdir, 95 ) 96endif 97 98module_suffix = [] 99# Keep the autotools convention for shared module suffix because GModule 100# depends on it: https://gitlab.gnome.org/GNOME/glib/issues/520 101if ['darwin', 'ios'].contains(host_machine.system()) 102 module_suffix = 'so' 103endif 104 105foreach module : ['moduletestplugin_a', 'moduletestplugin_b'] 106 shared_module(module + '_plugin', 'lib@0@.c'.format(module), 107 dependencies : [libglib_dep, libgmodule_dep], 108 install_dir : installed_tests_execdir, 109 install : installed_tests_enabled, 110 name_suffix : module_suffix 111 ) 112 shared_library(module + '_library', 'lib@0@.c'.format(module), 113 dependencies : [libglib_dep, libgmodule_dep], 114 install_dir : installed_tests_execdir, 115 install : installed_tests_enabled, 116 name_suffix : module_suffix 117 ) 118endforeach 119 120common_c_args = test_cargs + ['-DGLIB_DISABLE_DEPRECATION_WARNINGS'] 121common_deps = [libm, thread_dep, libglib_dep] 122 123foreach test_name, extra_args : tests 124 source = extra_args.get('source', test_name + '.c') 125 extra_sources = extra_args.get('extra_sources', []) 126 install = installed_tests_enabled and extra_args.get('install', true) 127 template = extra_args.get('tap', false) ? installed_tests_template_tap : installed_tests_template 128 129 if install 130 test_conf = configuration_data() 131 test_conf.set('installed_tests_dir', installed_tests_execdir) 132 test_conf.set('program', test_name) 133 test_conf.set('env', '') 134 configure_file( 135 input: template, 136 output: test_name + '.test', 137 install_dir: installed_tests_metadir, 138 configuration: test_conf 139 ) 140 endif 141 142 # FIXME? $(GLIB_DEBUG_FLAGS) 143 exe = executable(test_name, [source, extra_sources], 144 c_args : common_c_args + extra_args.get('c_args', []), 145 dependencies : common_deps + extra_args.get('dependencies', []), 146 export_dynamic : extra_args.get('export_dynamic', false), 147 include_directories : extra_args.get('include_directories', []), 148 install_dir: installed_tests_execdir, 149 install: install, 150 ) 151 152 suite = ['glib'] + extra_args.get('suite', []) 153 timeout = suite.contains('slow') ? test_timeout_slow : test_timeout 154 # FIXME? TESTS_ENVIRONMENT = LIBCHARSET_ALIAS_DIR=$(top_builddir)/glib/libcharset 155 test(test_name, exe, env : test_env, timeout : timeout, suite : suite) 156endforeach 157 158foreach program_name, extra_args : test_extra_programs 159 source = extra_args.get('source', program_name + '.c') 160 extra_sources = extra_args.get('extra_sources', []) 161 install = installed_tests_enabled and extra_args.get('install', true) 162 executable(program_name, [source, extra_sources], 163 c_args : common_c_args, 164 dependencies : common_deps + extra_args.get('dependencies', []), 165 install_dir : installed_tests_execdir, 166 install : install, 167 gui_app : extra_args.get('gui_app', false), 168 ) 169endforeach 170