Merge branch 'test-ip_mreq_source-android-only' into 'master'
[glib.git] / glib / tests / meson.build
blobf5c0fbecbb95a63735cc738dc58fc6cb09d29947
1 glib_tests = {
2   'array-test' : {},
3   'asyncqueue' : {},
4   'atomic' : {
5     'c_args' : cc.get_id() == 'gcc' ? ['-Wstrict-aliasing=2'] : [],
6   },
7   'autoptr' : {
8     'skip' : cc.get_id() == 'msvc',
9   },
10   'base64' : {},
11   'bitlock' : {},
12   'bookmarkfile' : {},
13   'bytes' : {},
14   'cache' : {},
15   'charset' : {},
16   'checksum' : {},
17   'collate' : {},
18   'cond' : {},
19   'convert' : {},
20   'dataset' : {},
21   'date' : {},
22   'dir' : {},
23   'environment' : {},
24   'error' : {},
25   'fileutils' : {},
26   'gdatetime' : {},
27   'guuid' : {},
28   'gvariant' : {
29     'suite' : ['slow'],
30   },
31   'gwakeup' : {
32     'source' : ['gwakeuptest.c', '../gwakeup.c'],
33     'install' : false,
34   },
35   'gwakeup-fallback' : {
36     'skip' : not glib_conf.has('HAVE_EVENTFD'),
37     'source' : ['gwakeuptest.c', '../gwakeup.c'],
38     'c_args' : ['-DTEST_EVENTFD_FALLBACK'],
39     'install' : false,
40   },
41   'hash' : {},
42   'hmac' : {},
43   'hook' : {},
44   'hostutils' : {},
45   'include' : {
46     'skip' : host_machine.system() == 'windows',
47   },
48   'keyfile' : {},
49   'list' : {},
50   'logging' : {},
51   'mainloop' : {},
52   'mappedfile' : {},
53   'markup' : {},
54   'markup-parse' : {},
55   'markup-collect' : {},
56   'markup-escape' : {},
57   'markup-subparser' : {},
58   'mem-overflow' : {},
59   'mutex' : {},
60   'node' : {},
61   'once' : {},
62   'option-context' : {},
63   'option-argv0' : {},
64   'overflow' : {},
65   'overflow-fallback' : {
66     'source' : 'overflow.c',
67     'c_args' : ['-D_GLIB_TEST_OVERFLOW_FALLBACK'],
68   },
69   'pattern' : {},
70   'private' : {},
71   'protocol' : {},
72   'queue' : {},
73   'rand' : {},
74   'rcbox' : {},
75   'rec-mutex' : {},
76   'refcount' : {},
77   'refcount-macro' : {
78     'source' : 'refcount.c',
79     'c_args' : ['-DG_DISABLE_CHECKS'],
80   },
81   'refstring' : {},
82   'regex' : {
83     'dependencies' : [pcre],
84     'c_args' : use_pcre_static_flag ? ['-DPCRE_STATIC'] : [],
85   },
86   'rwlock' : {},
87   'scannerapi' : {},
88   'search-utils' : {},
89   'sequence' : {
90     'suite' : ['slow'],
91   },
92   'shell' : {},
93   'slice' : {},
94   'slist' : {},
95   'sort' : {},
96   'spawn-multithreaded' : {},
97   'spawn-singlethread' : {},
98   'strfuncs' : {},
99   'string' : {},
100   'testing' : {},
101   'test-printf' : {},
102   'thread' : {},
103   'timeout' : {},
104   'timer' : {},
105   'tree' : {},
106   'utf8-performance' : {},
107   'utf8-pointer' : {},
108   'utf8-validate' : {},
109   'utf8-misc' : {},
110   'utils' : {},
111   'unicode' : {},
112   'unix' : {
113     'skip' : host_machine.system() == 'windows',
114   },
115   'uri' : {},
116   '1bit-mutex' : {},
117   '1bit-emufutex' : {
118     'source' : '1bit-mutex.c',
119     'c_args' : ['-DTEST_EMULATED_FUTEX'],
120     'install' : false,
121   },
122   '642026' : {
123     'suite' : ['slow'],
124   },
125   '642026-ec' : {
126     'source' : '642026.c',
127     'c_args' : ['-DG_ERRORCHECK_MUTEXES'],
128     'suite' : ['slow'],
129   },
132 # Not entirely random of course, but at least it changes over time
133 random_number = minor_version + meson.version().split('.').get(1).to_int()
135 test_env = environment()
136 test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
137 test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
138 test_env.set('G_DEBUG', 'gc-friendly')
139 test_env.set('MALLOC_CHECK_', '2')
140 test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
142 test_deps = [libm, thread_dep, libglib_dep]
143 test_cargs = ['-DG_LOG_DOMAIN="GLib"']
145 foreach test_name, extra_args : glib_tests
146   # FIXME: This condition is ugly, meson should either have 'continue'
147   # keyword (https://github.com/mesonbuild/meson/issues/3601), or support
148   # mutable to dictionaries (https://github.com/mesonbuild/meson/pull/3820).
149   if not extra_args.get('skip', false)
150     source = extra_args.get('source', test_name + '.c')
151     install = installed_tests_enabled and extra_args.get('install', true)
153     if install
154       test_conf = configuration_data()
155       test_conf.set('installed_tests_dir', installed_tests_execdir)
156       test_conf.set('program', test_name)
157       configure_file(
158         input: installed_tests_template,
159         output: test_name + '.test',
160         install_dir: installed_tests_metadir,
161         configuration: test_conf
162       )
163     endif
165     exe = executable(test_name, source,
166       c_args : test_cargs + extra_args.get('c_args', []),
167       dependencies : test_deps + extra_args.get('dependencies', []),
168       install_dir: installed_tests_execdir,
169       install: install,
170     )
172     suite = ['glib'] + extra_args.get('suite', [])
173     timeout = suite.contains('slow') ? 120 : 30
174     test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
175   endif
176 endforeach
178 # test-spawn-echo helper binary required by the spawn tests above
179 executable('test-spawn-echo', 'test-spawn-echo.c',
180   c_args : test_cargs,
181   dependencies : test_deps,
182   install_dir: installed_tests_execdir,
183   install: installed_tests_enabled,
186 # some testing of gtester functionality
187 if not meson.is_cross_build() and host_system != 'windows'
188   xmllint = find_program('xmllint', required: false)
189   if xmllint.found()
190     tmpsample_xml = custom_target('tmpsample.xml',
191       output : 'tmpsample.xml',
192       command : [ gtester, '-k', '--quiet', '-o', '@OUTPUT@',
193                   '--test-arg=--gtester-selftest', gtester])
195     test('gtester-xmllint-check', xmllint,
196       args : ['--noout', tmpsample_xml],
197       env : test_env,
198       suite : ['glib'],
199     )
200   endif
201 endif