| subdir('performance') | |
| marshalers_h = custom_target('marshalers_h', | |
| output : 'marshalers.h', | |
| input : 'marshalers.list', | |
| command : [ | |
| python, glib_genmarshal, | |
| '--prefix=test', | |
| '--valist-marshallers', | |
| '--output=@OUTPUT@', | |
| '--quiet', | |
| '--header', | |
| '@INPUT@', | |
| ], | |
| ) | |
| marshalers_c = custom_target('marshalers_c', | |
| output : 'marshalers.c', | |
| input : 'marshalers.list', | |
| command : [ | |
| python, glib_genmarshal, | |
| '--prefix=test', | |
| '--valist-marshallers', | |
| '--include-header=marshalers.h', | |
| '--output=@OUTPUT@', | |
| '--quiet', | |
| '--body', | |
| '@INPUT@', | |
| ], | |
| ) | |
| # We must embed custom-dispatch.exe with an application | |
| # manifest to pacify UAC in order to run on 32-bit Windows | |
| # builds, otherwise the test will not run as UAC will kill it. | |
| extra_custom_dispatch_objs = [] | |
| if embed_uac_manifest | |
| uac_exe_pkg = 'gobject' | |
| uac_exe_name = 'custom-dispatch' | |
| # Well, we have to forgo the xxx.exe.manifest in the output listing, since | |
| # compile_resources doesn't like to consume targets with multiple outputs, | |
| # and the xxx.exe.manifest and xxx.rc are tied together | |
| uac_rc = custom_target( | |
| '@0@.rc'.format(uac_exe_name), | |
| output: ['@0@.rc'.format(uac_exe_name)], | |
| command: [gen_uac_manifest, | |
| '-p=@0@'.format(uac_exe_pkg), | |
| '-n=@0@'.format(uac_exe_name), | |
| '--pkg-version=@0@'.format(meson.project_version()), | |
| '--output-dir=@OUTDIR@'], | |
| ) | |
| extra_custom_dispatch_objs = import('windows').compile_resources(uac_rc) | |
| endif | |
| gobject_tests = { | |
| 'notify-init' : {}, | |
| 'notify-init2' : {}, | |
| 'custom-dispatch' : { | |
| 'extra_objs' : extra_custom_dispatch_objs, | |
| }, | |
| 'qdata' : {}, | |
| 'accumulator' : { | |
| 'source' : ['accumulator.c', marshalers_h, marshalers_c], | |
| }, | |
| 'basics-gobject' : {}, | |
| 'boxed' : {}, | |
| 'defaultiface' : { | |
| 'source' : ['defaultiface.c', 'testmodule.c'], | |
| }, | |
| 'deftype' : { 'protocol': 'exitcode' }, | |
| 'deprecated-properties' : {}, | |
| 'dynamictype' : { | |
| 'source' : ['dynamictype.c', 'testmodule.c'], | |
| }, | |
| 'enums' : {}, | |
| 'max-version' : {'install': false}, | |
| 'override' : {}, | |
| 'param' : {}, | |
| 'references' : {}, | |
| 'basic-signals' : {}, | |
| 'singleton' : {}, | |
| 'threadtests' : {}, | |
| 'dynamictests' : {}, | |
| 'binding' : {}, | |
| 'bindinggroup' : {}, | |
| 'properties' : {}, | |
| 'properties-introspection' : {}, | |
| 'reference' : { | |
| # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/3148 | |
| 'can_fail' : host_system == 'gnu', | |
| }, | |
| 'flags' : {}, | |
| 'value' : {}, | |
| 'type' : {}, | |
| 'gobject-private' : { | |
| 'source' : 'private.c', | |
| }, | |
| 'closure' : {}, | |
| 'closure-refcount' : { 'suite': ['slow'] }, | |
| 'object' : {}, | |
| 'signal-handler' : {}, | |
| 'ifaceproperties' : {}, | |
| 'signals' : { | |
| 'source' : ['signals.c', marshalers_h, marshalers_c], | |
| }, | |
| 'signalgroup' : {}, | |
| 'testing' : {}, | |
| 'type-flags' : {}, | |
| 'objects-refcount1' : { | |
| 'c_args': cc.get_supported_arguments([ | |
| '-DG_DISABLE_CAST_CHECKS', | |
| '-Werror', | |
| '-Wcast-align=strict', | |
| ]), | |
| }, | |
| 'objects-refcount2' : {'suite' : ['slow']}, | |
| 'properties-refcount1' : {}, | |
| 'properties-refcount2' : {'suite' : ['slow']}, | |
| 'properties-refcount3' : {'suite' : ['slow']}, | |
| 'properties-refcount4' : {}, | |
| 'signals-refcount1' : { | |
| 'source' : 'signals-refcount.c', | |
| 'c_args' : ['-DTESTNUM=1'], | |
| }, | |
| 'signals-refcount2' : { | |
| 'source' : 'signals-refcount.c', | |
| 'c_args' : ['-DTESTNUM=2'], | |
| }, | |
| 'signals-refcount3' : { | |
| 'source' : 'signals-refcount.c', | |
| 'c_args' : ['-DTESTNUM=3'], | |
| }, | |
| 'signals-refcount4' : { | |
| 'source' : 'signals-refcount.c', | |
| 'c_args' : ['-DTESTNUM=4'], | |
| }, | |
| } | |
| if have_cxx | |
| gobject_tests += { | |
| 'cxx' : { | |
| 'protocol': 'exitcode', | |
| 'source' : ['cxx.cpp'], | |
| 'suite' : ['cpp'], | |
| }, | |
| } | |
| foreach std, arg: cxx_standards | |
| gobject_tests += { | |
| 'cxx-@0@'.format(std) : { | |
| 'protocol': 'exitcode', | |
| 'source' : ['cxx.cpp'], | |
| 'suite' : ['cpp'], | |
| 'cpp_args' : [arg], | |
| }, | |
| } | |
| endforeach | |
| endif | |
| if cc.get_id() != 'msvc' | |
| gobject_tests += {'autoptr' : {}} | |
| endif | |
| python_tests = { | |
| 'genmarshal.py' : {}, | |
| 'gobject-query.py' : { | |
| 'depends' : gobject_query, | |
| 'can_fail' : host_system == 'windows', | |
| }, | |
| 'mkenums.py' : {}, | |
| } | |
| test_env = environment() | |
| test_env.set('G_TEST_SRCDIR', meson.current_source_dir()) | |
| test_env.set('G_TEST_BUILDDIR', meson.current_build_dir()) | |
| test_deps = [libm, thread_dep, libglib_dep, libgobject_dep] | |
| test_cargs = ['-DG_LOG_DOMAIN="GLib-GObject"', '-UG_DISABLE_ASSERT'] | |
| test_cpp_args = test_cargs | |
| foreach test_name, extra_args : gobject_tests | |
| source = extra_args.get('source', test_name + '.c') | |
| extra_objs = extra_args.get('extra_objs', []) | |
| install = installed_tests_enabled and extra_args.get('install', true) | |
| if install | |
| test_conf = configuration_data() | |
| test_conf.set('installed_tests_dir', installed_tests_execdir) | |
| test_conf.set('program', test_name) | |
| test_conf.set('env', '') | |
| configure_file( | |
| input: installed_tests_template_tap, | |
| output: test_name + '.test', | |
| install_dir: installed_tests_metadir, | |
| install_tag: 'tests', | |
| configuration: test_conf | |
| ) | |
| endif | |
| exe = executable(test_name, source, extra_objs, | |
| c_args : test_cargs + extra_args.get('c_args', []), | |
| cpp_args : test_cpp_args + extra_args.get('cpp_args', []), | |
| dependencies : test_deps + extra_args.get('dependencies', []), | |
| install_dir: installed_tests_execdir, | |
| install_tag: 'tests', | |
| install: install, | |
| ) | |
| suite = ['gobject'] + extra_args.get('suite', []) | |
| timeout = suite.contains('slow') ? test_timeout_slow : test_timeout | |
| if extra_args.get('can_fail', false) | |
| suite += 'failing' | |
| endif | |
| # FIXME: https://gitlab.gnome.org/GNOME/glib/issues/1316 | |
| # aka https://bugs.debian.org/880883 | |
| if test_name == 'closure-refcount' and ['arm', 'aarch64'].contains(host_machine.cpu_family()) | |
| timeout = timeout * 10 | |
| endif | |
| test(test_name, | |
| exe, | |
| protocol : extra_args.get('protocol', test_protocol), | |
| env : test_env, | |
| timeout : timeout, | |
| suite : suite, | |
| ) | |
| endforeach | |
| foreach test_name, extra_args : python_tests | |
| depends = [extra_args.get('depends', [])] | |
| suite = ['gobject', 'no-valgrind'] | |
| if extra_args.get('can_fail', false) | |
| suite += 'failing' | |
| endif | |
| test( | |
| test_name, | |
| python, | |
| protocol : extra_args.get('protocol', test_protocol), | |
| depends: depends, | |
| args: ['-B', files(test_name)], | |
| env: test_env, | |
| suite: suite, | |
| ) | |
| if installed_tests_enabled | |
| install_data( | |
| files(test_name), | |
| install_dir: installed_tests_execdir, | |
| install_tag: 'tests', | |
| install_mode: 'rwxr-xr-x', | |
| ) | |
| test_conf = configuration_data() | |
| test_conf.set('installed_tests_dir', installed_tests_execdir) | |
| test_conf.set('program', test_name) | |
| test_conf.set('env', '') | |
| configure_file( | |
| input: installed_tests_template_tap, | |
| output: test_name + '.test', | |
| install_dir: installed_tests_metadir, | |
| install_tag: 'tests', | |
| configuration: test_conf, | |
| ) | |
| endif | |
| endforeach | |
| # TAP test runner for Python tests | |
| if installed_tests_enabled | |
| install_data( | |
| files('taptestrunner.py'), | |
| install_dir: installed_tests_execdir, | |
| install_tag: 'tests', | |
| ) | |
| endif |