mirror of
https://github.com/git/git
synced 2024-08-24 18:26:02 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
In many places in test suite we have "sleep"s that do not have to be there. - I do not simply see the point of the one in t3500. It may be making sure that the timestamp order of commits generated during the test is stable, in which case test_tick is the right ingredient to use without wasting tester's time. - The one in t4011 is to make sure that the plumbing diff-index notices the stat-dirtyness of a removed then identically recreated symlink. Keeping the old symlink around to make sure that a newly created symlink gets different ino would be sufficient for that purpose. - The one in t7600 is to make sure that "git merge" does not get confused by stat-dirty "file" in the working tree. Again, keeping the old file around and creating an identical copy to ensure a different ino would be sufficient for that purpose. The "racy git" tests in t0010 are inherently about mtime between the index itself and index entries. The "sleep" in that test must stay as they are. Signed-off-by: Junio C Hamano <gitster@pobox.com>
98 lines
2 KiB
Bash
Executable file
98 lines
2 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Johannes Schindelin
|
|
#
|
|
|
|
test_description='Test diff of symlinks.
|
|
|
|
'
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/diff-lib.sh
|
|
|
|
if ! test_have_prereq SYMLINKS
|
|
then
|
|
say 'Symbolic links not supported, skipping tests.'
|
|
test_done
|
|
fi
|
|
|
|
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' \
|
|
'mv frotz frotz2 &&
|
|
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' \
|
|
'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_expect_success \
|
|
'diff symlinks with non-existing targets' \
|
|
'ln -s narf pinky &&
|
|
ln -s take\ over brain &&
|
|
test_must_fail git diff --no-index pinky brain > output 2> output.err &&
|
|
grep narf output &&
|
|
! grep error output.err'
|
|
test_done
|