diff --git a/src/tracker/tracker-search.c b/src/tracker/tracker-search.c index ce062e3ab9bbc3edc12f10175a2f699f93fbbc62..913f74f36b9dc8bc21eed499e16c4c09dafb715c 100644 --- a/src/tracker/tracker-search.c +++ b/src/tracker/tracker-search.c @@ -1028,7 +1028,8 @@ get_folders (TrackerSparqlConnection *connection, query = g_strdup_printf ("SELECT ?u nie:isStoredAs(?u) " "WHERE { " " ?u a nfo:Folder ;" - " fts:match \"%s\" ." + " nie:isStoredAs ?url ." + " ?url fts:match \"%s\" ." " %s" "} " "ORDER BY ASC(nie:isStoredAs(?u)) " diff --git a/tests/functional-tests/cli.py b/tests/functional-tests/cli.py index 32fda7033a5b749874edaf497893aba3d4156b41..2153cfc171294f1c497fe9f3310f6054e2728655 100644 --- a/tests/functional-tests/cli.py +++ b/tests/functional-tests/cli.py @@ -44,6 +44,14 @@ class TestCli(fixtures.TrackerCommandLineTestCase): with self.await_document_inserted(target2): shutil.copy(file2, self.indexed_dir) + folder_name = "test-folder" + folder_path = pathlib.Path(os.path.join(self.indexed_dir, folder_name)) + with self.await_insert_dir(folder_path): + try: + os.mkdir(os.path.join(self.indexed_dir, folder_name)) + except OSError as error: + print(error) + # FIXME: the --all should NOT be needed. # See: https://gitlab.gnome.org/GNOME/tracker-miners/-/issues/116 output = self.run_cli( @@ -51,6 +59,10 @@ class TestCli(fixtures.TrackerCommandLineTestCase): self.assertIn(target1.as_uri(), output) self.assertNotIn(target2.as_uri(), output) + folder_output = self.run_cli( + ['tracker3', 'search', '--folders', 'test-monitored']) + self.assertIn(self.indexed_dir, folder_output) + self.assertNotIn(folder_path.as_uri(), folder_output) if __name__ == '__main__': fixtures.tracker_test_main() diff --git a/tests/functional-tests/fixtures.py b/tests/functional-tests/fixtures.py index 56ebbbf6f76da49af8151f90835f33053bffa0e4..a118cd17c9838957523e88424e1fff73f1d4b62c 100644 --- a/tests/functional-tests/fixtures.py +++ b/tests/functional-tests/fixtures.py @@ -156,6 +156,15 @@ class TrackerMinerTest(ut.TestCase): return self.tracker.await_insert(DOCUMENTS_GRAPH, '; '.join(expected), timeout=cfg.AWAIT_TIMEOUT) + def await_insert_dir(self, path): + if isinstance(path, pathlib.Path): + url = path.as_uri() + else: + url = self.uri(path) + + expected = f'nie:isStoredAs <{url}>' + return self.tracker.await_insert(FILESYSTEM_GRAPH, expected, timeout=cfg.AWAIT_TIMEOUT) + def await_document_uri_change(self, resource_id, from_path, to_path): """Wraps await_update() context manager.""" from_url = self.uri(from_path)