• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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