Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='test describe |
| 4 | |
| 5 | B |
| 6 | .--------------o----o----o----x |
| 7 | / / / |
| 8 | o----o----o----o----o----. / |
| 9 | \ A c / |
| 10 | .------------o---o---o |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 11 | D,R e |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 12 | ' |
| 13 | . ./test-lib.sh |
| 14 | |
| 15 | check_describe () { |
| 16 | expect="$1" |
| 17 | shift |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 18 | R=$(git describe "$@" 2>err.actual) |
Shawn O. Pearce | be7bae0 | 2008-03-03 20:09:31 -0500 | [diff] [blame] | 19 | S=$? |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 20 | cat err.actual >&3 |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 21 | test_expect_success "describe $*" ' |
Shawn O. Pearce | be7bae0 | 2008-03-03 20:09:31 -0500 | [diff] [blame] | 22 | test $S = 0 && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 23 | case "$R" in |
| 24 | $expect) echo happy ;; |
| 25 | *) echo "Oops - $R is not $expect"; |
| 26 | false ;; |
| 27 | esac |
| 28 | ' |
| 29 | } |
| 30 | |
| 31 | test_expect_success setup ' |
| 32 | |
| 33 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 34 | echo one >file && git add file && git commit -m initial && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 35 | one=$(git rev-parse HEAD) && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 36 | |
Junio C Hamano | 024ab97 | 2009-10-23 11:42:39 -0700 | [diff] [blame] | 37 | git describe --always HEAD && |
| 38 | |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 39 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 40 | echo two >file && git add file && git commit -m second && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 41 | two=$(git rev-parse HEAD) && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 42 | |
| 43 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 44 | echo three >file && git add file && git commit -m third && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 45 | |
| 46 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 47 | echo A >file && git add file && git commit -m A && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 48 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 49 | git tag -a -m A A && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 50 | |
| 51 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 52 | echo c >file && git add file && git commit -m c && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 53 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 54 | git tag c && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 55 | |
| 56 | git reset --hard $two && |
| 57 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 58 | echo B >side && git add side && git commit -m B && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 59 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 60 | git tag -a -m B B && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 61 | |
| 62 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 63 | git merge -m Merged c && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 64 | merged=$(git rev-parse HEAD) && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 65 | |
| 66 | git reset --hard $two && |
| 67 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 68 | echo D >another && git add another && git commit -m D && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 69 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 70 | git tag -a -m D D && |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 71 | test_tick && |
| 72 | git tag -a -m R R && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 73 | |
| 74 | test_tick && |
| 75 | echo DD >another && git commit -a -m another && |
| 76 | |
| 77 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 78 | git tag e && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 79 | |
| 80 | test_tick && |
| 81 | echo DDD >another && git commit -a -m "yet another" && |
| 82 | |
| 83 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 84 | git merge -m Merged $merged && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 85 | |
| 86 | test_tick && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 87 | echo X >file && echo X >side && git add file side && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 88 | git commit -m x |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 89 | |
| 90 | ' |
| 91 | |
| 92 | check_describe A-* HEAD |
| 93 | check_describe A-* HEAD^ |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 94 | check_describe R-* HEAD^^ |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 95 | check_describe A-* HEAD^^2 |
| 96 | check_describe B HEAD^^2^ |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 97 | check_describe R-* HEAD^^^ |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 98 | |
Shawn O. Pearce | 7e425c4 | 2008-10-13 07:39:46 -0700 | [diff] [blame] | 99 | check_describe c-* --tags HEAD |
| 100 | check_describe c-* --tags HEAD^ |
| 101 | check_describe e-* --tags HEAD^^ |
| 102 | check_describe c-* --tags HEAD^^2 |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 103 | check_describe B --tags HEAD^^2^ |
Thomas Rast | 7a0d61b | 2009-11-18 14:32:26 +0100 | [diff] [blame] | 104 | check_describe e --tags HEAD^^^ |
| 105 | |
| 106 | check_describe heads/master --all HEAD |
| 107 | check_describe tags/c-* --all HEAD^ |
| 108 | check_describe tags/e --all HEAD^^^ |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 109 | |
Santi Béjar | 518120e | 2008-02-25 10:43:33 +0100 | [diff] [blame] | 110 | check_describe B-0-* --long HEAD^^2^ |
Junio C Hamano | 4d4c3e1 | 2008-03-03 18:29:51 -0800 | [diff] [blame] | 111 | check_describe A-3-* --long HEAD^^2 |
Santi Béjar | 518120e | 2008-02-25 10:43:33 +0100 | [diff] [blame] | 112 | |
Mike Crowe | e00dd1e | 2013-05-17 21:56:18 +0100 | [diff] [blame] | 113 | check_describe c-7-* --tags |
| 114 | check_describe e-3-* --first-parent --tags |
| 115 | |
Shawn O. Pearce | 81dc223 | 2008-12-26 14:02:01 -0800 | [diff] [blame] | 116 | : >err.expect |
| 117 | check_describe A --all A^0 |
| 118 | test_expect_success 'no warning was displayed for A' ' |
| 119 | test_cmp err.expect err.actual |
| 120 | ' |
| 121 | |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 122 | test_expect_success 'rename tag A to Q locally' ' |
| 123 | mv .git/refs/tags/A .git/refs/tags/Q |
| 124 | ' |
| 125 | cat - >err.expect <<EOF |
| 126 | warning: tag 'A' is really 'Q' here |
| 127 | EOF |
| 128 | check_describe A-* HEAD |
Junio C Hamano | b3e1900 | 2011-04-12 16:33:39 -0700 | [diff] [blame] | 129 | test_expect_success 'warning was displayed for Q' ' |
| 130 | test_i18ncmp err.expect err.actual |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 131 | ' |
| 132 | test_expect_success 'rename tag Q back to A' ' |
| 133 | mv .git/refs/tags/Q .git/refs/tags/A |
| 134 | ' |
| 135 | |
Shawn O. Pearce | d1b28f5 | 2008-03-03 20:09:35 -0500 | [diff] [blame] | 136 | test_expect_success 'pack tag refs' 'git pack-refs' |
| 137 | check_describe A-* HEAD |
| 138 | |
Jean Privat | 9f67d2e | 2009-10-21 09:35:22 -0400 | [diff] [blame] | 139 | check_describe "A-*[0-9a-f]" --dirty |
| 140 | |
| 141 | test_expect_success 'set-up dirty work tree' ' |
| 142 | echo >>file |
| 143 | ' |
| 144 | |
| 145 | check_describe "A-*[0-9a-f]-dirty" --dirty |
| 146 | |
| 147 | check_describe "A-*[0-9a-f].mod" --dirty=.mod |
| 148 | |
| 149 | test_expect_success 'describe --dirty HEAD' ' |
| 150 | test_must_fail git describe --dirty HEAD |
| 151 | ' |
| 152 | |
Michael Dressel | 4ed19a3 | 2008-06-04 21:06:31 +0200 | [diff] [blame] | 153 | test_expect_success 'set-up matching pattern tests' ' |
| 154 | git tag -a -m test-annotated test-annotated && |
| 155 | echo >>file && |
| 156 | test_tick && |
| 157 | git commit -a -m "one more" && |
| 158 | git tag test1-lightweight && |
| 159 | echo >>file && |
| 160 | test_tick && |
| 161 | git commit -a -m "yet another" && |
| 162 | git tag test2-lightweight && |
| 163 | echo >>file && |
| 164 | test_tick && |
| 165 | git commit -a -m "even more" |
| 166 | |
| 167 | ' |
| 168 | |
| 169 | check_describe "test-annotated-*" --match="test-*" |
| 170 | |
| 171 | check_describe "test1-lightweight-*" --tags --match="test1-*" |
| 172 | |
| 173 | check_describe "test2-lightweight-*" --tags --match="test2-*" |
| 174 | |
Shawn O. Pearce | 14d4642 | 2008-07-03 02:32:45 +0000 | [diff] [blame] | 175 | check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^ |
| 176 | |
Junio C Hamano | 118aa4a | 2013-07-18 14:11:35 -0700 | [diff] [blame] | 177 | test_expect_success 'name-rev with exact tags' ' |
| 178 | echo A >expect && |
| 179 | tag_object=$(git rev-parse refs/tags/A) && |
| 180 | git name-rev --tags --name-only $tag_object >actual && |
| 181 | test_cmp expect actual && |
| 182 | |
| 183 | echo "A^0" >expect && |
| 184 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 185 | git name-rev --tags --name-only $tagged_commit >actual && |
| 186 | test_cmp expect actual |
| 187 | ' |
| 188 | |
Junio C Hamano | adfc185 | 2013-07-18 14:46:51 -0700 | [diff] [blame] | 189 | test_expect_success 'describe --contains with the exact tags' ' |
| 190 | echo "A^0" >expect && |
| 191 | tag_object=$(git rev-parse refs/tags/A) && |
| 192 | git describe --contains $tag_object >actual && |
| 193 | test_cmp expect actual && |
| 194 | |
| 195 | echo "A^0" >expect && |
| 196 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 197 | git describe --contains $tagged_commit >actual && |
| 198 | test_cmp expect actual |
| 199 | ' |
| 200 | |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 201 | test_done |