Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/desktop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorChristian Kamm <mail@ckamm.de>2017-11-29 14:13:19 +0300
committerckamm <mail@ckamm.de>2017-12-07 16:38:21 +0300
commite5c780ee1947cca2fc8389c5b5adc8e458b50406 (patch)
tree40f4b2efa0456635f4f3aede4c2d1cab9068751f /test
parent1c3d5ab15860809f4e437b95dde2cb5926f84bae (diff)
Excludes: Translate full-path patterns to regex
Improves full matches by more than an order of magnitude and also improves speed of traversal matches by roughly 20%, judging by the check_csync_exclude performance test.
Diffstat (limited to 'test')
-rw-r--r--test/csync/csync_tests/check_csync_exclude.cpp43
1 files changed, 26 insertions, 17 deletions
diff --git a/test/csync/csync_tests/check_csync_exclude.cpp b/test/csync/csync_tests/check_csync_exclude.cpp
index c8e3a48ad..057e73404 100644
--- a/test/csync/csync_tests/check_csync_exclude.cpp
+++ b/test/csync/csync_tests/check_csync_exclude.cpp
@@ -31,6 +31,10 @@
ExcludedFiles *excludedFiles = nullptr;
+class ExcludedFilesTest
+{
+public:
+
static int setup(void **state) {
CSYNC *csync;
@@ -84,22 +88,22 @@ static int teardown(void **state) {
return 0;
}
-int check_file_full(const char *path)
+static int check_file_full(const char *path)
{
return excludedFiles->fullPatternMatch(path, CSYNC_FTW_TYPE_FILE);
}
-int check_dir_full(const char *path)
+static int check_dir_full(const char *path)
{
return excludedFiles->fullPatternMatch(path, CSYNC_FTW_TYPE_DIR);
}
-int check_file_traversal(const char *path)
+static int check_file_traversal(const char *path)
{
return excludedFiles->traversalPatternMatch(path, CSYNC_FTW_TYPE_FILE);
}
-int check_dir_traversal(const char *path)
+static int check_dir_traversal(const char *path)
{
return excludedFiles->traversalPatternMatch(path, CSYNC_FTW_TYPE_DIR);
}
@@ -107,18 +111,19 @@ int check_dir_traversal(const char *path)
static void check_csync_exclude_add(void **)
{
excludedFiles->addManualExclude("/tmp/check_csync1/*");
+ excludedFiles->prepare();
assert_int_equal(check_file_full("/tmp/check_csync1/foo"), CSYNC_FILE_EXCLUDE_LIST);
assert_int_equal(check_file_full("/tmp/check_csync2/foo"), CSYNC_NOT_EXCLUDED);
assert_true(excludedFiles->_allExcludes.contains("/tmp/check_csync1/*"));
- excludedFiles->prepare();
- assert_true(excludedFiles->_nonRegexExcludes.contains("/tmp/check_csync1/*"));
- assert_false(excludedFiles->_bnameRegexFileDir.pattern().contains("csync1"));
+ assert_true(excludedFiles->_nonRegexExcludes.isEmpty());
+ assert_true(excludedFiles->_fullRegexFile.pattern().contains("csync1"));
+ assert_false(excludedFiles->_bnameActivationRegexFile.pattern().contains("csync1"));
excludedFiles->addManualExclude("foo");
excludedFiles->prepare();
- assert_true(excludedFiles->_nonRegexExcludes.size() == 1);
- assert_true(excludedFiles->_bnameRegexFileDir.pattern().contains("foo"));
+ assert_true(excludedFiles->_nonRegexExcludes.isEmpty());
+ assert_true(excludedFiles->_bnameActivationRegexFile.pattern().contains("foo"));
}
static void check_csync_excluded(void **)
@@ -515,17 +520,21 @@ static void check_csync_exclude_expand_escapes(void **state)
SAFE_FREE(str);
}
+}; // class ExcludedFilesTest
+
int torture_run_tests(void)
{
+ typedef ExcludedFilesTest T;
+
const struct CMUnitTest tests[] = {
- cmocka_unit_test_setup_teardown(check_csync_exclude_add, setup, teardown),
- cmocka_unit_test_setup_teardown(check_csync_excluded, setup_init, teardown),
- cmocka_unit_test_setup_teardown(check_csync_excluded_traversal, setup_init, teardown),
- cmocka_unit_test_setup_teardown(check_csync_dir_only, setup_init, teardown),
- cmocka_unit_test_setup_teardown(check_csync_pathes, setup_init, teardown),
- cmocka_unit_test_setup_teardown(check_csync_is_windows_reserved_word, setup_init, teardown),
- cmocka_unit_test_setup_teardown(check_csync_excluded_performance, setup_init, teardown),
- cmocka_unit_test(check_csync_exclude_expand_escapes),
+ cmocka_unit_test_setup_teardown(T::check_csync_exclude_add, T::setup, T::teardown),
+ cmocka_unit_test_setup_teardown(T::check_csync_excluded, T::setup_init, T::teardown),
+ cmocka_unit_test_setup_teardown(T::check_csync_excluded_traversal, T::setup_init, T::teardown),
+ cmocka_unit_test_setup_teardown(T::check_csync_dir_only, T::setup, T::teardown),
+ cmocka_unit_test_setup_teardown(T::check_csync_pathes, T::setup_init, T::teardown),
+ cmocka_unit_test_setup_teardown(T::check_csync_is_windows_reserved_word, T::setup_init, T::teardown),
+ cmocka_unit_test_setup_teardown(T::check_csync_excluded_performance, T::setup_init, T::teardown),
+ cmocka_unit_test(T::check_csync_exclude_expand_escapes),
};
return cmocka_run_group_tests(tests, NULL, NULL);