[gnome-calendar] tests: Fix GCalManager test



commit 11fb4717a26fa036af5ef8e3c7891cedc1b75ead
Author: Iñigo Martínez <inigomartinez gmail com>
Date:   Mon Oct 2 17:59:54 2017 +0200

    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 <sadiq sadiqpk org>

 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: '<!-- @comment@ -->',
+           fhead: '<schemalist>',
+           vhead: '  <@type@ id="org.gnome.calendar.@EnumName@">',
+           vprod: '    <value nick="@valuenick@" value="@valuenum@"/>',
+           vtail: '  </@type@>',
+           ftail: '</schemalist>',
+  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: '<!-- @comment@ -->',
-           fhead: '<schemalist>',
-           vhead: '  <@type@ id="org.gnome.calendar.@EnumName@">',
-           vprod: '    <value nick="@valuenick@" value="@valuenum@"/>',
-           vtail: '  </@type@>',
-           ftail: '</schemalist>',
-  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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]