[mutter/gbsneto/burn-autotools-with-fire: 1/6] Add Meson support for installed tests



commit 8c84f30dce905bc3b58867eb1fd856f821e33159
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Mon Dec 17 13:26:07 2018 -0200

    Add Meson support for installed tests
    
    This is the last remaining feature necessary to achieve
    parity with the Autotools build.
    
    A few changes were made to the install locations of the
    tests, in order to better acomodate them in Meson:
    
     * Tests are now installed under a versioned folder (e.g.
       /usr/share/installed-tests/mutter-4)
    
     * The mutter-cogl.test file is now generated from an .in
       file, instead of a series of $(echo)s from within Makefile.
    
    Notice that those tests need very controlled environments
    to run correctly. Mutter installed tests, for example, will
    failed when running under a regular session due to D-Bus
    failing to acquire the ScreenCast and/or RemoteScreen names.

 cogl/tests/conform/meson.build         | 24 ++++++++++++++++++++++--
 cogl/tests/conform/mutter-cogl.test.in |  4 ++++
 cogl/tests/meson.build                 | 12 +++++++++++-
 meson.build                            |  1 +
 meson_options.txt                      |  6 ++++++
 src/tests/meson.build                  | 33 +++++++++++++++++++++++++++++----
 src/tests/mutter-all.test.in           |  2 +-
 7 files changed, 74 insertions(+), 8 deletions(-)
---
diff --git a/cogl/tests/conform/meson.build b/cogl/tests/conform/meson.build
index 4427851b7..83da152a4 100644
--- a/cogl/tests/conform/meson.build
+++ b/cogl/tests/conform/meson.build
@@ -69,6 +69,23 @@ cogl_test_conformance_includes = [
   cogl_test_fixtures_includepath,
 ]
 
+if have_installed_tests
+  cogl_installed_tests_datadir = join_paths(
+    datadir, 'installed-tests', libmutter_name)
+
+  cogl_installed_tests_cdata = configuration_data()
+  cogl_installed_tests_cdata.set('libexecdir', libexecdir)
+  cogl_installed_tests_cdata.set('apiversion', libmutter_api_version)
+
+  configure_file(
+    input: 'mutter-cogl.test.in',
+    output: 'mutter-cogl.test',
+    configuration: cogl_installed_tests_cdata,
+    install: true,
+    install_dir: cogl_installed_tests_datadir,
+  )
+endif
+
 libmutter_cogl_test_conformance = executable('test-conformance',
   sources: cogl_test_conformance_sources,
   c_args: cogl_debug_c_args + [
@@ -84,7 +101,9 @@ libmutter_cogl_test_conformance = executable('test-conformance',
     libmutter_cogl_path_dep,
     libmutter_cogl_test_fixtures_dep,
   ],
-  install: false,
+  install: have_installed_tests,
+  install_dir: cogl_installed_tests_dir,
+  install_rpath: pkglibdir,
 )
 
 find_unit_tests = find_program('meson/find-conform-unit-tests.sh')
@@ -92,7 +111,8 @@ cogl_conform_unit_tests = custom_target('cogl-tests-conform-unit-tests',
   output: 'unit-tests',
   input: 'test-conform-main.c',
   command: [find_unit_tests, '@INPUT@', '@OUTPUT@'],
-  install: false,
+  install: have_installed_tests,
+  install_dir: cogl_installed_tests_dir,
 )
 
 test('cogl/conform', cogl_run_tests,
diff --git a/cogl/tests/conform/mutter-cogl.test.in b/cogl/tests/conform/mutter-cogl.test.in
new file mode 100644
index 000000000..d7c85ede2
--- /dev/null
+++ b/cogl/tests/conform/mutter-cogl.test.in
@@ -0,0 +1,4 @@
+[Test]
+Type=session
+TestEnvironment=COGL_TEST_VERBOSE=1
+Exec=sh -c "cd @libexecdir@/installed-tests/mutter-@apiversion@/cogl/conform; ./run-tests.sh ./config.env 
./test-conformance ./unit-tests"
diff --git a/cogl/tests/meson.build b/cogl/tests/meson.build
index e5b85bbfc..2a149a014 100644
--- a/cogl/tests/meson.build
+++ b/cogl/tests/meson.build
@@ -4,10 +4,20 @@ cdata = configuration_data()
 cdata.set('HAVE_GL', have_gl.to_int())
 cdata.set('HAVE_GLES2', have_gles2.to_int())
 
+cogl_installed_tests_dir = join_paths(
+  libexecdir, 'installed-tests', libmutter_name, 'cogl', 'conform')
+
+if have_installed_tests
+  install_data('run-tests.sh', install_dir: cogl_installed_tests_dir)
+endif
+
 cogl_config_env = configure_file(
   input: 'config.env.in',
   output: 'config.env',
-  configuration: cdata)
+  configuration: cdata,
+  install: have_installed_tests,
+  install_dir: cogl_installed_tests_dir,
+)
 
 subdir('conform')
 subdir('unit')
diff --git a/meson.build b/meson.build
index 9c6350c6b..c88423622 100644
--- a/meson.build
+++ b/meson.build
@@ -239,6 +239,7 @@ endif
 
 have_cogl_tests = get_option('cogl_tests')
 have_clutter_tests = get_option('clutter_tests')
+have_installed_tests = get_option('installed_tests')
 
 have_tests = get_option('tests')
 if have_tests
diff --git a/meson_options.txt b/meson_options.txt
index a0924faf1..7626661d1 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -123,6 +123,12 @@ option('tests',
   description: 'Enable mutter tests'
 )
 
+option('installed_tests',
+  type: 'boolean',
+  value: true,
+  description: 'Enable mutter installed tests'
+)
+
 option('verbose',
   type: 'boolean',
   value: true,
diff --git a/src/tests/meson.build b/src/tests/meson.build
index 90620ab4a..af59723e7 100644
--- a/src/tests/meson.build
+++ b/src/tests/meson.build
@@ -10,6 +10,27 @@ tests_deps = [
   libmutter_clutter_dep,
 ]
 
+installed_tests_bindir = join_paths(libexecdir, 'installed-tests', libmutter_name)
+
+if have_installed_tests
+  installed_tests_datadir = join_paths(datadir, 'installed-tests', libmutter_name)
+  stacking_files_datadir = join_paths(pkgdatadir, 'tests')
+
+  installed_tests_cdata = configuration_data()
+  installed_tests_cdata.set('libexecdir', libexecdir)
+  installed_tests_cdata.set('apiversion', libmutter_api_version)
+
+  configure_file(
+    input: 'mutter-all.test.in',
+    output: 'mutter-all.test',
+    configuration: installed_tests_cdata,
+    install: true,
+    install_dir: installed_tests_datadir,
+  )
+
+  install_subdir('stacking', install_dir: stacking_files_datadir)
+endif
+
 test_env = environment()
 test_env.set('G_TEST_SRCDIR', join_paths(top_srcdir, 'src'))
 test_env.set('G_TEST_BUILDDIR', builddir)
@@ -24,7 +45,8 @@ test_client = executable('mutter-test-client',
     gio_unix_dep,
     xext_dep,
   ],
-  install: false,
+  install: have_installed_tests,
+  install_dir: installed_tests_bindir,
 )
 
 test_runner = executable('mutter-test-runner',
@@ -36,7 +58,8 @@ test_runner = executable('mutter-test-runner',
   include_directories: tests_includepath,
   c_args: tests_c_args,
   dependencies: [tests_deps],
-  install: false,
+  install: have_installed_tests,
+  install_dir: installed_tests_bindir,
 )
 
 unit_tests = executable('mutter-test-unit-tests',
@@ -62,7 +85,8 @@ unit_tests = executable('mutter-test-unit-tests',
   include_directories: tests_includepath,
   c_args: tests_c_args,
   dependencies: [tests_deps],
-  install: false,
+  install: have_installed_tests,
+  install_dir: installed_tests_bindir,
 )
 
 headless_start_test = executable('mutter-headless-start-test',
@@ -78,7 +102,8 @@ headless_start_test = executable('mutter-headless-start-test',
   include_directories: tests_includepath,
   c_args: tests_c_args,
   dependencies: [tests_deps],
-  install: false,
+  install: have_installed_tests,
+  install_dir: installed_tests_bindir,
 )
 
 stacking_tests = files([
diff --git a/src/tests/mutter-all.test.in b/src/tests/mutter-all.test.in
index 679468a6e..3078ff67e 100644
--- a/src/tests/mutter-all.test.in
+++ b/src/tests/mutter-all.test.in
@@ -1,5 +1,5 @@
 [Test]
 Description=All Mutter tests
-Exec=@libexecdir@/installed-tests/mutter/mutter-test-runner --all
+Exec=@libexecdir@/installed-tests/mutter-@apiversion@/mutter-test-runner --all
 Type=session
 Output=TAP


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