mirror of
https://github.com/git-for-windows/git.git
synced 2026-02-04 03:33:01 -06:00
Win32: symlink: add test for symlink attribute
To verify that the symlink is resolved correctly, we use the fact that `git.exe` is a native Win32 program, and that `git.exe config -f <path>` therefore uses the native symlink resolution. Signed-off-by: Bert Belder <bertbelder@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
parent
6b31be9a20
commit
505001498b
@ -260,6 +260,7 @@ integration_tests = [
|
||||
't2027-checkout-track.sh',
|
||||
't2030-unresolve-info.sh',
|
||||
't2031-checkout-long-paths.sh',
|
||||
't2040-checkout-symlink-attr.sh',
|
||||
't2050-git-dir-relative.sh',
|
||||
't2060-switch.sh',
|
||||
't2070-restore.sh',
|
||||
|
||||
46
t/t2040-checkout-symlink-attr.sh
Executable file
46
t/t2040-checkout-symlink-attr.sh
Executable file
@ -0,0 +1,46 @@
|
||||
#!/bin/sh
|
||||
|
||||
test_description='checkout symlinks with `symlink` attribute on Windows
|
||||
|
||||
Ensures that Git for Windows creates symlinks of the right type,
|
||||
as specified by the `symlink` attribute in `.gitattributes`.'
|
||||
|
||||
# Tell MSYS to create native symlinks. Without this flag test-lib's
|
||||
# prerequisite detection for SYMLINKS doesn't detect the right thing.
|
||||
MSYS=winsymlinks:nativestrict && export MSYS
|
||||
|
||||
. ./test-lib.sh
|
||||
|
||||
if ! test_have_prereq MINGW,SYMLINKS
|
||||
then
|
||||
skip_all='skipping $0: MinGW-only test, which requires symlink support.'
|
||||
test_done
|
||||
fi
|
||||
|
||||
# Adds a symlink to the index without clobbering the work tree.
|
||||
cache_symlink () {
|
||||
sha=$(printf '%s' "$1" | git hash-object --stdin -w) &&
|
||||
git update-index --add --cacheinfo 120000,$sha,"$2"
|
||||
}
|
||||
|
||||
test_expect_success 'checkout symlinks with attr' '
|
||||
cache_symlink file1 file-link &&
|
||||
cache_symlink dir dir-link &&
|
||||
|
||||
printf "file-link symlink=file\ndir-link symlink=dir\n" >.gitattributes &&
|
||||
git add .gitattributes &&
|
||||
|
||||
git checkout . &&
|
||||
|
||||
mkdir dir &&
|
||||
echo "[a]b=c" >file1 &&
|
||||
echo "[x]y=z" >dir/file2 &&
|
||||
|
||||
# MSYS2 is very forgiving, it will resolve symlinks even if the
|
||||
# symlink type is incorrect. To make this test meaningful, try
|
||||
# them with a native, non-MSYS executable, such as `git config`.
|
||||
test "$(git config -f file-link a.b)" = "c" &&
|
||||
test "$(git config -f dir-link/file2 x.y)" = "z"
|
||||
'
|
||||
|
||||
test_done
|
||||
Loading…
x
Reference in New Issue
Block a user