]>
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 | ||
6dd88832 JN |
47 | test_expect_success 'rewrite diff --numstat shows binary changes' ' |
48 | git diff -B --numstat --summary >diff && | |
49 | grep -e "- - " diff && | |
50 | grep " rewrite file" diff | |
51 | ' | |
52 | ||
53 | test_expect_success 'diff --stat counts binary rewrite as 0 lines' ' | |
ded0abc7 JK |
54 | git diff -B --stat --summary >diff && |
55 | grep "Bin" diff && | |
6dd88832 | 56 | test_i18ngrep "0 insertions.*0 deletions" diff && |
ded0abc7 JK |
57 | grep " rewrite file" diff |
58 | ' | |
59 | ||
3aa1f7ca JK |
60 | { |
61 | echo "#!$SHELL_PATH" | |
de749a97 | 62 | cat <<'EOF' |
7096b648 | 63 | "$PERL_PATH" -e '$/ = undef; $_ = <>; s/./ord($&)/ge; print $_' < "$1" |
3aa1f7ca JK |
64 | EOF |
65 | } >dump | |
66 | chmod +x dump | |
67 | ||
68 | test_expect_success 'setup textconv' ' | |
69 | echo file diff=foo >.gitattributes && | |
63962583 | 70 | git config diff.foo.textconv "\"$(pwd)\""/dump |
3aa1f7ca JK |
71 | ' |
72 | ||
73 | test_expect_success 'rewrite diff respects textconv' ' | |
74 | git diff -B >diff && | |
75 | grep "dissimilarity index" diff && | |
76 | grep "^-61" diff && | |
77 | grep "^-0" diff | |
78 | ' | |
79 | ||
0c01857d | 80 | test_done |