mirror of
https://github.com/git/git
synced 2024-10-28 19:25:47 +00:00

The score number that follow R/C status were parsed but the parse pointer was not updated, causing the entire line to become unrecognized. This patch fixes this problem. There was a test missing to catch this breakage, which this commit adds as t4009-diff-rename-4.sh. The diff-raw tests used in related t4005-diff-rename-2.sh (the same test without -z) and t4007-rename-3.sh were stricter than necessarily, despite that the comment for the tests said otherwise. This patch also corrects them. The documentation is updated to say that the status can optionally be followed by a number called "score"; it does not have to stay similarity index forever and there is no reason to limit it only to C and R. Signed-off-by: Junio C Hamano <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
103 lines
3.2 KiB
Bash
103 lines
3.2 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Junio C Hamano
|
|
#
|
|
|
|
test_description='Rename interaction with pathspec.
|
|
|
|
'
|
|
. ./test-lib.sh
|
|
|
|
_x40='[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'
|
|
_x40="$_x40$_x40$_x40$_x40$_x40$_x40$_x40$_x40"
|
|
sanitize_diff_raw='s/ '"$_x40"' '"$_x40"' \([A-Z]\)[0-9]* / X X \1# /'
|
|
compare_diff_raw () {
|
|
# When heuristics are improved, the score numbers would change.
|
|
# Ignore them while comparing.
|
|
# Also we do not check SHA1 hash generation in this test, which
|
|
# is a job for t0000-basic.sh
|
|
|
|
sed -e "$sanitize_diff_raw" <"$1" >.tmp-1
|
|
sed -e "$sanitize_diff_raw" <"$2" >.tmp-2
|
|
diff -u .tmp-1 .tmp-2 && rm -f .tmp-1 .tmp-2
|
|
}
|
|
|
|
test_expect_success \
|
|
'prepare reference tree' \
|
|
'mkdir path0 path1 &&
|
|
cp ../../COPYING path0/COPYING &&
|
|
git-update-cache --add path0/COPYING &&
|
|
tree=$(git-write-tree) &&
|
|
echo $tree'
|
|
|
|
test_expect_success \
|
|
'prepare work tree' \
|
|
'cp path0/COPYING path1/COPYING &&
|
|
git-update-cache --add --remove path0/COPYING path1/COPYING'
|
|
|
|
# In the tree, there is only path0/COPYING. In the cache, path0 and
|
|
# path1 both have COPYING and the latter is a copy of path0/COPYING.
|
|
# Comparing the full tree with cache should tell us so.
|
|
|
|
git-diff-cache -C $tree >current
|
|
|
|
cat >expected <<\EOF
|
|
:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 C100 path0/COPYING path1/COPYING
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'validate the result (#1)' \
|
|
'compare_diff_raw current expected'
|
|
|
|
# In the tree, there is only path0/COPYING. In the cache, path0 and
|
|
# path1 both have COPYING and the latter is a copy of path0/COPYING.
|
|
# However when we say we care only about path1, we should just see
|
|
# path1/COPYING suddenly appearing from nowhere, not detected as
|
|
# a copy from path0/COPYING.
|
|
|
|
git-diff-cache -C $tree path1 >current
|
|
|
|
cat >expected <<\EOF
|
|
:000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 N path1/COPYING
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'validate the result (#2)' \
|
|
'compare_diff_raw current expected'
|
|
|
|
test_expect_success \
|
|
'tweak work tree' \
|
|
'rm -f path0/COPYING &&
|
|
git-update-cache --remove path0/COPYING'
|
|
|
|
# In the tree, there is only path0/COPYING. In the cache, path0 does
|
|
# not have COPYING anymore and path1 has COPYING which is a copy of
|
|
# path0/COPYING. Showing the full tree with cache should tell us about
|
|
# the rename.
|
|
|
|
git-diff-cache -C $tree >current
|
|
|
|
cat >expected <<\EOF
|
|
:100644 100644 6ff87c4664981e4397625791c8ea3bbb5f2279a3 6ff87c4664981e4397625791c8ea3bbb5f2279a3 R100 path0/COPYING path1/COPYING
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'validate the result (#3)' \
|
|
'compare_diff_raw current expected'
|
|
|
|
# In the tree, there is only path0/COPYING. In the cache, path0 does
|
|
# not have COPYING anymore and path1 has COPYING which is a copy of
|
|
# path0/COPYING. When we say we care only about path1, we should just
|
|
# see path1/COPYING appearing from nowhere.
|
|
|
|
git-diff-cache -C $tree path1 >current
|
|
|
|
cat >expected <<\EOF
|
|
:000000 100644 0000000000000000000000000000000000000000 6ff87c4664981e4397625791c8ea3bbb5f2279a3 N path1/COPYING
|
|
EOF
|
|
|
|
test_expect_success \
|
|
'validate the result (#4)' \
|
|
'compare_diff_raw current expected'
|
|
|
|
test_done
|