[tracker-miners/sam/meson-subproject: 4/6] Allow running the functional tests without installing them



commit d112ca8f3818465496323c823cbdee81c16d6598
Author: Sam Thursfield <sam thursfield codethink co uk>
Date:   Wed Nov 1 12:13:54 2017 +0000

    Allow running the functional tests without installing them
    
    This is needed so that `meson test` passes, which in turn is needed if
    we want to use `meson dist` to make releases.
    
    This involves some hackery of course, but it seems to work.

 tests/functional-tests/01-insertion.py             |    2 +-
 tests/functional-tests/02-sparql-bugs.py           |    2 +-
 tests/functional-tests/04-group-concat.py          |    2 +-
 tests/functional-tests/05-coalesce.py              |    2 +-
 tests/functional-tests/06-distance.py              |    2 +-
 tests/functional-tests/07-graph.py                 |    2 +-
 tests/functional-tests/08-unique-insertions.py     |    2 +-
 tests/functional-tests/09-concurrent-query.py      |    2 +-
 tests/functional-tests/12-transactions.py          |    2 +-
 tests/functional-tests/13-threaded-store.py        |    2 +-
 tests/functional-tests/14-signals.py               |    2 +-
 tests/functional-tests/15-statistics.py            |    2 +-
 tests/functional-tests/16-collation.py             |    2 +-
 tests/functional-tests/17-ontology-changes.py      |    2 +-
 tests/functional-tests/200-backup-restore.py       |    2 +-
 .../functional-tests/301-miner-resource-removal.py |    2 +-
 tests/functional-tests/400-extractor-metadata.py   |    2 +-
 tests/functional-tests/601-applications-sync.py    |    2 +-
 tests/functional-tests/common/utils/.gitignore     |    1 -
 .../common/utils/applicationstest.py               |    2 +-
 .../common/utils/configuration.py.in               |   95 --------------------
 tests/functional-tests/common/utils/extractor.py   |    2 +-
 tests/functional-tests/common/utils/helpers.py     |   19 ++++-
 tests/functional-tests/common/utils/minertest.py   |    2 +-
 tests/functional-tests/common/utils/storetest.py   |    2 +-
 tests/functional-tests/common/utils/system.py      |    3 +-
 .../functional-tests/common/utils/writebacktest.py |    2 +-
 tests/functional-tests/configuration/meson.build   |    5 +
 tests/functional-tests/meson.build                 |   13 +++
 29 files changed, 60 insertions(+), 122 deletions(-)
---
diff --git a/tests/functional-tests/01-insertion.py b/tests/functional-tests/01-insertion.py
index dba85a4..e51f7dd 100755
--- a/tests/functional-tests/01-insertion.py
+++ b/tests/functional-tests/01-insertion.py
@@ -29,7 +29,7 @@ import random
 import string
 import datetime
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/02-sparql-bugs.py b/tests/functional-tests/02-sparql-bugs.py
index f4f541e..7e0ea85 100755
--- a/tests/functional-tests/02-sparql-bugs.py
+++ b/tests/functional-tests/02-sparql-bugs.py
@@ -31,7 +31,7 @@ import random
 import string
 import datetime
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/04-group-concat.py b/tests/functional-tests/04-group-concat.py
index 5d9bcd1..5eb9414 100755
--- a/tests/functional-tests/04-group-concat.py
+++ b/tests/functional-tests/04-group-concat.py
@@ -23,7 +23,7 @@ Test the GROUP_CONCAT function in Sparql. Only requires the store.
 import unittest
 import random
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/05-coalesce.py b/tests/functional-tests/05-coalesce.py
index 6463cbd..60187a7 100755
--- a/tests/functional-tests/05-coalesce.py
+++ b/tests/functional-tests/05-coalesce.py
@@ -24,7 +24,7 @@ import unittest
 import random
 
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/06-distance.py b/tests/functional-tests/06-distance.py
index 04239fb..503cb73 100755
--- a/tests/functional-tests/06-distance.py
+++ b/tests/functional-tests/06-distance.py
@@ -23,7 +23,7 @@ Test the distance-calculation functions in Sparql. Only requires the Store
 import unittest
 import random
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/07-graph.py b/tests/functional-tests/07-graph.py
index 3999977..a572309 100755
--- a/tests/functional-tests/07-graph.py
+++ b/tests/functional-tests/07-graph.py
@@ -23,7 +23,7 @@ Tests graphs in Sparql. Only requires the store.
 import unittest
 import random
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/08-unique-insertions.py b/tests/functional-tests/08-unique-insertions.py
index 04909a4..ba84f56 100755
--- a/tests/functional-tests/08-unique-insertions.py
+++ b/tests/functional-tests/08-unique-insertions.py
@@ -23,7 +23,7 @@ Replicate the behaviour of the miner inserting information in the store.
 import unittest
 import random
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/09-concurrent-query.py b/tests/functional-tests/09-concurrent-query.py
index 53352bf..1520cc3 100755
--- a/tests/functional-tests/09-concurrent-query.py
+++ b/tests/functional-tests/09-concurrent-query.py
@@ -28,7 +28,7 @@ import commands
 import signal
 from gi.repository import GObject
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/12-transactions.py b/tests/functional-tests/12-transactions.py
index a3c19f4..82b562c 100755
--- a/tests/functional-tests/12-transactions.py
+++ b/tests/functional-tests/12-transactions.py
@@ -22,7 +22,7 @@ Make sure that when COMMIT returns, the data is in the DB
 """
 import time
 
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.helpers import StoreHelper as StoreHelper
 import unittest2 as ut
 #import unittest as ut
diff --git a/tests/functional-tests/13-threaded-store.py b/tests/functional-tests/13-threaded-store.py
index 32c2c44..61d4674 100755
--- a/tests/functional-tests/13-threaded-store.py
+++ b/tests/functional-tests/13-threaded-store.py
@@ -27,7 +27,7 @@ from gi.repository import GLib
 import time
 from dbus.mainloop.glib import DBusGMainLoop
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/14-signals.py b/tests/functional-tests/14-signals.py
index 6524f7b..ec68142 100755
--- a/tests/functional-tests/14-signals.py
+++ b/tests/functional-tests/14-signals.py
@@ -25,7 +25,7 @@ are tested)
 
 import unittest2 as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
-from common.utils import configuration as cfg
+import configuration as cfg
 
 from gi.repository import Gio
 from gi.repository import GObject
diff --git a/tests/functional-tests/15-statistics.py b/tests/functional-tests/15-statistics.py
index 89efc3d..7008df3 100755
--- a/tests/functional-tests/15-statistics.py
+++ b/tests/functional-tests/15-statistics.py
@@ -24,7 +24,7 @@ are updated when different operations are executed on the store
 """
 import time
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/16-collation.py b/tests/functional-tests/16-collation.py
index 1d2dff2..e78c7cf 100755
--- a/tests/functional-tests/16-collation.py
+++ b/tests/functional-tests/16-collation.py
@@ -26,7 +26,7 @@ import time
 import random
 import locale
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
diff --git a/tests/functional-tests/17-ontology-changes.py b/tests/functional-tests/17-ontology-changes.py
index 8665a5d..8ef26b6 100755
--- a/tests/functional-tests/17-ontology-changes.py
+++ b/tests/functional-tests/17-ontology-changes.py
@@ -28,7 +28,7 @@ from gi.repository import GLib
 import time
 
 import os
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 #import unittest as ut
 from common.utils.system import TrackerSystemAbstraction as TrackerSystemAbstraction
diff --git a/tests/functional-tests/200-backup-restore.py b/tests/functional-tests/200-backup-restore.py
index cbbb06e..6922ea6 100755
--- a/tests/functional-tests/200-backup-restore.py
+++ b/tests/functional-tests/200-backup-restore.py
@@ -23,7 +23,7 @@ import os
 
 from common.utils.system import TrackerSystemAbstraction
 from common.utils.helpers import StoreHelper
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.storetest import CommonTrackerStoreTest as CommonTrackerStoreTest
 from common.utils.expectedFailure import expectedFailureBug, expectedFailureJournal
 import unittest2 as ut
diff --git a/tests/functional-tests/301-miner-resource-removal.py 
b/tests/functional-tests/301-miner-resource-removal.py
index 9c2acbc..4fe6fac 100755
--- a/tests/functional-tests/301-miner-resource-removal.py
+++ b/tests/functional-tests/301-miner-resource-removal.py
@@ -22,7 +22,7 @@ Test that resource removal does not leave debris or clobber too much,
 especially in the case where nie:InformationElement != nie:DataObject
 """
 
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.minertest import CommonTrackerMinerTest, path, uri
 
 from gi.repository import GLib
diff --git a/tests/functional-tests/400-extractor-metadata.py 
b/tests/functional-tests/400-extractor-metadata.py
index fc1604e..40ac619 100755
--- a/tests/functional-tests/400-extractor-metadata.py
+++ b/tests/functional-tests/400-extractor-metadata.py
@@ -23,7 +23,7 @@ metadata is extracted. Load dynamically the test information from a data
 directory (containing xxx.expected files)
 """
 
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.extractor import get_tracker_extract_output
 import unittest2 as ut
 import os
diff --git a/tests/functional-tests/601-applications-sync.py b/tests/functional-tests/601-applications-sync.py
index 2b32a72..dd8d204 100755
--- a/tests/functional-tests/601-applications-sync.py
+++ b/tests/functional-tests/601-applications-sync.py
@@ -31,7 +31,7 @@ import datetime
 import shutil
 import fcntl
 
-from common.utils import configuration as cfg
+import configuration as cfg
 import unittest2 as ut
 from common.utils.applicationstest import CommonTrackerApplicationTest as CommonTrackerApplicationTest
 from common.utils.helpers import log
diff --git a/tests/functional-tests/common/utils/applicationstest.py 
b/tests/functional-tests/common/utils/applicationstest.py
index 72a8b84..91320b7 100644
--- a/tests/functional-tests/common/utils/applicationstest.py
+++ b/tests/functional-tests/common/utils/applicationstest.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301, USA.
 #
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.system import TrackerSystemAbstraction
 from common.utils.helpers import log
 import unittest2 as ut
diff --git a/tests/functional-tests/common/utils/extractor.py 
b/tests/functional-tests/common/utils/extractor.py
index 8dd0560..e225071 100644
--- a/tests/functional-tests/common/utils/extractor.py
+++ b/tests/functional-tests/common/utils/extractor.py
@@ -18,7 +18,7 @@
 # 02110-1301, USA.
 #
 
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.helpers import log
 import os
 import re
diff --git a/tests/functional-tests/common/utils/helpers.py b/tests/functional-tests/common/utils/helpers.py
index 23394f3..4c738bd 100644
--- a/tests/functional-tests/common/utils/helpers.py
+++ b/tests/functional-tests/common/utils/helpers.py
@@ -32,6 +32,8 @@ import options
 class NoMetadataException (Exception):
     pass
 
+BUILD_DIR = os.environ.get('TRACKER_FUNCTIONAL_TEST_BUILD_DIR')
+
 REASONABLE_TIMEOUT = 30
 
 def log (message):
@@ -93,7 +95,11 @@ class Helper:
 
         command = [path] + flags
         log ("Starting %s" % ' '.join(command))
-        return subprocess.Popen ([path] + flags, **kws)
+        try:
+            process = subprocess.Popen (command, **kws)
+        except OSError as e:
+            raise RuntimeError("Unable to start %s: %s" % (' '.join(command), e))
+        return process
 
     def _bus_name_appeared(self, name, owner, data):
         log ("[%s] appeared in the bus as %s" % (self.PROCESS_NAME, owner))
@@ -214,6 +220,11 @@ class StoreHelper (Helper):
     PROCESS_NAME = "tracker-store"
     BUS_NAME = cfg.TRACKER_BUSNAME
 
+    if BUILD_DIR:
+        PROCESS_PATH = os.path.join (BUILD_DIR, "subprojects", "tracker", "src", "tracker-store", 
"tracker-store")
+    else:
+        PROCESS_PATH = os.path.join (cfg.EXEC_PREFIX, "tracker-store")
+
     graph_updated_handler_id = 0
 
     def start (self):
@@ -542,11 +553,15 @@ class StoreHelper (Helper):
 class MinerFsHelper (Helper):
 
     PROCESS_NAME = 'tracker-miner-fs'
-    PROCESS_PATH = os.path.join (cfg.EXEC_PREFIX, "tracker-miner-fs")
     BUS_NAME = cfg.MINERFS_BUSNAME
 
     FLAGS = ['--initial-sleep=0']
 
+    if BUILD_DIR:
+        PROCESS_PATH = os.path.join (BUILD_DIR, "src", "miners", "fs", "tracker-miner-fs")
+    else:
+        PROCESS_PATH = os.path.join (cfg.EXEC_PREFIX, "tracker-miner-fs")
+
     def start (self):
         Helper.start (self)
 
diff --git a/tests/functional-tests/common/utils/minertest.py 
b/tests/functional-tests/common/utils/minertest.py
index 5aae50f..fc84e2e 100644
--- a/tests/functional-tests/common/utils/minertest.py
+++ b/tests/functional-tests/common/utils/minertest.py
@@ -17,7 +17,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 # 02110-1301, USA.
 #
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.system import TrackerSystemAbstraction
 import unittest2 as ut
 
diff --git a/tests/functional-tests/common/utils/storetest.py 
b/tests/functional-tests/common/utils/storetest.py
index be16b6c..75e3a10 100644
--- a/tests/functional-tests/common/utils/storetest.py
+++ b/tests/functional-tests/common/utils/storetest.py
@@ -23,7 +23,7 @@ import time
 
 from common.utils.system import TrackerSystemAbstraction
 from common.utils.helpers import StoreHelper
-from common.utils import configuration as cfg
+import configuration as cfg
 
 import unittest2 as ut
 #import unittest as ut
diff --git a/tests/functional-tests/common/utils/system.py b/tests/functional-tests/common/utils/system.py
index 177f551..b72d69d 100644
--- a/tests/functional-tests/common/utils/system.py
+++ b/tests/functional-tests/common/utils/system.py
@@ -23,7 +23,7 @@ TEST_ENV_VARS = {  "LC_COLLATE": "en_GB.utf8",
                    "DCONF_PROFILE": os.path.join (cfg.DATADIR, "tracker-tests",
                                                   "trackertest") }
 
-EXTRA_DIRS = [os.path.join (cfg.TEST_TMP_DIR, "data", "tracker"),
+EXTRA_DIRS = [os.path.join (cfg.TEST_TMP_DIR, "data", "tracker", "data"),
               os.path.join (cfg.TEST_TMP_DIR, "cache", "tracker")]
 
 REASONABLE_TIMEOUT = 5
@@ -186,6 +186,7 @@ class TrackerSystemAbstraction (object):
         self.tracker_writeback_testing_stop ()
 
     def __recreate_directory (self, directory):
+        print("CREATING: %s" % directory)
         if (os.path.exists (directory)):
             shutil.rmtree (directory)
         os.makedirs (directory)
diff --git a/tests/functional-tests/common/utils/writebacktest.py 
b/tests/functional-tests/common/utils/writebacktest.py
index 63c3ef7..65a6ef1 100644
--- a/tests/functional-tests/common/utils/writebacktest.py
+++ b/tests/functional-tests/common/utils/writebacktest.py
@@ -24,7 +24,7 @@ from common.utils.system import TrackerSystemAbstraction
 import shutil
 import unittest2 as ut
 import os
-from common.utils import configuration as cfg
+import configuration as cfg
 from common.utils.helpers import log
 import time
 
diff --git a/tests/functional-tests/configuration/meson.build 
b/tests/functional-tests/configuration/meson.build
new file mode 100644
index 0000000..fb5d7a0
--- /dev/null
+++ b/tests/functional-tests/configuration/meson.build
@@ -0,0 +1,5 @@
+configure_file(
+  input: '__init__.py.in',
+  output: '__init__.py',
+  configuration: conf
+)
diff --git a/tests/functional-tests/meson.build b/tests/functional-tests/meson.build
index 063842d..f28dec0 100644
--- a/tests/functional-tests/meson.build
+++ b/tests/functional-tests/meson.build
@@ -1,3 +1,5 @@
+subdir('configuration')
+
 test_runner = find_program('test-runner.sh')
 
 functional_tests = [
@@ -28,9 +30,20 @@ functional_tests = [
   '601-applications-sync',
 ]
 
+tracker_miners_top_build_dir = join_paths(meson.current_build_dir(), '..', '..')
+
+tracker_nepomuk_ontologies = join_paths(meson.current_source_dir(), '..', '..', 'subprojects', 'tracker', 
'src', 'ontologies', 'nepomuk')
+tracker_test_domain_ontology = join_paths(meson.current_source_dir(), '..', '..', 'subprojects', 'tracker', 
'src', 'tracker-store', 'default.rule')
+
 foreach t: functional_tests
   test('functional-' + t, test_runner,
     args: './' + t + '.py',
+    env: [
+        'PYTHONPATH=@0@'.format(meson.current_build_dir()),
+        'TRACKER_FUNCTIONAL_TEST_BUILD_DIR=@0@'.format(tracker_miners_top_build_dir),
+        'TRACKER_DB_ONTOLOGIES_DIR=@0@'.format(tracker_nepomuk_ontologies),
+        'TRACKER_TEST_DOMAIN_ONTOLOGY_RULE=@0@'.format(tracker_test_domain_ontology),
+    ],
     workdir: meson.current_source_dir(),
     # FIXME: these tests are all too slow
     timeout: 180)


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