summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2017-11-09 17:12:33 +0100
committerCarlos Garnacho <carlosg@gnome.org>2017-11-14 22:45:27 +0100
commite810f4c5f67df20ce7047d9381fd7ad96d574dd2 (patch)
tree71f69b620379a67148b4512fb2552b36c5bdd772
parent99bdebdf872970b58ef12ce1f660d85e196dedf2 (diff)
downloadtracker-e810f4c5f67df20ce7047d9381fd7ad96d574dd2.tar.gz
tests: Add test for ignored content in configured folders
There's some extreme cases where content filters in one configured root result on deletes that leak through nested configured roots. Add a testcase to catch this situation. https://bugzilla.gnome.org/show_bug.cgi?id=790284
-rw-r--r--tests/libtracker-miner/tracker-miner-fs-test.c72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/libtracker-miner/tracker-miner-fs-test.c b/tests/libtracker-miner/tracker-miner-fs-test.c
index ab71a67dc..4d434f23a 100644
--- a/tests/libtracker-miner/tracker-miner-fs-test.c
+++ b/tests/libtracker-miner/tracker-miner-fs-test.c
@@ -878,6 +878,76 @@ test_content_filter_default_deny (TrackerMinerFSTestFixture *fixture,
}
static void
+test_content_filter_on_parent_root (TrackerMinerFSTestFixture *fixture,
+ gconstpointer data)
+{
+ TrackerIndexingTree *indexing_tree;
+ GError *error = NULL;
+
+ CREATE_FOLDER (fixture, "non-recursive");
+ CREATE_FOLDER (fixture, "non-recursive/recursive");
+ CREATE_FOLDER (fixture, "non-recursive/recursive/a");
+ CREATE_UPDATE_FILE (fixture, "non-recursive/.ignore");
+ CREATE_UPDATE_FILE (fixture, "non-recursive/recursive/c");
+ CREATE_UPDATE_FILE (fixture, "non-recursive/recursive/a/d");
+
+ indexing_tree = tracker_miner_fs_get_indexing_tree (fixture->miner);
+ tracker_indexing_tree_set_filter_hidden (indexing_tree, TRUE);
+ tracker_indexing_tree_add_filter (indexing_tree,
+ TRACKER_FILTER_PARENT_DIRECTORY, ".ignore");
+
+ fixture_add_indexed_folder (fixture, "non-recursive",
+ TRACKER_DIRECTORY_FLAG_PRESERVE |
+ TRACKER_DIRECTORY_FLAG_CHECK_DELETED |
+ TRACKER_DIRECTORY_FLAG_CHECK_MTIME);
+ fixture_add_indexed_folder (fixture, "non-recursive/recursive",
+ TRACKER_DIRECTORY_FLAG_PRESERVE |
+ TRACKER_DIRECTORY_FLAG_CHECK_DELETED |
+ TRACKER_DIRECTORY_FLAG_CHECK_MTIME |
+ TRACKER_DIRECTORY_FLAG_RECURSE);
+
+ tracker_miner_start (TRACKER_MINER (fixture->miner));
+
+ fixture_iterate (fixture);
+
+ g_assert_cmpstr (fixture_get_content (fixture), ==,
+ "non-recursive,"
+ "non-recursive/recursive,"
+ "non-recursive/recursive/a,"
+ "non-recursive/recursive/a/d,"
+ "non-recursive/recursive/c");
+
+ /* Check it is ok after the content is already indexed. All
+ * files should stay and no events should be generated as
+ * there's no changes.
+ */
+ fixture_remove_indexed_folder (fixture, "non-recursive");
+ fixture_remove_indexed_folder (fixture, "non-recursive/recursive");
+
+ fixture_add_indexed_folder (fixture, "non-recursive",
+ TRACKER_DIRECTORY_FLAG_PRESERVE |
+ TRACKER_DIRECTORY_FLAG_CHECK_DELETED |
+ TRACKER_DIRECTORY_FLAG_CHECK_MTIME);
+ fixture_add_indexed_folder (fixture, "non-recursive/recursive",
+ TRACKER_DIRECTORY_FLAG_PRESERVE |
+ TRACKER_DIRECTORY_FLAG_CHECK_DELETED |
+ TRACKER_DIRECTORY_FLAG_CHECK_MTIME |
+ TRACKER_DIRECTORY_FLAG_RECURSE);
+
+ test_miner_reset_counters ((TestMiner *) fixture->miner);
+ fixture_iterate (fixture);
+
+ g_assert_cmpstr (fixture_get_content (fixture), ==,
+ "non-recursive,"
+ "non-recursive/recursive,"
+ "non-recursive/recursive/a,"
+ "non-recursive/recursive/a/d,"
+ "non-recursive/recursive/c");
+
+ g_assert_cmpint (((TestMiner *) fixture->miner)->n_events, ==, 0);
+}
+
+static void
test_non_monitored_create (TrackerMinerFSTestFixture *fixture,
gconstpointer data)
{
@@ -1907,6 +1977,8 @@ main (gint argc,
test_content_filter_default_accept);
ADD_TEST ("/indexing-tree/content-filter-default-deny",
test_content_filter_default_deny);
+ ADD_TEST ("/indexing-tree/content-filter-on-parent-root",
+ test_content_filter_on_parent_root);
/* Tests for non-monitored FS changes (eg. between reindexes) */
ADD_TEST ("/non-monitored/create",