[glib/wip/meson: 20/35] meson: gio/tests: add more missing tests
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/wip/meson: 20/35] meson: gio/tests: add more missing tests
- Date: Mon, 8 May 2017 12:35:36 +0000 (UTC)
commit 0c24085cfa4e9c2245efe9f4d6c0371a0d26e974
Author: Tim-Philipp Müller <tim centricular com>
Date: Sat Jan 28 12:52:18 2017 +0000
meson: gio/tests: add more missing tests
gio/meson.build | 3 +-
gio/tests/gdbus-object-manager-example/meson.build | 23 +++
gio/tests/gengiotypefuncs.py | 45 ++++++
gio/tests/meson.build | 151 +++++++++++---------
gobject/tests/meson.build | 8 +
5 files changed, 163 insertions(+), 67 deletions(-)
---
diff --git a/gio/meson.build b/gio/meson.build
index 803b7ac..8535d07 100644
--- a/gio/meson.build
+++ b/gio/meson.build
@@ -341,8 +341,9 @@ if host_system != 'windows'
endif
endif
+# This is also used by tests/gdbus-daemon, so use files() to include the path
gdbus_daemon_sources = [
- 'gdbusdaemon.c',
+ files('gdbusdaemon.c'),
gdbus_daemon_generated,
]
diff --git a/gio/tests/gdbus-object-manager-example/meson.build
b/gio/tests/gdbus-object-manager-example/meson.build
new file mode 100644
index 0000000..a5cff0c
--- /dev/null
+++ b/gio/tests/gdbus-object-manager-example/meson.build
@@ -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)
diff --git a/gio/tests/gengiotypefuncs.py b/gio/tests/gengiotypefuncs.py
new file mode 100644
index 0000000..9732d78
--- /dev/null
+++ b/gio/tests/gengiotypefuncs.py
@@ -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()
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
index fd0ecea..3bc644a 100644
--- a/gio/tests/meson.build
+++ b/gio/tests/meson.build
@@ -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
gio_tests = [
'appmonitor',
@@ -12,7 +21,7 @@ gio_tests = [
'credentials',
'data-input-stream',
'data-output-stream',
- #'defaultvalue', # FIXME: needs giotypefuncs.c generated
+ 'defaultvalue',
'fileattributematcher',
'filter-streams',
'giomodule',
@@ -45,26 +54,39 @@ gio_tests = [
'volumemonitor',
'glistmodel',
'testfilemonitor',
+ 'thumbnail-verification',
]
-gio_tests += [
- 'thumbnail-verification',
+test_extra_programs = [
+ ['gdbus-connection-flush-helper'],
+ ['gdbus-testserver'],
]
# Test programs buildable on UNIX only
-
if host_machine.system() != 'windows'
gio_tests += [
'file',
- #'gdbus-peer', Needs gdbus-object-manager-example/gdbus-example-objectmanager-generated.h
+ 'gdbus-peer',
'gdbus-peer-object-manager',
- 'gdbus-unix-addresses',
'live-g-file',
'socket-address',
'stream-rw_all',
'unix-fd',
'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
if cc.get_id() != 'msvc'
@@ -83,16 +105,22 @@ test_c_args = [
]
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
if test_name == 'autoptr'
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
- exe = executable(test_name, src_file,
+ exe = executable(test_name, srcs,
install : false,
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'
test(test_name, exe, env : test_env, timeout : 45)
else
@@ -101,68 +129,59 @@ foreach test_name : gio_tests
endforeach
uninstalled_test_extra_programs = [
- 'gio-du',
- 'echo-server',
- 'filter-cat',
- 'gapplication-example-actions',
- 'gapplication-example-cmdline',
- 'gapplication-example-cmdline2',
- 'gapplication-example-cmdline3',
- 'gapplication-example-dbushooks',
- 'gapplication-example-open',
- 'gdbus-example-export',
- 'gdbus-example-own-name',
- 'gdbus-example-peer',
- 'gdbus-example-proxy-subclass',
- 'gdbus-example-server',
- 'gdbus-example-subtree',
- 'gdbus-example-watch-name',
- 'gdbus-example-watch-proxy',
- 'gsubprocess-testprog',
- 'httpd',
- 'proxy',
- 'resolver',
- 'send-data',
- 'socket-server',
+ ['gio-du'],
+ ['echo-server'],
+ ['filter-cat'],
+ ['gapplication-example-actions'],
+ ['gapplication-example-cmdline'],
+ ['gapplication-example-cmdline2'],
+ ['gapplication-example-cmdline3'],
+ ['gapplication-example-dbushooks'],
+ ['gapplication-example-open'],
+ ['gdbus-daemon', gdbus_daemon_sources],
+ ['gdbus-example-export'],
+ ['gdbus-example-own-name'],
+ ['gdbus-example-peer'],
+ ['gdbus-example-proxy-subclass'],
+ ['gdbus-example-server'],
+ ['gdbus-example-subtree'],
+ ['gdbus-example-watch-name'],
+ ['gdbus-example-watch-proxy'],
+ ['gsubprocess-testprog'],
+ ['httpd'],
+ ['proxy'],
+ ['resolver'],
+ ['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
- exe = executable(extra_program, '@0@.c'.format(extra_program),
+if host_machine.system() != 'windows'
+ 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,
c_args : test_c_args,
- dependencies : [libglib_dep, libgmodule_dep, libgio_dep],
- )
+ dependencies : [libglib_dep, libgmodule_dep, libgio_dep] + extra_deps)
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
foo = '''
diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build
index 03be192..69d4fac 100644
--- a/gobject/tests/meson.build
+++ b/gobject/tests/meson.build
@@ -17,9 +17,17 @@ gobject_tests = [
'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 = [
'G_TEST_SRCDIR=' + meson.current_source_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
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]