summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Rogers <alan@github.com>2014-05-15 17:40:28 +1000
committerAlan Rogers <alan@github.com>2014-05-15 17:40:28 +1000
commitdc4906f12aedd608b01d04415fdca838eba045f6 (patch)
tree91955bbcc57c70827ff4237bdfa125bde07eaa27
parent158c8ba1ee81fe20d3beb16650f30f3be02054f7 (diff)
downloadlibgit2-dc4906f12aedd608b01d04415fdca838eba045f6.tar.gz
Skip unreadable files for now.
-rw-r--r--src/path.c3
-rw-r--r--tests/status/worktree.c7
2 files changed, 6 insertions, 4 deletions
diff --git a/src/path.c b/src/path.c
index 55790ff7c..a056f6983 100644
--- a/src/path.c
+++ b/src/path.c
@@ -1108,13 +1108,12 @@ int git_path_dirload_with_stat(
if ((error = git_buf_joinpath(&full, full.ptr, ps->path)) < 0 ||
(error = git_path_lstat(full.ptr, &ps->st)) < 0) {
- if (error == GIT_ENOTFOUND) {
+ if (error == GIT_ENOTFOUND || error == GIT_ENOACCESS) {
giterr_clear();
error = 0;
git_vector_remove(contents, i--);
continue;
}
-
break;
}
diff --git a/tests/status/worktree.c b/tests/status/worktree.c
index 5f4b7d647..1fdc112d9 100644
--- a/tests/status/worktree.c
+++ b/tests/status/worktree.c
@@ -955,16 +955,19 @@ void test_status_worktree__nopermissions(void)
counts.expected_entry_count = 1;
counts.expected_paths = expected_paths;
counts.expected_statuses = expected_statuses;
+ counts.debug = 1;
opts.show = GIT_STATUS_SHOW_WORKDIR_ONLY;
opts.flags = GIT_STATUS_OPT_DEFAULTS;
cl_git_pass(
git_status_foreach_ext(repo, &opts, cb_status__normal, &counts) );
+
+ // Restore permissions so we can cleanup :)
+ p_chmod("empty_standard_repo/no_permission", 0777);
+
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);
- // Restore permissions so we can cleanup :)
- p_chmod("empty_standard_repo/no_permission", 0777);
}