From ff3a7b02b6e8f813e9f6e4fbd800319af56ab66c Mon Sep 17 00:00:00 2001 From: David Boddie Date: Mon, 22 Jul 2019 15:22:17 +0200 Subject: [PATCH] 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. --- meson.build | 7 ++++++- meson_options.txt | 9 ++++++++- src/meson.build | 22 +++++++++++++++++++--- tests/eek-simple-test.c | 5 ++--- tests/eek-xml-test.c | 5 +++-- 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/meson.build b/meson.build index ff12a382..1165b33f 100644 --- a/meson.build +++ b/meson.build @@ -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') diff --git a/meson_options.txt b/meson_options.txt index b74814dd..339e1ba3 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -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') diff --git a/src/meson.build b/src/meson.build index fefe5a80..a0f37e50 100644 --- a/src/meson.build +++ b/src/meson.build @@ -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,7 +74,7 @@ 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')], @@ -84,3 +87,16 @@ squeekboard = executable('squeekboard', '-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"', + '-DKEYBOARDSDIR="' + pkgdatadir + '/keyboards"', + '-DEEKBOARD_COMPILATION=1', + '-DEEK_COMPILATION=1'], +) diff --git a/tests/eek-simple-test.c b/tests/eek-simple-test.c index b2597b7c..1a2e1f6a 100644 --- a/tests/eek-simple-test.c +++ b/tests/eek-simple-test.c @@ -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 (); diff --git a/tests/eek-xml-test.c b/tests/eek-xml-test.c index 0ed814e4..a130aa3f 100644 --- a/tests/eek-xml-test.c +++ b/tests/eek-xml-test.c @@ -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() */