]>
Commit | Line | Data |
---|---|---|
b26d8d21 TR |
1 | #!/bin/sh |
2 | ||
3 | test_description='git patch-id' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_expect_success 'setup' ' | |
8 | test_commit initial foo a && | |
9 | test_commit first foo b && | |
10 | git checkout -b same HEAD^ && | |
11 | test_commit same-msg foo b && | |
12 | git checkout -b notsame HEAD^ && | |
13 | test_commit notsame-msg foo c | |
14 | ' | |
15 | ||
16 | test_expect_success 'patch-id output is well-formed' ' | |
17 | git log -p -1 | git patch-id > output && | |
18 | grep "^[a-f0-9]\{40\} $(git rev-parse HEAD)$" output | |
19 | ' | |
20 | ||
580fb25b PB |
21 | calc_patch_id () { |
22 | git patch-id | | |
23 | sed "s# .*##" > patch-id_"$1" | |
24 | } | |
25 | ||
b26d8d21 TR |
26 | get_patch_id () { |
27 | git log -p -1 "$1" | git patch-id | | |
28 | sed "s# .*##" > patch-id_"$1" | |
29 | } | |
30 | ||
31 | test_expect_success 'patch-id detects equality' ' | |
32 | get_patch_id master && | |
33 | get_patch_id same && | |
34 | test_cmp patch-id_master patch-id_same | |
35 | ' | |
36 | ||
37 | test_expect_success 'patch-id detects inequality' ' | |
38 | get_patch_id master && | |
39 | get_patch_id notsame && | |
40 | ! test_cmp patch-id_master patch-id_notsame | |
41 | ' | |
42 | ||
580fb25b PB |
43 | test_expect_success 'patch-id supports git-format-patch output' ' |
44 | get_patch_id master && | |
45 | git checkout same && | |
46 | git format-patch -1 --stdout | calc_patch_id same && | |
47 | test_cmp patch-id_master patch-id_same && | |
48 | set `git format-patch -1 --stdout | git patch-id` && | |
49 | test "$2" = `git rev-parse HEAD` | |
50 | ' | |
51 | ||
52 | test_expect_success 'whitespace is irrelevant in footer' ' | |
53 | get_patch_id master && | |
54 | git checkout same && | |
55 | git format-patch -1 --stdout | sed "s/ \$//" | calc_patch_id same && | |
56 | test_cmp patch-id_master patch-id_same | |
57 | ' | |
58 | ||
59 | test_expect_success 'patch-id supports git-format-patch MIME output' ' | |
60 | get_patch_id master && | |
61 | git checkout same && | |
62 | git format-patch -1 --attach --stdout | calc_patch_id same && | |
63 | test_cmp patch-id_master patch-id_same | |
64 | ' | |
65 | ||
f2b5e7af MG |
66 | cat >nonl <<\EOF |
67 | diff --git i/a w/a | |
68 | index e69de29..2e65efe 100644 | |
69 | --- i/a | |
70 | +++ w/a | |
71 | @@ -0,0 +1 @@ | |
72 | +a | |
73 | \ No newline at end of file | |
74 | diff --git i/b w/b | |
75 | index e69de29..6178079 100644 | |
76 | --- i/b | |
77 | +++ w/b | |
78 | @@ -0,0 +1 @@ | |
79 | +b | |
80 | EOF | |
81 | ||
82 | cat >withnl <<\EOF | |
83 | diff --git i/a w/a | |
84 | index e69de29..7898192 100644 | |
85 | --- i/a | |
86 | +++ w/a | |
87 | @@ -0,0 +1 @@ | |
88 | +a | |
89 | diff --git i/b w/b | |
90 | index e69de29..6178079 100644 | |
91 | --- i/b | |
92 | +++ w/b | |
93 | @@ -0,0 +1 @@ | |
94 | +b | |
95 | EOF | |
96 | ||
2485eab5 | 97 | test_expect_success 'patch-id handles no-nl-at-eof markers' ' |
f2b5e7af MG |
98 | cat nonl | calc_patch_id nonl && |
99 | cat withnl | calc_patch_id withnl && | |
100 | test_cmp patch-id_nonl patch-id_withnl | |
101 | ' | |
b26d8d21 | 102 | test_done |