meson: gio/tests: add more missing tests

This commit is contained in:
Tim-Philipp Müller 2017-01-28 12:52:18 +00:00 committed by Matthias Clasen
parent f438c04fac
commit 34e4e25d53
5 changed files with 164 additions and 68 deletions

View File

@ -341,8 +341,9 @@ if host_system != 'windows'
endif endif
endif endif
# This is also used by tests/gdbus-daemon, so use files() to include the path
gdbus_daemon_sources = [ gdbus_daemon_sources = [
'gdbusdaemon.c', files('gdbusdaemon.c'),
gdbus_daemon_generated, gdbus_daemon_generated,
] ]

View File

@ -0,0 +1,23 @@
# FIXME: set UNINSTALLED_GLIB_{SRC|BUILD}DIR=top_{src|build}dir ?
gdbus_example_objectmanager_generated = custom_target('gdbus-example-objectmanager-generated',
input : ['gdbus-example-objectmanager.xml'],
output : ['gdbus-example-objectmanager-generated.h',
'gdbus-example-objectmanager-generated.c',
'gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Animal.xml',
'gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml'],
command : [python, gdbus_codegen,
'--interface-prefix', 'org.gtk.GDBus.Example.ObjectManager.',
'--c-namespace', 'Example',
'--c-generate-object-manager',
'--generate-c-code', '@OUTDIR@/gdbus-example-objectmanager-generated',
'--generate-docbook', '@OUTDIR@/gdbus-example-objectmanager-generated',
'@INPUT@'])
libgdbus_example_objectmanager = shared_library('libgdbus-example-objectmanager',
gdbus_example_objectmanager_generated,
c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
dependencies : [libglib_dep, libgmodule_dep, libgobject_dep, libgio_dep],
install : false)
libgdbus_example_objectmanager_dep = declare_dependency(sources : gdbus_example_objectmanager_generated,
link_with : libgdbus_example_objectmanager)

View File

@ -0,0 +1,45 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import re
import os
debug = os.getenv('GIO_GENTYPEFUNCS_DEBUG') is not None
out_file = sys.argv[1]
in_files = sys.argv[2:]
funcs = []
if debug: print ('Output file: ', out_file)
if debug: print (len(in_files), 'input files')
for filename in in_files:
if debug: print ('Input file: ', filename)
with open(filename, "r") as f:
for line in f:
line = line.rstrip('\n').rstrip('\r')
# print line
match = re.search(r'\bg_[a-zA-Z0-9_]*_get_type\b', line)
if match:
func = match.group(0)
if not func in funcs:
funcs.append(func)
if debug: print ('Found ', func)
file_output = 'G_GNUC_BEGIN_IGNORE_DEPRECATIONS\n'
funcs = sorted(funcs)
for f in funcs:
if f not in ['g_io_extension_get_type', 'g_settings_backend_get_type']:
file_output += '*tp++ = {0} ();\n'.format(f)
if debug: print (len(funcs), 'functions')
ofile = open(out_file, "w")
ofile.write(file_output)
ofile.close()

View File

@ -1,3 +1,12 @@
subdir('gdbus-object-manager-example')
gengiotypefuncs_prog = find_program('gengiotypefuncs.py')
giotypefuncs_inc = custom_target(
'giotypefuncs.inc',
output : 'giotypefuncs.inc',
input : gio_headers + [gioenumtypes_h] + gobject_install_headers,
command: [gengiotypefuncs_prog, '@OUTPUT@', '@INPUT@'])
# Test programs buildable on all platforms # Test programs buildable on all platforms
gio_tests = [ gio_tests = [
'appmonitor', 'appmonitor',
@ -12,7 +21,7 @@ gio_tests = [
'credentials', 'credentials',
'data-input-stream', 'data-input-stream',
'data-output-stream', 'data-output-stream',
#'defaultvalue', # FIXME: needs giotypefuncs.c generated 'defaultvalue',
'fileattributematcher', 'fileattributematcher',
'filter-streams', 'filter-streams',
'giomodule', 'giomodule',
@ -45,26 +54,39 @@ gio_tests = [
'volumemonitor', 'volumemonitor',
'glistmodel', 'glistmodel',
'testfilemonitor', 'testfilemonitor',
]
gio_tests += [
'thumbnail-verification', 'thumbnail-verification',
] ]
# Test programs buildable on UNIX only test_extra_programs = [
['gdbus-connection-flush-helper'],
['gdbus-testserver'],
]
# Test programs buildable on UNIX only
if host_machine.system() != 'windows' if host_machine.system() != 'windows'
gio_tests += [ gio_tests += [
'file', 'file',
#'gdbus-peer', Needs gdbus-object-manager-example/gdbus-example-objectmanager-generated.h 'gdbus-peer',
'gdbus-peer-object-manager', 'gdbus-peer-object-manager',
'gdbus-unix-addresses',
'live-g-file', 'live-g-file',
'socket-address', 'socket-address',
'stream-rw_all', 'stream-rw_all',
'unix-fd', 'unix-fd',
'unix-streams', 'unix-streams',
'mimeapps',
] ]
test_extra_programs += [
['basic-application'],
['dbus-launch'],
['appinfo-test'],
['apps'],
]
have_dbus_daemon = find_program('dbus-daemon', required : false).found()
if have_dbus_daemon
gio_tests += ['gdbus-unix-addresses']
endif
endif endif
if cc.get_id() != 'msvc' if cc.get_id() != 'msvc'
@ -83,16 +105,22 @@ test_c_args = [
] ]
foreach test_name : gio_tests foreach test_name : gio_tests
src_file = '@0@.c'.format(test_name) extra_deps = []
srcs = ['@0@.c'.format(test_name)]
# conflicts with glib/tests/autoptr, can't have two targets with same name # conflicts with glib/tests/autoptr, can't have two targets with same name
if test_name == 'autoptr' if test_name == 'autoptr'
test_name = 'autoptr-gio' test_name = 'autoptr-gio'
elif test_name == 'defaultvalue'
srcs += [giotypefuncs_inc]
elif test_name == 'gdbus-peer'
# This is peer to peer so it doesn't need a session bus, so we can run
# it automatically as a test by default
extra_deps = [libgdbus_example_objectmanager_dep]
endif endif
exe = executable(test_name, src_file, exe = executable(test_name, srcs,
install : false, install : false,
c_args : test_c_args, c_args : test_c_args,
dependencies : [libglib_dep, libgmodule_dep, libgio_dep], dependencies : [libglib_dep, libgmodule_dep, libgio_dep] + extra_deps)
)
if test_name == 'testfilemonitor' if test_name == 'testfilemonitor'
test(test_name, exe, env : test_env, timeout : 45) test(test_name, exe, env : test_env, timeout : 45)
else else
@ -101,68 +129,59 @@ foreach test_name : gio_tests
endforeach endforeach
uninstalled_test_extra_programs = [ uninstalled_test_extra_programs = [
'gio-du', ['gio-du'],
'echo-server', ['echo-server'],
'filter-cat', ['filter-cat'],
'gapplication-example-actions', ['gapplication-example-actions'],
'gapplication-example-cmdline', ['gapplication-example-cmdline'],
'gapplication-example-cmdline2', ['gapplication-example-cmdline2'],
'gapplication-example-cmdline3', ['gapplication-example-cmdline3'],
'gapplication-example-dbushooks', ['gapplication-example-dbushooks'],
'gapplication-example-open', ['gapplication-example-open'],
'gdbus-example-export', ['gdbus-daemon', gdbus_daemon_sources],
'gdbus-example-own-name', ['gdbus-example-export'],
'gdbus-example-peer', ['gdbus-example-own-name'],
'gdbus-example-proxy-subclass', ['gdbus-example-peer'],
'gdbus-example-server', ['gdbus-example-proxy-subclass'],
'gdbus-example-subtree', ['gdbus-example-server'],
'gdbus-example-watch-name', ['gdbus-example-subtree'],
'gdbus-example-watch-proxy', ['gdbus-example-watch-name'],
'gsubprocess-testprog', ['gdbus-example-watch-proxy'],
'httpd', ['gsubprocess-testprog'],
'proxy', ['httpd'],
'resolver', ['proxy'],
'send-data', ['resolver'],
'socket-server', ['send-data'],
['socket-server'],
['socket-client', ['gtlsconsoleinteraction.c']],
['tls-certificate', ['gtesttlsbackend.c']],
['tls-interaction', ['gtesttlsbackend.c']],
# These three are manual-run tests because they need a session bus but don't bring one up themselves
# FIXME: these build but don't seem to work!
['gdbus-example-objectmanager-client', [], [libgdbus_example_objectmanager_dep]],
['gdbus-example-objectmanager-server', [], [libgdbus_example_objectmanager_dep]],
['gdbus-test-fixture', [], [libgdbus_example_objectmanager_dep]],
] ]
foreach extra_program : uninstalled_test_extra_programs if host_machine.system() != 'windows'
exe = executable(extra_program, '@0@.c'.format(extra_program), uninstalled_test_extra_programs += [['gdbus-example-unix-fd-client']]
endif
foreach extra_program : uninstalled_test_extra_programs + test_extra_programs
srcs = ['@0@.c'.format(extra_program[0])]
if extra_program.length() > 1
srcs += extra_program[1]
endif
extra_deps = []
if extra_program.length() > 2
extra_deps = extra_program[2]
endif
executable(extra_program[0], srcs,
install : false, install : false,
c_args : test_c_args, c_args : test_c_args,
dependencies : [libglib_dep, libgmodule_dep, libgio_dep], dependencies : [libglib_dep, libgmodule_dep, libgio_dep] + extra_deps)
)
endforeach endforeach
test_extra_programs = [
'gdbus-connection-flush-helper',
'gdbus-testserver',
]
exe = executable('tls-certificate', 'tls-certificate.c', 'gtesttlsbackend.c',
c_args : test_c_args,
dependencies : [libglib_dep, libgmodule_dep, libgio_dep],
)
test('tls-certificate', exe, env : test_env)
exe = executable('tls-interaction', 'tls-interaction.c', 'gtesttlsbackend.c',
c_args : test_c_args,
dependencies : [libglib_dep, libgmodule_dep, libgio_dep],
)
test('tls-interaction', exe, env : test_env)
exe = executable('socket-client', 'socket-client.c', 'gtlsconsoleinteraction.c',
c_args : test_c_args,
dependencies : [libglib_dep, libgmodule_dep, libgio_dep],
)
#exe = executable('gdbus-daemon', 'gdbus-daemon.c', '../gdbusdaemon.c',
# #meson.build_root() + '/gio/gdbus-daemon-generated.c', # FIXME
# c_args : test_c_args,
# dependencies : [libglib_dep, libgmodule_dep, libgio_dep],
#)
#test('gdbus-daemon', exe, env : test_env)
# FIXME: Add resources test # FIXME: Add resources test
foo = ''' foo = '''

View File

@ -17,9 +17,17 @@ gobject_tests = [
'ifaceproperties', 'ifaceproperties',
] ]
# FIXME: use new environment() object
# FIXME: put common bits of test environment() in one location
# Not entirely random of course, but at least it changes over time
random_number = minor_version.to_int() + meson.version().split('.').get(1).to_int()
test_env = [ test_env = [
'G_TEST_SRCDIR=' + meson.current_source_dir(), 'G_TEST_SRCDIR=' + meson.current_source_dir(),
'G_TEST_BUILDDIR=' + meson.current_build_dir(), 'G_TEST_BUILDDIR=' + meson.current_build_dir(),
'G_DEBUG=gc-friendly',
'MALLOC_CHECK_=2',
'MALLOC_PERTURB_=@0@'.format(random_number % 256),
] ]
foreach test_name : gobject_tests foreach test_name : gobject_tests