]>
Commit | Line | Data |
---|---|---|
92927ed0 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2005 Junio C Hamano | |
4 | # | |
5 | ||
6 | test_description='git-apply handling binary patches | |
7 | ||
8 | ' | |
9 | . ./test-lib.sh | |
10 | ||
11 | # setup | |
12 | ||
13 | cat >file1 <<EOF | |
14 | A quick brown fox jumps over the lazy dog. | |
15 | A tiny little penguin runs around in circles. | |
16 | There is a flag with Linux written on it. | |
17 | A slow black-and-white panda just sits there, | |
18 | munching on his bamboo. | |
19 | EOF | |
20 | cat file1 >file2 | |
21 | cat file1 >file4 | |
22 | ||
23 | git-update-index --add --remove file1 file2 file4 | |
24 | git-commit -m 'Initial Version' 2>/dev/null | |
25 | ||
26 | git-checkout -b binary | |
27 | tr 'x' '\0' <file1 >file3 | |
28 | cat file3 >file4 | |
29 | git-add file2 | |
30 | tr '\0' 'v' <file3 >file1 | |
31 | rm -f file2 | |
32 | git-update-index --add --remove file1 file2 file3 file4 | |
33 | git-commit -m 'Second Version' | |
34 | ||
35 | git-diff-tree -p master binary >B.diff | |
36 | git-diff-tree -p -C master binary >C.diff | |
37 | ||
fbba222f JH |
38 | git-diff-tree -p --full-index master binary >BF.diff |
39 | git-diff-tree -p --full-index -C master binary >CF.diff | |
40 | ||
92927ed0 JH |
41 | test_expect_success 'stat binary diff -- should not fail.' \ |
42 | 'git-checkout master | |
43 | git-apply --stat --summary B.diff' | |
44 | ||
45 | test_expect_success 'stat binary diff (copy) -- should not fail.' \ | |
46 | 'git-checkout master | |
47 | git-apply --stat --summary C.diff' | |
48 | ||
49 | test_expect_failure 'check binary diff -- should fail.' \ | |
50 | 'git-checkout master | |
51 | git-apply --check B.diff' | |
52 | ||
53 | test_expect_failure 'check binary diff (copy) -- should fail.' \ | |
54 | 'git-checkout master | |
55 | git-apply --check C.diff' | |
56 | ||
011f4274 JH |
57 | test_expect_failure 'check incomplete binary diff with replacement -- should fail.' \ |
58 | 'git-checkout master | |
59 | git-apply --check --allow-binary-replacement B.diff' | |
60 | ||
61 | test_expect_failure 'check incomplete binary diff with replacement (copy) -- should fail.' \ | |
62 | 'git-checkout master | |
63 | git-apply --check --allow-binary-replacement C.diff' | |
64 | ||
fbba222f JH |
65 | test_expect_success 'check binary diff with replacement.' \ |
66 | 'git-checkout master | |
67 | git-apply --check --allow-binary-replacement BF.diff' | |
68 | ||
69 | test_expect_success 'check binary diff with replacement (copy).' \ | |
70 | 'git-checkout master | |
71 | git-apply --check --allow-binary-replacement CF.diff' | |
72 | ||
92927ed0 JH |
73 | # Now we start applying them. |
74 | ||
fbba222f JH |
75 | do_reset () { |
76 | rm -f file? | |
77 | git-reset --hard | |
78 | git-checkout -f master | |
79 | } | |
80 | ||
92927ed0 | 81 | test_expect_failure 'apply binary diff -- should fail.' \ |
fbba222f | 82 | 'do_reset |
92927ed0 JH |
83 | git-apply B.diff' |
84 | ||
92927ed0 | 85 | test_expect_failure 'apply binary diff -- should fail.' \ |
fbba222f | 86 | 'do_reset |
92927ed0 JH |
87 | git-apply --index B.diff' |
88 | ||
92927ed0 | 89 | test_expect_failure 'apply binary diff (copy) -- should fail.' \ |
fbba222f | 90 | 'do_reset |
92927ed0 JH |
91 | git-apply C.diff' |
92 | ||
92927ed0 | 93 | test_expect_failure 'apply binary diff (copy) -- should fail.' \ |
fbba222f | 94 | 'do_reset |
92927ed0 JH |
95 | git-apply --index C.diff' |
96 | ||
fbba222f JH |
97 | test_expect_failure 'apply binary diff without replacement -- should fail.' \ |
98 | 'do_reset | |
99 | git-apply BF.diff' | |
100 | ||
101 | test_expect_failure 'apply binary diff without replacement (copy) -- should fail.' \ | |
102 | 'do_reset | |
103 | git-apply CF.diff' | |
104 | ||
105 | test_expect_success 'apply binary diff.' \ | |
106 | 'do_reset | |
107 | git-apply --allow-binary-replacement --index BF.diff && | |
108 | test -z "$(git-diff --name-status binary)"' | |
109 | ||
110 | test_expect_success 'apply binary diff (copy).' \ | |
111 | 'do_reset | |
112 | git-apply --allow-binary-replacement --index CF.diff && | |
113 | test -z "$(git-diff --name-status binary)"' | |
114 | ||
92927ed0 | 115 | test_done |