Commit ad664049 authored by Sam Thursfield's avatar Sam Thursfield

functional-tests: Don't depend on GSettings schemas from the host

If tracker-miners is configured with the `-Dtracker_core=subproject` option,
it should use GSettings schemas from the ./subprojects/tracker build
tree. We weren't doing that, which meant that if you ran `dnf remove
tracker` on your test image and then ran the test, you would see
failures like this in the functional-tests:

    (process:8450): GLib-GIO-ERROR **: 09:43:34.625: Settings schema 'org.freedesktop.Tracker.Store' is not installed

This fix is part of tracker#24
parent 2bd7592b
Pipeline #78846 failed with stage
in 43 seconds
......@@ -27,9 +27,34 @@ tracker_miners_settings_enums = custom_target('tracker-miners-common-settings-en
install: true,
install_dir: gsettings_schema_dir)
# for unit tests
# Compile schemas locally so that the functional-tests can use them without
# them being installed into /usr.
if get_option('tracker_core') == 'subproject'
# Here we do an ugly dance to place GSettings schemas from tracker
# and tracker-miners into the same directory. The `glib-compile-schemas`
# tool cannot combine schemas from multiple directories, and the
# GSETTINGS_SCHEMA_DIR environment variable cannot point to multiple
# directories, so this appears to be our only option.
foreach schema : tracker_gsettings_schemas
target = configure_file(
input: schema,
output: '@PLAINNAME@',
copy: true)
target = configure_file(
input: tracker_store_settings_enums.full_path(),
output: '@PLAINNAME@',
copy: true)
output: 'gschemas.compiled',
command: [find_program('glib-compile-schemas'), meson.current_build_dir()],
build_by_default: true,
depends: tracker_miners_settings_enums)
tracker_miners_uninstalled_gsettings_schema_dir = meson.current_build_dir()
......@@ -55,6 +55,9 @@ else
tracker_uninstalled_domain_rule = tracker_subproject.get_variable('tracker_uninstalled_domain_rule')
tracker_uninstalled_nepomuk_ontologies_dir = tracker_subproject.get_variable('tracker_uninstalled_nepomuk_ontologies_dir')
tracker_uninstalled_stop_words_dir = tracker_subproject.get_variable('tracker_uninstalled_stop_words_dir')
tracker_gsettings_schemas = tracker_subproject.get_variable('tracker_gsettings_schemas')
tracker_store_settings_enums = tracker_subproject.get_variable('tracker_store_settings_enums')
avcodec = dependency('libavcodec', version: '>= 0.8.4', required: false)
......@@ -69,7 +69,7 @@ tracker_extractors_dir = join_paths(meson.current_build_dir(), '..', '..', 'src'
test_env = environment()
test_env.set('DCONF_PROFILE', dconf_profile_full_path)
test_env.set('GSETTINGS_SCHEMA_DIR', join_paths(meson.build_root(), 'data'))
test_env.set('GSETTINGS_SCHEMA_DIR', tracker_miners_uninstalled_gsettings_schema_dir)
test_env.set('TRACKER_DB_ONTOLOGIES_DIR', tracker_uninstalled_nepomuk_ontologies_dir)
test_env.set('TRACKER_EXTRACTORS_DIR', tracker_extractors_dir)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment