[gnome-clocks/bilelmoussaoui/meson-cleanup] Meson: add tests to validate desktop, appdata & schemas



commit 8d5515e8428a7361b94ef8c4fc57baa7ac4a8cec
Author: Bilal Elmoussaoui <bil elmoussaoui gmail com>
Date:   Sun Sep 22 20:27:03 2019 +0200

    Meson: add tests to validate desktop, appdata & schemas
    
    This will allow force us to keep those files valid.

 .gitlab-ci.yml                                |  2 +-
 build-aux/{ => flatpak}/org.gnome.clocks.json |  0
 build-aux/{ => snap}/snapcraft.yaml           |  0
 data/meson.build                              | 53 ++++++++++++++++++++++-----
 meson_options.txt                             |  3 +-
 5 files changed, 47 insertions(+), 11 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2fa270a..6ea645c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -6,7 +6,7 @@ variables:
 flatpak:
     image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master'
     variables:
-        MANIFEST_PATH: "build-aux/org.gnome.clocks.json"
+        MANIFEST_PATH: "build-aux/flatpak/org.gnome.clocks.json"
         MESON_ARGS: "-Dprofile=development"
         FLATPAK_MODULE: "gnome-clocks"
         RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo";
diff --git a/build-aux/org.gnome.clocks.json b/build-aux/flatpak/org.gnome.clocks.json
similarity index 100%
rename from build-aux/org.gnome.clocks.json
rename to build-aux/flatpak/org.gnome.clocks.json
diff --git a/build-aux/snapcraft.yaml b/build-aux/snap/snapcraft.yaml
similarity index 100%
rename from build-aux/snapcraft.yaml
rename to build-aux/snap/snapcraft.yaml
diff --git a/data/meson.build b/data/meson.build
index edd4f85..1418d97 100644
--- a/data/meson.build
+++ b/data/meson.build
@@ -19,10 +19,10 @@ resources = gnome.compile_resources('org.gnome.clocks', resource_files,
 
 desktop_conf = configuration_data()
 desktop_conf.set('icon', app_id)
-custom_target('desktop-file',
+desktop_file = custom_target('desktop-file',
   input: configure_file(
     input: 'org.gnome.clocks.desktop.in.in',
-    output: 'org.gnome.clocks.desktop.in',
+    output: '@BASENAME@',
     configuration: desktop_conf
   ),
   output: '@0@.desktop'.format(app_id),
@@ -34,6 +34,18 @@ custom_target('desktop-file',
     '--keyword=Name', '--keyword=GenericName', '--keyword=Comment', '--keyword=Keywords'
   ]
 )
+# Validate Desktop file
+desktop_file_validate = find_program('desktop-file-validate', required: false)
+if desktop_file_validate.found()
+  test(
+    'validate-desktop',
+    desktop_file_validate,
+    args: [
+      desktop_file.full_path()
+    ]
+  )
+endif
+
 
 dbusconf = configuration_data()
 dbusconf.set('bindir', join_paths(get_option('prefix'), get_option('bindir')))
@@ -48,18 +60,29 @@ configure_file(
 
 appdata_conf = configuration_data()
 appdata_conf.set('appid', app_id)
-custom_target('appdata-file',
+appdata_file = i18n.merge_file (
   input: configure_file(
     input: 'org.gnome.clocks.appdata.xml.in.in',
-    output: 'org.gnome.clocks.appdata.xml.in',
-    configuration: appdata_conf,
+    output: '@BASENAME@',
+    configuration: appdata_conf
   ),
   output: '@0  appdata xml'.format(app_id),
+  po_dir: podir,
   install: true,
-  install_dir: join_paths(get_option('datadir'), 'metainfo'),
-  command: [msgfmt, '--xml', '--template', '@INPUT@', '-d', podir, '-o', '@OUTPUT@'],
+  install_dir: join_paths(get_option('datadir'), 'metainfo')
 )
 
+# Validate Appdata
+appstream_util = find_program('appstream-util', required: false)
+if appstream_util.found()
+  test(
+    'validate-appdata', appstream_util,
+    args: [
+      'validate', '--nonet', appdata_file.full_path()
+    ]
+  )
+endif
+
 search_conf = configuration_data()
 search_conf.set('appid', app_id)
 search_conf.set('profile', profile)
@@ -75,8 +98,20 @@ gsettingsconf = configuration_data()
 gsettingsconf.set('GETTEXT_PACKAGE', meson.project_name())
 configure_file(
   input: 'org.gnome.clocks.gschema.xml.in',
-  output: 'org.gnome.clocks.gschema.xml',
+  output: '@BASENAME@',
   configuration: gsettingsconf,
   install: true,
   install_dir: join_paths(get_option('datadir'), 'glib-2.0', 'schemas'),
-)
\ No newline at end of file
+)
+
+glib_compile_schemas = find_program('glib-compile-schemas', required: false)
+# Validata GSchema
+if glib_compile_schemas.found()
+  test(
+    'validate-gschema', glib_compile_schemas,
+    args: [
+      '--strict', '--dry-run', meson.current_source_dir()
+    ]
+  )
+endif
+
diff --git a/meson_options.txt b/meson_options.txt
index 7469421..3f62c34 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -5,5 +5,6 @@ option(
     'default',
     'development',
   ],
-  value: 'default'
+  value: 'default',
+  description: 'The build profile for Clock. One of "default" or "development".'
 )


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