Skip to content

Commit 79abfa8

Browse files
committed
tests: explicitly skip chmod calls on Windows
On Windows, we use a POSIX emulation layer, the MSYS2 runtime, to allow for running shell scripts (albeit at a hefty performance cost, Git's test suite takes ~700 seconds to complete on Linux, according to Git's CI runs, while it takes more than 6,000 seconds on Windows). This emulation layer has a funny quirk when it comes to `chmod` invocations: it pretends that it succeeded, when in reality it did not do a thing (because the Access Control Lists used in Windows' permission model are so different to Unix' default permission model that Git's test suite assumes to be in effect). Git's test suite relies on this quirk by assuming that the `chmod` calls in `test_chmod` and `test_write_script` simply succeed on Windows (without actually doing anything). However, this quirk is only in effect as long as `chmod` is run inside the pseudo Unix root directory structure or within the home directory. When run outside, such invocations fail like this: chmod: changing permissions of '<file>': Invalid argument Now, when running Git's tests in, say, Visual Studio, we frequently are in a worktree where the `chmod` invocations would fail. Let's accommodate for that by explicitly skipping those `chmod` invocations on Windows. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent 86ab58b commit 79abfa8

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

t/test-lib-functions.sh

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,10 @@ test_commit_bulk () {
492492
# of a file in the working directory and add it to the index.
493493

494494
test_chmod () {
495-
chmod "$@" &&
495+
if test_have_prereq !MINGW
496+
then
497+
chmod "$@"
498+
fi &&
496499
git update-index --add "--chmod=$@"
497500
}
498501

@@ -548,7 +551,10 @@ write_script () {
548551
echo "#!${2-"$SHELL_PATH"}" &&
549552
cat
550553
} >"$1" &&
551-
chmod +x "$1"
554+
if test_have_prereq !MINGW
555+
then
556+
chmod +x "$1"
557+
fi
552558
}
553559

554560
# Usage: test_hook [options] <hook-name> <<-\EOF

0 commit comments

Comments
 (0)