]>
Commit | Line | Data |
---|---|---|
42d0ee83 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='Binary diff and apply | |
7 | ' | |
8 | ||
9 | . ./test-lib.sh | |
10 | ||
11 | test_expect_success 'prepare repository' \ | |
12 | 'echo AIT >a && echo BIT >b && echo CIT >c && echo DIT >d && | |
13 | git-update-index --add a b c d && | |
14 | echo git >a && | |
15 | cat ../test4012.png >b && | |
16 | echo git >c && | |
17 | cat b b >d' | |
18 | ||
c7053aa8 | 19 | cat > expected <<\EOF |
42d0ee83 JH |
20 | a | 2 +- |
21 | b | Bin | |
22 | c | 2 +- | |
23 | d | Bin | |
24 | 4 files changed, 2 insertions(+), 2 deletions(-) | |
c7053aa8 EW |
25 | EOF |
26 | test_expect_success 'diff without --binary' \ | |
27 | 'git-diff | git-apply --stat --summary >current && | |
28 | cmp current expected' | |
42d0ee83 JH |
29 | |
30 | test_expect_success 'diff with --binary' \ | |
31 | 'git-diff --binary | git-apply --stat --summary >current && | |
c7053aa8 | 32 | cmp current expected' |
42d0ee83 JH |
33 | |
34 | # apply needs to be able to skip the binary material correctly | |
35 | # in order to report the line number of a corrupt patch. | |
36 | test_expect_success 'apply detecting corrupt patch correctly' \ | |
37 | 'git-diff | sed -e 's/-CIT/xCIT/' >broken && | |
38 | if git-apply --stat --summary broken 2>detected | |
39 | then | |
40 | echo unhappy - should have detected an error | |
41 | (exit 1) | |
42 | else | |
43 | echo happy | |
44 | fi && | |
45 | detected=`cat detected` && | |
46 | detected=`expr "$detected" : "fatal.*at line \\([0-9]*\\)\$"` && | |
47 | detected=`sed -ne "${detected}p" broken` && | |
48 | test "$detected" = xCIT' | |
49 | ||
50 | test_expect_success 'apply detecting corrupt patch correctly' \ | |
51 | 'git-diff --binary | sed -e 's/-CIT/xCIT/' >broken && | |
52 | if git-apply --stat --summary broken 2>detected | |
53 | then | |
54 | echo unhappy - should have detected an error | |
55 | (exit 1) | |
56 | else | |
57 | echo happy | |
58 | fi && | |
59 | detected=`cat detected` && | |
60 | detected=`expr "$detected" : "fatal.*at line \\([0-9]*\\)\$"` && | |
61 | detected=`sed -ne "${detected}p" broken` && | |
62 | test "$detected" = xCIT' | |
63 | ||
64 | test_expect_success 'initial commit' 'git-commit -a -m initial' | |
65 | ||
66 | # Try removal (b), modification (d), and creation (e). | |
67 | test_expect_success 'diff-index with --binary' \ | |
68 | 'echo AIT >a && mv b e && echo CIT >c && cat e >d && | |
69 | git-update-index --add --remove a b c d e && | |
70 | tree0=`git-write-tree` && | |
71 | git-diff --cached --binary >current && | |
72 | git-apply --stat --summary current' | |
73 | ||
74 | test_expect_success 'apply binary patch' \ | |
75 | 'git-reset --hard && | |
76 | git-apply --binary --index <current && | |
77 | tree1=`git-write-tree` && | |
78 | test "$tree1" = "$tree0"' | |
79 | ||
80 | test_done |