Skip to content

Commit

Permalink
t5605: special-case hardlink test for BusyBox-w32
Browse files Browse the repository at this point in the history
When t5605 tries to verify that files are hardlinked (or that they are
not), it uses the `-links` option of the `find` utility.

BusyBox' implementation does not support that option, and BusyBox-w32's
lstat() does not even report the number of hard links correctly (for
performance reasons).

So let's just switch to a different method that actually works on
Windows.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Sep 18, 2024
1 parent b67f7f0 commit 103d7b3
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions t/t5605-clone-local.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,21 @@ repo_is_hardlinked() {
test_line_count = 0 output
}

if test_have_prereq MINGW,BUSYBOX
then
# BusyBox' `find` does not support `-links`. Besides, BusyBox-w32's
# lstat() does not report hard links, just like Git's mingw_lstat()
# (from where BusyBox-w32 got its initial implementation).
repo_is_hardlinked() {
for f in $(find "$1/objects" -type f)
do
"$SYSTEMROOT"/system32/fsutil.exe \
hardlink list $f >links &&
test_line_count -gt 1 links || return 1
done
}
fi

test_expect_success 'preparing origin repository' '
: >file && git add . && git commit -m1 &&
git clone --bare . a.git &&
Expand Down

0 comments on commit 103d7b3

Please sign in to comment.