diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2017-11-09 17:12:33 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2017-11-14 22:45:27 +0100 |
commit | e810f4c5f67df20ce7047d9381fd7ad96d574dd2 (patch) | |
tree | 71f69b620379a67148b4512fb2552b36c5bdd772 | |
parent | 99bdebdf872970b58ef12ce1f660d85e196dedf2 (diff) | |
download | tracker-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.c | 72 |
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", |