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