mirror of
https://github.com/git/git
synced 2024-08-28 12:09:19 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
This test depended on "sleep 1" to be enough to dirty the index entry for a symlink. Alex noticed that on his Cygwin installation "sleep 1" was sometimes not enough, and after further discussion with Christopher Faylor, it was brought up that on FAT filesystem timestamp granularity is 2 seconds so sleeping 1 second is not enough. For now this patch takes an easy workaround of sleeping for 3 seconds. Very strictly speaking, POSIX requires lstat to fill only S_IFMT part of st_mode and st_size for symlinks, and depending on timestamp might be considered a bug, but we depend on that anyway, so it is better to test that. Signed-off-by: Junio C Hamano <junkio@cox.net>
86 lines
1.7 KiB
Bash
Executable file
86 lines
1.7 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Johannes Schindelin
|
|
#
|
|
|
|
test_description='Test diff of symlinks.
|
|
|
|
'
|
|
. ./test-lib.sh
|
|
. ../diff-lib.sh
|
|
|
|
cat > expected << EOF
|
|
diff --git a/frotz b/frotz
|
|
new file mode 120000
|
|
index 0000000..7c465af
|
|
--- /dev/null
|
|
+++ b/frotz
|
|
@@ -0,0 +1 @@
|
|
+xyzzy
|
|
\ No newline at end of file
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'diff new symlink' \
|
|
'ln -s xyzzy frotz &&
|
|
git-update-index &&
|
|
tree=$(git-write-tree) &&
|
|
git-update-index --add frotz &&
|
|
GIT_DIFF_OPTS=--unified=0 git-diff-index -M -p $tree > current &&
|
|
compare_diff_patch current expected'
|
|
|
|
test_expect_success \
|
|
'diff unchanged symlink' \
|
|
'tree=$(git-write-tree) &&
|
|
git-update-index frotz &&
|
|
test -z "$(git-diff-index --name-only $tree)"'
|
|
|
|
cat > expected << EOF
|
|
diff --git a/frotz b/frotz
|
|
deleted file mode 120000
|
|
index 7c465af..0000000
|
|
--- a/frotz
|
|
+++ /dev/null
|
|
@@ -1 +0,0 @@
|
|
-xyzzy
|
|
\ No newline at end of file
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'diff removed symlink' \
|
|
'rm frotz &&
|
|
git-diff-index -M -p $tree > current &&
|
|
compare_diff_patch current expected'
|
|
|
|
cat > expected << EOF
|
|
diff --git a/frotz b/frotz
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'diff identical, but newly created symlink' \
|
|
'sleep 3 &&
|
|
ln -s xyzzy frotz &&
|
|
git-diff-index -M -p $tree > current &&
|
|
compare_diff_patch current expected'
|
|
|
|
cat > expected << EOF
|
|
diff --git a/frotz b/frotz
|
|
index 7c465af..df1db54 120000
|
|
--- a/frotz
|
|
+++ b/frotz
|
|
@@ -1 +1 @@
|
|
-xyzzy
|
|
\ No newline at end of file
|
|
+yxyyz
|
|
\ No newline at end of file
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'diff different symlink' \
|
|
'rm frotz &&
|
|
ln -s yxyyz frotz &&
|
|
git-diff-index -M -p $tree > current &&
|
|
compare_diff_patch current expected'
|
|
|
|
test_done
|