From 11fb4717a26fa036af5ef8e3c7891cedc1b75ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?I=C3=B1igo=20Mart=C3=ADnez?= Date: Mon, 2 Oct 2017 17:59:54 +0200 Subject: [PATCH] tests: Fix GCalManager test The unit test that checks GCalManager test fails due to missing schemas. This patch allows schemas to be compiled in the build tree and also sets the environment variables so tests can found them and run properly. Additional code and testing from Mohammed Sadiq --- data/meson.build | 48 ++++++++++++++++++++++++++++++++++++----------- meson.build | 1 + src/meson.build | 15 --------------- tests/meson.build | 29 +++++++++++++++++----------- 4 files changed, 56 insertions(+), 37 deletions(-) diff --git a/data/meson.build b/data/meson.build index 76c9d4f0..dca57d3c 100644 --- a/data/meson.build +++ b/data/meson.build @@ -1,17 +1,32 @@ subdir('icons') subdir('appdata') +enum_headers = files(join_paths(src_dir, 'gcal-enums.h')) + +enums_xml = gnome.mkenums( + 'org.gnome.calendar.enums.xml', + sources: enum_headers, + comments: '', + fhead: '', + vhead: ' <@type@ id="org.gnome.calendar.@EnumName@">', + vprod: ' ', + vtail: ' ', + ftail: '', + install_header: true, + install_dir: calendar_schemadir +) + # Desktop files # Note: This name is registered in gcal-weather-service.c. desktop = 'org.gnome.Calendar.desktop' i18n.merge_file( - desktop, - type: 'desktop', - input: desktop + '.in', - output: desktop, - po_dir: po_dir, - install: true, + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, install_dir: join_paths(calendar_datadir, 'applications') ) @@ -27,7 +42,7 @@ schema_conf.set('GETTEXT_PACKAGE', meson.project_name()) schema = 'org.gnome.calendar.gschema.xml' -configure_file( +schema_xml = configure_file( input: schema + '.in', output: schema, install: true, @@ -35,6 +50,17 @@ configure_file( configuration: schema_conf ) +output = 'gschemas.compiled' + +# for unit tests - gnome.compile_schemas() only looks in srcdir +compiled_schemas = custom_target( + output, + input: schema_xml, + output: output, + command: [find_program('glib-compile-schemas'), meson.current_build_dir()], + depends: enums_xml +) + # DBus service files service_conf = configuration_data() service_conf.set('bindir', calendar_bindir) @@ -42,10 +68,10 @@ service_conf.set('bindir', calendar_bindir) service = 'org.gnome.Calendar.service' configure_file( - input: service + '.in', - output: service, - install: true, - install_dir: join_paths(calendar_datadir, 'dbus-1', 'services'), + input: service + '.in', + output: service, + install: true, + install_dir: join_paths(calendar_datadir, 'dbus-1', 'services'), configuration: service_conf ) diff --git a/meson.build b/meson.build index 4191c7be..fb1ea683 100644 --- a/meson.build +++ b/meson.build @@ -136,6 +136,7 @@ top_inc = include_directories('.') data_dir = join_paths(meson.source_root(), 'data') po_dir = join_paths(meson.source_root(), 'po') +src_dir = join_paths(meson.source_root(), 'src') ########### diff --git a/src/meson.build b/src/meson.build index 064fc93c..a02a6b83 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,7 +1,5 @@ src_inc = include_directories('.') -enum_headers = files('gcal-enums.h') - gcal_deps = [ gsettings_desktop_schemas_dep, libedataserverui_dep, @@ -56,19 +54,6 @@ sources = files( 'gcal-timer.c' ) -gnome.mkenums( - 'org.gnome.calendar.enums.xml', - sources: enum_headers, - comments: '', - fhead: '', - vhead: ' <@type@ id="org.gnome.calendar.@EnumName@">', - vprod: ' ', - vtail: ' ', - ftail: '', - install_header: true, - install_dir: calendar_schemadir -) - enum_types = 'gcal-enum-types' sources += gnome.mkenums( diff --git a/tests/meson.build b/tests/meson.build index 6d02aaec..c0ede244 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,19 +1,26 @@ -test_incs = [ - include_directories('.'), - src_inc -] - -tests_deps = gcal_deps + [ libgcal_dep ] +test_deps = gcal_deps + [ libgcal_dep ] ########### # Manager # ########### +test_env = [ + 'G_TEST_SRCDIR=' + meson.current_source_dir(), + 'G_TEST_BUILDDIR=' + meson.current_build_dir(), + 'GSETTINGS_SCHEMA_DIR=' + join_paths(meson.build_root(), 'data'), + 'GSETTINGS_BACKEND=memory', + 'MALLOC_CHECK_=2' +] + +test_cflags = '-DTEST_DATA_DIR="@0@"'.format(join_paths(meson.source_root(), 'data')) + +test_unit = 'test-manager' + test_manager = executable( - 'test-manager', - 'test-manager.c', - dependencies: tests_deps, - include_directories: test_incs + test_unit, + [test_unit + '.c', compiled_schemas], + c_args: test_cflags, + dependencies: test_deps ) -test('test-manager', test_manager) +test(test_unit, test_manager, env: test_env)