Enable tests, fixing the existing ones to use the current API

This also involved building a static library for the application for
tests to link to. The main application executable also links to it.
This commit is contained in:
David Boddie
2019-07-22 15:22:17 +02:00
committed by Guido Günther
parent 7495ec9bbb
commit e903150971
6 changed files with 87 additions and 11 deletions

View File

@ -4,7 +4,11 @@ project(
version: '1.0.10',
license: 'GPLv3',
meson_version: '>=0.49.0',
default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 'c_std=gnu11' ],
default_options: [
'warning_level=1',
'buildtype=debugoptimized',
'c_std=gnu11'
]
)
i18n = import('i18n')
@ -43,3 +47,4 @@ subdir('protocols')
subdir('eek')
subdir('src')
subdir('po')
subdir('tests')

View File

@ -1 +1,8 @@
option('depdatadir', type : 'string', value : '', description : 'System data path. Will be searched for definitions instead of datadir when provided')
option('depdatadir',
type : 'string',
value : '',
description : 'System data path. Will be searched for definitions instead of datadir when provided')
option('tests',
type: 'boolean', value: true,
description: 'Whether to compile unit tests')

View File

@ -4,13 +4,16 @@ dbus_src = gnome.gdbus_codegen(
join_paths(meson.source_root() / 'data' / 'dbus', 'sm.puri.OSK0.xml')
)
config_h = configure_file(input: 'config.h.in', output: 'config.h',configuration: conf_data)
config_h = configure_file(
input: 'config.h.in',
output: 'config.h',
configuration: conf_data
)
sources = [
config_h,
'imservice.c',
'server-context-service.c',
'server-main.c',
'wayland.c',
'../eek/eek.c',
'../eek/eek-container.c',
@ -71,11 +74,24 @@ rslib = static_library(
rust_crate_type: 'staticlib'
)
squeekboard = executable('squeekboard',
libsqueekboard = static_library('libsqueekboard',
sources,
link_with: rslib,
include_directories: [include_directories('..'), include_directories('../eek')],
dependencies: deps,
c_args: [
'-DTHEMESDIR="' + pkgdatadir + '/themes"',
'-DKEYBOARDSDIR="' + pkgdatadir + '/keyboards"',
'-DEEKBOARD_COMPILATION=1',
'-DEEK_COMPILATION=1'],
)
squeekboard = executable('squeekboard',
'server-main.c',
wl_proto_sources,
link_with: libsqueekboard,
include_directories: [include_directories('..'), include_directories('../eek')],
dependencies: deps,
install: true,
c_args: [
'-DTHEMESDIR="' + pkgdatadir + '/themes"',
@ -83,4 +99,3 @@ squeekboard = executable('squeekboard',
'-DEEKBOARD_COMPILATION=1',
'-DEEK_COMPILATION=1'],
)

View File

@ -30,16 +30,15 @@ test_create (void)
section = eek_keyboard_create_section (keyboard);
g_assert (EEK_IS_SECTION(section));
eek_section_add_row (section, 2, EEK_ORIENTATION_HORIZONTAL);
key0 = eek_section_create_key (section, 1, 0, 0);
key0 = eek_section_create_key (section, "key0", 1, 0, 0);
g_assert (EEK_IS_KEY(key0));
key1 = eek_section_create_key (section, 2, 1, 0);
key1 = eek_section_create_key (section, "key1", 2, 1, 0);
g_assert (EEK_IS_KEY(key1));
}
int
main (int argc, char **argv)
{
g_type_init ();
g_test_init (&argc, &argv, NULL);
g_test_add_func ("/eek-simple-test/create", test_create);
return g_test_run ();

View File

@ -36,7 +36,9 @@ test_output_parse (void)
layout = eek_xml_layout_new ("us", &error);
g_assert_no_error (error);
keyboard = eek_keyboard_new (layout, 640, 480);
/* We don't need the context service to parse an XML file, so we can pass
NULL when creating a keyboard. */
keyboard = eek_keyboard_new (NULL, layout, 640, 480);
g_object_unref (layout);
g_object_unref (keyboard);
}
@ -44,7 +46,6 @@ test_output_parse (void)
int
main (int argc, char **argv)
{
g_type_init ();
g_test_init (&argc, &argv, NULL);
gtk_init (&argc, &argv); /* for gdk_x11_display_get_xdisplay() */

49
tests/meson.build Normal file
View File

@ -0,0 +1,49 @@
if get_option('tests')
test_env = [
'G_TEST_SRCDIR=@0@'.format(meson.current_source_dir()),
'G_TEST_BUILDDIR=@0@'.format(meson.current_build_dir()),
'G_DEBUG=gc-friendly,fatal-warnings',
'GSETTINGS_BACKEND=memory',
'MALLOC_CHECK_=2'
]
test_cflags = [
'-I@0@/../src'.format(meson.current_source_dir()),
'-I@0@/../src'.format(meson.current_build_dir()),
'-DEEK_COMPILATION',
'-DEEKBOARD_COMPILATION'
]
test_link_args = [
'-fPIC',
]
tests = [
'eek-simple-test',
'eek-xml-test'
]
foreach name : tests
test_sources = [name + '.c']
t = executable(
name,
test_sources,
squeekboard_resources,
link_with: libsqueekboard,
c_args : test_cflags,
link_args: test_link_args,
dependencies: deps, # from src/meson.build
include_directories: [
include_directories('..'),
include_directories('../eek')
]
)
test(name, t, env: test_env)
endforeach
endif