| #include "clar_libgit2.h" |
| #include "thread_helpers.h" |
| #include "iterator.h" |
| |
| static git_repository *_repo; |
| |
| void test_threads_iterator__cleanup(void) |
| { |
| cl_git_sandbox_cleanup(); |
| } |
| |
| static void *run_workdir_iterator(void *arg) |
| { |
| int error = 0; |
| git_iterator *iter; |
| git_iterator_options iter_opts = GIT_ITERATOR_OPTIONS_INIT; |
| const git_index_entry *entry = NULL; |
| |
| iter_opts.flags = GIT_ITERATOR_DONT_AUTOEXPAND; |
| |
| cl_git_pass(git_iterator_for_workdir( |
| &iter, _repo, NULL, NULL, &iter_opts)); |
| |
| while (!error) { |
| if (entry && entry->mode == GIT_FILEMODE_TREE) { |
| error = git_iterator_advance_into(&entry, iter); |
| |
| if (error == GIT_ENOTFOUND) |
| error = git_iterator_advance(&entry, iter); |
| } else { |
| error = git_iterator_advance(&entry, iter); |
| } |
| |
| if (!error) |
| (void)git_iterator_current_is_ignored(iter); |
| } |
| |
| cl_assert_equal_i(GIT_ITEROVER, error); |
| |
| git_iterator_free(iter); |
| giterr_clear(); |
| return arg; |
| } |
| |
| |
| void test_threads_iterator__workdir(void) |
| { |
| _repo = cl_git_sandbox_init("status"); |
| |
| run_in_parallel( |
| 1, 20, run_workdir_iterator, NULL, NULL); |
| } |