b5967f820c
The test4012.png test vector file that was originally used for t4012 to check operations on binary files was later reused in other tests, making it no longer consistent to name it after a specific test. Rename it to more generic "test-binary-1.png". While at it, rename test9200b to "test-binary-2.png" (even though it is only used by t9200). Signed-off-by: Vitaliy Ivanov <vitalivanov@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
94 lines
2.6 KiB
Bash
Executable File
94 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2006 Junio C Hamano
|
|
#
|
|
|
|
test_description='Binary diff and apply
|
|
'
|
|
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'prepare repository' \
|
|
'echo AIT >a && echo BIT >b && echo CIT >c && echo DIT >d &&
|
|
git update-index --add a b c d &&
|
|
echo git >a &&
|
|
cat "$TEST_DIRECTORY"/test-binary-1.png >b &&
|
|
echo git >c &&
|
|
cat b b >d'
|
|
|
|
cat > expected <<\EOF
|
|
a | 2 +-
|
|
b | Bin
|
|
c | 2 +-
|
|
d | Bin
|
|
4 files changed, 2 insertions(+), 2 deletions(-)
|
|
EOF
|
|
test_expect_success 'diff without --binary' \
|
|
'git diff | git apply --stat --summary >current &&
|
|
test_cmp expected current'
|
|
|
|
test_expect_success 'diff with --binary' \
|
|
'git diff --binary | git apply --stat --summary >current &&
|
|
test_cmp expected current'
|
|
|
|
# apply needs to be able to skip the binary material correctly
|
|
# in order to report the line number of a corrupt patch.
|
|
test_expect_success 'apply detecting corrupt patch correctly' \
|
|
'git diff | sed -e 's/-CIT/xCIT/' >broken &&
|
|
if git apply --stat --summary broken 2>detected
|
|
then
|
|
echo unhappy - should have detected an error
|
|
(exit 1)
|
|
else
|
|
echo happy
|
|
fi &&
|
|
detected=`cat detected` &&
|
|
detected=`expr "$detected" : "fatal.*at line \\([0-9]*\\)\$"` &&
|
|
detected=`sed -ne "${detected}p" broken` &&
|
|
test "$detected" = xCIT'
|
|
|
|
test_expect_success 'apply detecting corrupt patch correctly' \
|
|
'git diff --binary | sed -e 's/-CIT/xCIT/' >broken &&
|
|
if git apply --stat --summary broken 2>detected
|
|
then
|
|
echo unhappy - should have detected an error
|
|
(exit 1)
|
|
else
|
|
echo happy
|
|
fi &&
|
|
detected=`cat detected` &&
|
|
detected=`expr "$detected" : "fatal.*at line \\([0-9]*\\)\$"` &&
|
|
detected=`sed -ne "${detected}p" broken` &&
|
|
test "$detected" = xCIT'
|
|
|
|
test_expect_success 'initial commit' 'git commit -a -m initial'
|
|
|
|
# Try removal (b), modification (d), and creation (e).
|
|
test_expect_success 'diff-index with --binary' \
|
|
'echo AIT >a && mv b e && echo CIT >c && cat e >d &&
|
|
git update-index --add --remove a b c d e &&
|
|
tree0=`git write-tree` &&
|
|
git diff --cached --binary >current &&
|
|
git apply --stat --summary current'
|
|
|
|
test_expect_success 'apply binary patch' \
|
|
'git reset --hard &&
|
|
git apply --binary --index <current &&
|
|
tree1=`git write-tree` &&
|
|
test "$tree1" = "$tree0"'
|
|
|
|
test_expect_success 'diff --no-index with binary creation' '
|
|
echo Q | q_to_nul >binary &&
|
|
(: hide error code from diff, which just indicates differences
|
|
git diff --binary --no-index /dev/null binary >current ||
|
|
true
|
|
) &&
|
|
rm binary &&
|
|
git apply --binary <current &&
|
|
echo Q >expected &&
|
|
nul_to_q <binary >actual &&
|
|
test_cmp expected actual
|
|
'
|
|
|
|
test_done
|