]>
Commit | Line | Data |
---|---|---|
0c01857d JK |
1 | #!/bin/sh |
2 | ||
3 | test_description='rewrite diff on binary file' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | # We must be large enough to meet the MINIMUM_BREAK_SIZE | |
8 | # requirement. | |
9 | make_file() { | |
3aa1f7ca JK |
10 | # common first line to help identify rewrite versus regular diff |
11 | printf "=\n" >file | |
0c01857d JK |
12 | for i in 1 2 3 4 5 6 7 8 9 10 |
13 | do | |
14 | for j in 1 2 3 4 5 6 7 8 9 | |
15 | do | |
16 | for k in 1 2 3 4 5 | |
17 | do | |
18 | printf "$1\n" | |
19 | done | |
20 | done | |
3aa1f7ca | 21 | done >>file |
0c01857d JK |
22 | } |
23 | ||
24 | test_expect_success 'create binary file with changes' ' | |
25 | make_file "\\0" && | |
26 | git add file && | |
27 | make_file "\\01" | |
28 | ' | |
29 | ||
30 | test_expect_success 'vanilla diff is binary' ' | |
31 | git diff >diff && | |
32 | grep "Binary files a/file and b/file differ" diff | |
33 | ' | |
34 | ||
35 | test_expect_success 'rewrite diff is binary' ' | |
36 | git diff -B >diff && | |
37 | grep "dissimilarity index" diff && | |
38 | grep "Binary files a/file and b/file differ" diff | |
39 | ' | |
40 | ||
41 | test_expect_success 'rewrite diff can show binary patch' ' | |
42 | git diff -B --binary >diff && | |
43 | grep "dissimilarity index" diff && | |
44 | grep "GIT binary patch" diff | |
45 | ' | |
46 | ||
ded0abc7 JK |
47 | test_expect_success 'rewrite diff --stat shows binary changes' ' |
48 | git diff -B --stat --summary >diff && | |
49 | grep "Bin" diff && | |
50 | grep "0 insertions.*0 deletions" diff && | |
51 | grep " rewrite file" diff | |
52 | ' | |
53 | ||
3aa1f7ca JK |
54 | { |
55 | echo "#!$SHELL_PATH" | |
de749a97 | 56 | cat <<'EOF' |
3aa1f7ca JK |
57 | perl -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < "$1" |
58 | EOF | |
59 | } >dump | |
60 | chmod +x dump | |
61 | ||
62 | test_expect_success 'setup textconv' ' | |
63 | echo file diff=foo >.gitattributes && | |
63962583 | 64 | git config diff.foo.textconv "\"$(pwd)\""/dump |
3aa1f7ca JK |
65 | ' |
66 | ||
67 | test_expect_success 'rewrite diff respects textconv' ' | |
68 | git diff -B >diff && | |
69 | grep "dissimilarity index" diff && | |
70 | grep "^-61" diff && | |
71 | grep "^-0" diff | |
72 | ' | |
73 | ||
0c01857d | 74 | test_done |