void pri_queue_test_clear(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(i); fill_q(q, data); q.clear(); BOOST_REQUIRE(q.size() == 0); BOOST_REQUIRE(q.empty()); } }
void pri_queue_test_copyconstructor(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(i); fill_q(q, data); pri_queue r(q); check_q(r, data); } }
void pri_queue_test_equality(void) { for (int i = 0; i != test_size; ++i) { pri_queue q, r; test_data data = make_test_data(i); fill_q(q, data); std::reverse(data.begin(), data.end()); fill_q(r, data); BOOST_REQUIRE(r == q); } }
void pri_queue_test_inequality(void) { for (int i = 1; i != test_size; ++i) { pri_queue q, r; test_data data = make_test_data(i); fill_q(q, data); data[0] = data.back() + 1; fill_q(r, data); BOOST_REQUIRE(r != q); } }
void pri_queue_test_moveconstructor(void) { #ifdef BOOST_HAS_RVALUE_REFS pri_queue q; test_data data = make_test_data(test_size); fill_q(q, data); pri_queue r(std::move(q)); check_q(r, data); BOOST_REQUIRE(q.empty()); #endif }
void pri_queue_test_update_function_identity(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(test_size); PUSH_WITH_HANDLES(handles, q, data); q.update(handles[i], data[i]); std::sort(data.begin(), data.end()); check_q(q, data); } }
void test_status_ignore__negative_ignores_inside_ignores(void) { static const char *test_files[] = { "empty_standard_repo/top/mid/btm/tracked", "empty_standard_repo/top/mid/btm/untracked", "empty_standard_repo/zoo/bar", "empty_standard_repo/zoo/foo/bar", NULL }; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/.gitignore", "top\n" "!top/mid/btm\n" "zoo/*\n" "!zoo/bar\n" "!zoo/foo/bar\n"); add_one_to_index("top/mid/btm/tracked"); { git_status_options opts = GIT_STATUS_OPTIONS_INIT; status_entry_counts counts; static const char *files[] = { ".gitignore", "top/mid/btm/tracked", "top/mid/btm/untracked", "zoo/bar", "zoo/foo/bar", }; static const unsigned int statuses[] = { GIT_STATUS_WT_NEW, GIT_STATUS_INDEX_NEW, GIT_STATUS_IGNORED, GIT_STATUS_WT_NEW, GIT_STATUS_IGNORED, }; memset(&counts, 0x0, sizeof(status_entry_counts)); counts.expected_entry_count = 5; counts.expected_paths = files; counts.expected_statuses = statuses; opts.flags = GIT_STATUS_OPT_DEFAULTS | GIT_STATUS_OPT_INCLUDE_IGNORED | GIT_STATUS_OPT_RECURSE_IGNORED_DIRS; cl_git_pass(git_status_foreach_ext( g_repo, &opts, cb_status__normal, &counts)); cl_assert_equal_i(counts.expected_entry_count, counts.entry_count); cl_assert_equal_i(0, counts.wrong_status_flags_count); cl_assert_equal_i(0, counts.wrong_sorted_path); } assert_is_ignored("top/mid/btm/tracked"); assert_is_ignored("top/mid/btm/untracked"); refute_is_ignored("foo/bar"); }
void pri_queue_test_emplace(void) { #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(i); std::reverse(data.begin(), data.end()); fill_emplace_q(q, data); std::reverse(data.begin(), data.end()); check_q(q, data); } #endif }
void pri_queue_test_assignment(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(i); fill_q(q, data); pri_queue r; r = q; check_q(r, data); } }
void pri_queue_test_move_assignment(void) { #ifndef BOOST_NO_CXX11_RVALUE_REFERENCES pri_queue q; test_data data = make_test_data(test_size); fill_q(q, data); pri_queue r; r = std::move(q); check_q(r, data); BOOST_REQUIRE(q.empty()); #endif }
void pri_queue_test_update_shuffled(void) { pri_queue q; test_data data = make_test_data(test_size); PUSH_WITH_HANDLES(handles, q, data); test_data shuffled (data); std::random_shuffle(shuffled.begin(), shuffled.end()); for (int i = 0; i != test_size; ++i) q.update(handles[i], shuffled[i]); check_q(q, data); }
void pri_queue_test_increase_function(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(test_size); PUSH_WITH_HANDLES(handles, q, data); data[i] = data.back()+1; q.increase(handles[i], data[i]); std::sort(data.begin(), data.end()); check_q(q, data); } }
void pri_queue_test_random_push(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(i); test_data shuffled (data); std::random_shuffle(shuffled.begin(), shuffled.end()); fill_q(q, shuffled); check_q(q, data); } }
void pri_queue_test_update_decrease(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(test_size); PUSH_WITH_HANDLES(handles, q, data); *handles[i] = -1; data[i] = -1; q.update(handles[i]); std::sort(data.begin(), data.end()); check_q(q, data); } }
void test_status_ignore__do_not_unignore_basename_prefix(void) { static const char *test_files[] = { "empty_standard_repo/foo_bar.txt", NULL }; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/.gitignore", "foo_bar.txt\n" "!bar.txt\n"); assert_is_ignored("foo_bar.txt"); }
void pri_queue_test_swap(void) { for (int i = 0; i != test_size; ++i) { pri_queue q; test_data data = make_test_data(i); test_data shuffled (data); std::random_shuffle(shuffled.begin(), shuffled.end()); fill_q(q, shuffled); pri_queue r; q.swap(r); check_q(r, data); BOOST_REQUIRE(q.empty()); } }
void test_status_ignore__trailing_slash_star(void) { static const char *test_files[] = { "empty_standard_repo/file", "empty_standard_repo/subdir/file", "empty_standard_repo/subdir/sub2/sub3/file", NULL }; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/subdir/.gitignore", "/**/*\n"); refute_is_ignored("file"); assert_is_ignored("subdir/sub2/sub3/file"); assert_is_ignored("subdir/file"); }
void test_status_ignore__unignore_entry_in_ignored_dir(void) { static const char *test_files[] = { "empty_standard_repo/bar.txt", "empty_standard_repo/parent/bar.txt", "empty_standard_repo/parent/child/bar.txt", "empty_standard_repo/nested/parent/child/bar.txt", NULL }; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/.gitignore", "bar.txt\n" "!parent/child/bar.txt\n"); assert_is_ignored("bar.txt"); assert_is_ignored("parent/bar.txt"); refute_is_ignored("parent/child/bar.txt"); assert_is_ignored("nested/parent/child/bar.txt"); }
void test_status_ignore__subdirectories_not_at_root(void) { git_status_options opts = GIT_STATUS_OPTIONS_INIT; status_entry_counts counts; static const char *paths_1[] = { "dir/.gitignore", "dir/a/ignore_me", "dir/b/ignore_me", "dir/ignore_me", "ignore_also/file", "ignore_me", "test/.gitignore", "test/ignore_me/and_me/file", "test/ignore_me/file", "test/ignore_me/file2", }; static const unsigned int statuses_1[] = { GIT_STATUS_WT_NEW, GIT_STATUS_IGNORED, GIT_STATUS_IGNORED, GIT_STATUS_IGNORED, GIT_STATUS_WT_NEW, GIT_STATUS_WT_NEW, GIT_STATUS_WT_NEW, GIT_STATUS_IGNORED, GIT_STATUS_WT_NEW, GIT_STATUS_WT_NEW, }; make_test_data(test_repo_1, test_files_1); cl_git_rewritefile("empty_standard_repo/dir/.gitignore", "ignore_me\n/ignore_also\n"); cl_git_rewritefile("empty_standard_repo/test/.gitignore", "and_me\n"); memset(&counts, 0x0, sizeof(status_entry_counts)); counts.expected_entry_count = 10; counts.expected_paths = paths_1; counts.expected_statuses = statuses_1; opts.flags = GIT_STATUS_OPT_DEFAULTS | GIT_STATUS_OPT_RECURSE_IGNORED_DIRS; cl_git_pass(git_status_foreach_ext( g_repo, &opts, cb_status__normal, &counts)); cl_assert_equal_i(counts.expected_entry_count, counts.entry_count); cl_assert_equal_i(0, counts.wrong_status_flags_count); cl_assert_equal_i(0, counts.wrong_sorted_path); }
void test_status_ignore__contained_dir_with_matching_name(void) { static const char *test_files[] = { "empty_standard_repo/subdir_match/aaa/subdir_match/file", "empty_standard_repo/subdir_match/zzz_ignoreme", NULL }; static const char *expected_paths[] = { "subdir_match/.gitignore", "subdir_match/aaa/subdir_match/file", "subdir_match/zzz_ignoreme", }; static const unsigned int expected_statuses[] = { GIT_STATUS_WT_NEW, GIT_STATUS_WT_NEW, GIT_STATUS_IGNORED }; git_status_options opts = GIT_STATUS_OPTIONS_INIT; status_entry_counts counts; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/subdir_match/.gitignore", "*_ignoreme\n"); refute_is_ignored("subdir_match/aaa/subdir_match/file"); assert_is_ignored("subdir_match/zzz_ignoreme"); memset(&counts, 0x0, sizeof(status_entry_counts)); counts.expected_entry_count = 3; counts.expected_paths = expected_paths; counts.expected_statuses = expected_statuses; opts.flags = GIT_STATUS_OPT_DEFAULTS | GIT_STATUS_OPT_RECURSE_IGNORED_DIRS; cl_git_pass(git_status_foreach_ext( g_repo, &opts, cb_status__normal, &counts)); cl_assert_equal_i(counts.expected_entry_count, counts.entry_count); cl_assert_equal_i(0, counts.wrong_status_flags_count); cl_assert_equal_i(0, counts.wrong_sorted_path); }
void test_status_ignore__negative_ignores_in_slash_star(void) { git_status_options status_opts = GIT_STATUS_OPTIONS_INIT; git_status_list *list; int found_look_ma = 0, found_what_about = 0; size_t i; static const char *test_files[] = { "empty_standard_repo/bin/look-ma.txt", "empty_standard_repo/bin/what-about-me.txt", NULL }; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/.gitignore", "bin/*\n" "!bin/w*\n"); assert_is_ignored("bin/look-ma.txt"); refute_is_ignored("bin/what-about-me.txt"); status_opts.flags = GIT_STATUS_OPT_DEFAULTS; cl_git_pass(git_status_list_new(&list, g_repo, &status_opts)); for (i = 0; i < git_status_list_entrycount(list); i++) { const git_status_entry *entry = git_status_byindex(list, i); if (!strcmp("bin/look-ma.txt", entry->index_to_workdir->new_file.path)) found_look_ma = 1; if (!strcmp("bin/what-about-me.txt", entry->index_to_workdir->new_file.path)) found_what_about = 1; } git_status_list_free(list); cl_assert(found_look_ma); cl_assert(found_what_about); }
void test_status_ignore__subdir_ignore_all_toplevel_dirs_include_files(void) { static const char *test_files[] = { "empty_standard_repo/project/README.md", "empty_standard_repo/project/src/main.c", "empty_standard_repo/project/src/foo/foo.c", "empty_standard_repo/project/dist/foo.o", "empty_standard_repo/project/dist/main.o", NULL }; make_test_data("empty_standard_repo", test_files); cl_git_mkfile( "empty_standard_repo/project/.gitignore", "/*/\n" "!/src\n"); assert_is_ignored("project/dist/foo.o"); assert_is_ignored("project/dist/main.o"); refute_is_ignored("project/src/foo.c"); refute_is_ignored("project/src/foo/foo.c"); refute_is_ignored("project/README.md"); }