[tracker/sam/tracker-test-dbus-services: 1/2] tests: Don't depend on installed service file



commit fc09a26b59570254f2eb7dc5843f4a5372b96e56
Author: Andrea Azzarone <andrea azzarone canonical com>
Date:   Fri Dec 14 15:50:25 2018 +0000

    tests: Don't depend on installed service file
    
    Run dbus-run-session with the --config-file parameter in order to allow to run
    tests without installing tracker before.
    
    Closes: https://gitlab.gnome.org/GNOME/tracker/issues/24

 .gitlab-ci.yml                                     |  2 +-
 meson.build                                        |  2 ++
 tests/functional-tests/meson.build                 |  6 ++++-
 .../{test-runner.sh => test-runner.sh.in}          |  4 +--
 tests/gvdb/meson.build                             |  5 +++-
 tests/libtracker-common/meson.build                |  5 +++-
 tests/libtracker-data/meson.build                  | 18 ++++++-------
 tests/libtracker-fts/meson.build                   |  9 +++----
 tests/libtracker-miner/meson.build                 | 18 ++++++-------
 tests/libtracker-sparql/meson.build                | 12 ++++-----
 tests/meson.build                                  | 31 ++++++++++++++++++++++
 tests/services/meson.build                         |  4 +++
 tests/services/org.freedesktop.Tracker1.service.in |  4 +++
 tests/test-bus.conf.in                             | 20 ++++++++++++++
 tests/tracker-steroids/meson.build                 |  5 +++-
 15 files changed, 108 insertions(+), 37 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 84f040af3..028768279 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,7 +15,7 @@ test-fedora-latest:
       # screenful of junk each time unless we strip these.
       unset $(env|grep -o '^CI_[^=]*')
 
-      su tracker -c 'cd build; dbus-run-session -- env LANG=en_US.UTF8 meson test --print-errorlogs'
+      su tracker -c 'cd build; meson test --print-errorlogs'
 
   artifacts:
     when: always
diff --git a/meson.build b/meson.build
index b0b6b4d98..4a0452b30 100644
--- a/meson.build
+++ b/meson.build
@@ -270,6 +270,7 @@ conf.set('TRACKER_INTERFACE_AGE', 0)
 conf.set('TRACKER_BINARY_AGE', 100 * tracker_minor_version + tracker_micro_version)
 
 # Config that goes in some other generated files (.desktop, .pc, etc)
+conf.set('abs_top_builddir', meson.current_build_dir())
 conf.set('exec_prefix', get_option('prefix'))
 conf.set('bindir', join_paths(get_option('prefix'), get_option('bindir')))
 conf.set('datadir', datadir)
@@ -331,6 +332,7 @@ vapi_dir = join_paths(get_option('prefix'), get_option('datadir'), 'vala', 'vapi
 glib_mkenums = find_program('glib-mkenums')
 g_ir_compiler = find_program('g-ir-compiler', gobject_introspection.get_pkgconfig_variable('g_ir_compiler'))
 g_ir_merge = find_program('g-ir-merge', join_paths(meson.current_source_dir(), 'utils', 'g-ir-merge', 
'g-ir-merge'))
+dbus_run_session = find_program('dbus-run-session')
 
 gir_dir = gobject_introspection.get_pkgconfig_variable('girdir',
                                                        define_variable:  [ 'datadir', datadir ])
diff --git a/tests/functional-tests/meson.build b/tests/functional-tests/meson.build
index eb8b5a5e0..274c88abf 100644
--- a/tests/functional-tests/meson.build
+++ b/tests/functional-tests/meson.build
@@ -1,4 +1,8 @@
-test_runner = find_program('test-runner.sh')
+test_runner = configure_file(
+    input: 'test-runner.sh.in',
+    output: 'test-runner.sh',
+    configuration: conf)
+test_runner = find_program(test_runner)
 
 config_json = configure_file(
   input: 'configuration.json.in',
diff --git a/tests/functional-tests/test-runner.sh b/tests/functional-tests/test-runner.sh.in
similarity index 84%
rename from tests/functional-tests/test-runner.sh
rename to tests/functional-tests/test-runner.sh.in
index fe6919c0c..6e295aec6 100755
--- a/tests/functional-tests/test-runner.sh
+++ b/tests/functional-tests/test-runner.sh.in
@@ -4,8 +4,6 @@
 
 set -e
 
-SCRIPT=$1
-
 export TEMP_DIR=`mktemp --tmpdir -d tracker-test-XXXX`
 
 # We need to use the actual home directory for some tests because
@@ -17,6 +15,6 @@ export REAL_HOME=`echo ~`
 HOME=$TEMP_DIR
 
 echo "Running $@"
-dbus-run-session -- "$@"
+dbus-run-session --config-file=@abs_top_builddir@/tests/test-bus.conf -- "$@"
 
 rm -R $TEMP_DIR
diff --git a/tests/gvdb/meson.build b/tests/gvdb/meson.build
index 89ab72575..5d8fcf948 100644
--- a/tests/gvdb/meson.build
+++ b/tests/gvdb/meson.build
@@ -4,4 +4,7 @@ gvdb_test = executable('gvdb-test',
     include_directories: configinc,
 )
 
-test('gvdb', gvdb_test)
+tests += {
+  'name': 'gvdb',
+  'exe': gvdb_test,
+}
diff --git a/tests/libtracker-common/meson.build b/tests/libtracker-common/meson.build
index d11f5ba46..55b7ada50 100644
--- a/tests/libtracker-common/meson.build
+++ b/tests/libtracker-common/meson.build
@@ -20,7 +20,10 @@ foreach base_name: libtracker_common_tests
       dependencies: libtracker_common_test_deps,
       c_args: test_c_args)
 
-    test(test_name, binary)
+    tests += {
+        'name': test_name,
+        'exe': binary
+    }
 endforeach
 
 # This is a manual test case
diff --git a/tests/libtracker-data/meson.build b/tests/libtracker-data/meson.build
index 7e87c09c9..fcbe8c091 100644
--- a/tests/libtracker-data/meson.build
+++ b/tests/libtracker-data/meson.build
@@ -11,10 +11,6 @@ libtracker_data_slow_tests = [
     'sparql'
 ]
 
-libtracker_data_test_environment = environment()
-libtracker_data_test_environment.set('TRACKER_LANGUAGE_STOP_WORDS_DIR', 
'@0@/src/libtracker-common/stop-words'.format(source_root))
-libtracker_data_test_environment.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
-
 libtracker_data_test_deps = [tracker_common_dep, tracker_data_dep, tracker_sparql_dep]
 
 foreach base_name: libtracker_data_tests
@@ -26,8 +22,10 @@ foreach base_name: libtracker_data_tests
       dependencies: libtracker_data_test_deps,
       c_args: test_c_args)
 
-    test(test_name, binary,
-      env: libtracker_data_test_environment)
+    tests += {
+      'name': test_name,
+      'exe': binary
+    }
 endforeach
 
 foreach base_name: libtracker_data_slow_tests
@@ -39,7 +37,9 @@ foreach base_name: libtracker_data_slow_tests
       dependencies: libtracker_data_test_deps,
       c_args: test_c_args)
 
-    test(test_name, binary,
-      timeout: 180,
-      env: libtracker_data_test_environment)
+      tests += {
+        'name': test_name,
+        'exe': binary,
+        'timeout': 180
+    }
 endforeach
diff --git a/tests/libtracker-fts/meson.build b/tests/libtracker-fts/meson.build
index 69f141cf9..e851d7abe 100644
--- a/tests/libtracker-fts/meson.build
+++ b/tests/libtracker-fts/meson.build
@@ -1,11 +1,10 @@
-libtracker_fts_test_environment = environment()
-libtracker_fts_test_environment.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
-
 fts_test = executable('tracker-fts-test',
   'tracker-fts-test.c',
   dependencies: [tracker_common_dep, tracker_sparql_dep, tracker_data_dep, tracker_testcommon_dep],
   c_args: test_c_args
 )
 
-test('fts', fts_test,
-  env: libtracker_fts_test_environment)
+tests += {
+  'name': 'fts',
+  'exe': fts_test
+}
diff --git a/tests/libtracker-miner/meson.build b/tests/libtracker-miner/meson.build
index c0b055c6b..0e03c6787 100644
--- a/tests/libtracker-miner/meson.build
+++ b/tests/libtracker-miner/meson.build
@@ -22,10 +22,6 @@ libtracker_miner_test_c_args = [
   '-DTEST_ONTOLOGIES_DIR="@0@/src/ontologies/nepomuk"'.format(source_root),
 ]
 
-libtracker_miner_test_environment = environment()
-libtracker_miner_test_environment.set('TRACKER_LANGUAGE_STOP_WORDS_DIR', 
'@0@/src/libtracker-common/stop-words'.format(source_root))
-libtracker_miner_test_environment.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
-
 libtracker_miner_test_deps = [tracker_common_dep, tracker_miner_dep, tracker_sparql_dep]
 
 foreach base_name: libtracker_miner_tests
@@ -38,8 +34,10 @@ foreach base_name: libtracker_miner_tests
       c_args: libtracker_miner_test_c_args,
       link_with: [libtracker_miner_private])
 
-    test(test_name, binary,
-      env: libtracker_miner_test_environment)
+    tests += {
+      'name': test_name,
+      'exe': binary
+    }
 endforeach
 
 foreach base_name: libtracker_miner_slow_tests
@@ -52,7 +50,9 @@ foreach base_name: libtracker_miner_slow_tests
       c_args: libtracker_miner_test_c_args,
       link_with: [libtracker_miner_private])
 
-    test(test_name, binary,
-      env: libtracker_miner_test_environment,
-      timeout: 180)
+    tests += {
+      'name': test_name,
+      'exe': binary,
+      'timeout': 180
+    }
 endforeach
diff --git a/tests/libtracker-sparql/meson.build b/tests/libtracker-sparql/meson.build
index 548cead7f..6c742d8d4 100644
--- a/tests/libtracker-sparql/meson.build
+++ b/tests/libtracker-sparql/meson.build
@@ -13,10 +13,6 @@ libtracker_sparql_test_deps = [
     tracker_common_dep, tracker_sparql_dep
 ]
 
-libtracker_sparql_test_environment = environment()
-libtracker_sparql_test_environment.set('TRACKER_LANGUAGE_STOP_WORDS_DIR', 
'@0@/src/libtracker-common/stop-words'.format(source_root))
-libtracker_sparql_test_environment.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
-
 foreach base_name: libtracker_sparql_tests
     source = 'tracker-@0@-test.c'.format(base_name)
     binary_name = 'tracker-@0@-test'.format(base_name)
@@ -26,6 +22,10 @@ foreach base_name: libtracker_sparql_tests
       dependencies: libtracker_sparql_test_deps,
       c_args: libtracker_sparql_test_c_args)
 
-    test(test_name, binary,
-      env: libtracker_sparql_test_environment)
+    tests += {
+      'name': test_name,
+      'exe': binary,
+      'is_parallel': false
+    }
+    [[test_name, binary]]
 endforeach
diff --git a/tests/meson.build b/tests/meson.build
index e3bdea8e8..85f4bc333 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,3 +1,5 @@
+tests = []
+
 subdir('common')
 
 subdir('gvdb')
@@ -15,3 +17,32 @@ subdir('tracker-steroids')
 if get_option('functional_tests')
   subdir('functional-tests')
 endif
+
+subdir('services')
+
+test_bus_conf_file = configure_file(
+  input: 'test-bus.conf.in',
+  output: 'test-bus.conf',
+  configuration: conf)
+
+foreach t: tests
+  test_name = t.get('name')
+  test_exe = t.get('exe')
+  test_timeout = t.get('timeout', 30)
+  test_is_parallel = t.get('is_parallel', true)
+
+  test_env = environment()
+  test_env.set('GSETTINGS_SCHEMA_DIR', join_paths(build_root, 'data'))
+  test_env.set('TRACKER_LANGUAGE_STOP_WORDS_DIR', join_paths(source_root, 'src', 'libtracker-common', 
'stop-words'))
+  test_env.set('TRACKER_TEST_DOMAIN_ONTOLOGY_RULE', join_paths(source_root, 'src', 'tracker-store', 
'default.rule'))
+  test_env.set('TRACKER_DB_ONTOLOGIES_DIR', join_paths(source_root, 'src', 'ontologies', 'nepomuk'))
+  test_env.set('LANG', 'en_US.UTF8')
+
+  test (test_name, dbus_run_session,
+    env: test_env,
+    args: ['--config-file=@0@'.format(join_paths(meson.current_build_dir(), 'test-bus.conf')),
+           '--',
+           test_exe],
+    timeout: test_timeout,
+    is_parallel: test_is_parallel)
+endforeach
diff --git a/tests/services/meson.build b/tests/services/meson.build
new file mode 100644
index 000000000..182ba1e74
--- /dev/null
+++ b/tests/services/meson.build
@@ -0,0 +1,4 @@
+test_dbus_service_file = configure_file(
+    input: 'org.freedesktop.Tracker1.service.in',
+    output: 'org.freedesktop.Tracker1.service',
+    configuration: conf)
diff --git a/tests/services/org.freedesktop.Tracker1.service.in 
b/tests/services/org.freedesktop.Tracker1.service.in
new file mode 100644
index 000000000..646282c1f
--- /dev/null
+++ b/tests/services/org.freedesktop.Tracker1.service.in
@@ -0,0 +1,4 @@
+[D-BUS Service]
+Name=org.freedesktop.Tracker1
+Exec=@abs_top_builddir@/src/tracker-store/tracker-store
+SystemdService=tracker-store.service
diff --git a/tests/test-bus.conf.in b/tests/test-bus.conf.in
new file mode 100644
index 000000000..5b4f51ff9
--- /dev/null
+++ b/tests/test-bus.conf.in
@@ -0,0 +1,20 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd";>
+<busconfig>
+  <!-- Our well-known bus type, don't change this -->
+  <type>session</type>
+
+  <listen>unix:tmpdir=./</listen>
+
+  <servicedir>@abs_top_builddir@/tests/services/</servicedir>
+
+  <policy context="default">
+    <!-- Allow everything to be sent -->
+    <allow send_destination="*"/>
+    <!-- Allow everything to be received -->
+    <allow eavesdrop="true"/>
+    <!-- Allow anyone to own anything -->
+    <allow own="*"/>
+  </policy>
+
+</busconfig>
diff --git a/tests/tracker-steroids/meson.build b/tests/tracker-steroids/meson.build
index 1330fe3d6..79ae8bf30 100644
--- a/tests/tracker-steroids/meson.build
+++ b/tests/tracker-steroids/meson.build
@@ -7,4 +7,7 @@ steroids_test = executable('tracker-steroids-test',
   'tracker-test.c',
   dependencies: [tracker_common_dep, tracker_sparql_dep],
   c_args: [tracker_c_args, test_c_args])
-test('steroids', steroids_test)
+tests += {
+  'name': 'steroids',
+  'exe': steroids_test
+}


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