Skip to content

Commit ffd264d

Browse files
committed
tests: repo: fix repo discovery tests on overlayfs
Debian and Ubuntu often use schroot to build their DEB packages in a controlled environment. Depending on how schroot is configured, our tests regarding repository discovery break due to not being able to find the repositories anymore. It turns out that these errors occur when the schroot is configured to use an overlayfs on the directory structures. The reason for this failure is that we usually refrain from discovering repositories across devices. But unfortunately, overlayfs does not have consistent device identifiers for all its files but will instead use the device number of the filesystem the file stems from. So whenever we cross boundaries between the upper and lower layer of the overlay, we will fail to properly detect the repository and bail out. This commit fixes the issue by enabling cross-device discovery in our tests. While it would be preferable to have this turned off, it probably won't do much harm anyway as we set up our tests in a temporary location outside of the parent repository.
1 parent 7849e46 commit ffd264d

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

tests/repo/discover.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static void ensure_repository_discover(const char *start_path,
3333
git_buf_attach(&resolved, p_realpath(expected_path, NULL), 0);
3434
cl_assert(resolved.size > 0);
3535
cl_git_pass(git_path_to_dir(&resolved));
36-
cl_git_pass(git_repository_discover(&found_path, start_path, 0, ceiling_dirs));
36+
cl_git_pass(git_repository_discover(&found_path, start_path, 1, ceiling_dirs));
3737

3838
cl_assert_equal_s(found_path.ptr, resolved.ptr);
3939

tests/repo/open.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,8 @@ void test_repo_open__force_bare(void)
398398
cl_git_fail(git_repository_open_bare(&barerepo, "alternate/subdir/sub2"));
399399

400400
cl_git_pass(git_repository_open_ext(
401-
&barerepo, "alternate/subdir/sub2", GIT_REPOSITORY_OPEN_BARE, NULL));
401+
&barerepo, "alternate/subdir/sub2",
402+
GIT_REPOSITORY_OPEN_BARE|GIT_REPOSITORY_OPEN_CROSS_FS, NULL));
402403
cl_assert(git_repository_is_bare(barerepo));
403404
git_repository_free(barerepo);
404405
}

0 commit comments

Comments
 (0)