tg.sh: handle help -h
[topgit/pro.git] / t / t6110-tag-delete.sh
blobaa1fb550b67cff1f6b5d5cd7bbc408072ed53361
1 #!/bin/sh
3 test_description='test tg tag --delete'
5 . ./test-lib.sh
7 test_plan 10
9 test_expect_success 'no delete unborn HEAD' '
10 test_must_fail tg tag --delete HEAD &&
11 test_must_fail tg tag --delete HEad &&
12 test_must_fail tg tag --delete @
15 test_expect_success 'birth a HEAD' '
16 test_commit "one head here" &&
17 test_when_finished test_set_prereq SETUP
20 test_expect_success SETUP 'no delete symref HEAD' '
21 test_must_fail tg tag --delete HEAD &&
22 test_must_fail tg tag --delete HEad &&
23 test_must_fail tg tag --delete @
26 test_expect_success SETUP 'no delete symref HEAD offers advice' '
27 test_must_fail tg tag --delete HEAD 2>advice &&
28 grep -q "did you mean to delete \"master\"" advice &&
29 test_must_fail tg tag --delete @ 2>advice &&
30 grep -q "did you mean to delete \"master\"" advice
33 test_expect_success SETUP 'no delete detached HEAD' '
34 git update-ref --no-deref HEAD HEAD HEAD &&
35 test_must_fail tg tag --delete HEAD &&
36 test_must_fail tg tag --delete HEad &&
37 test_must_fail tg tag --delete @
40 test_expect_success SETUP 'reattach HEAD' '
41 git symbolic-ref HEAD refs/heads/master
44 test_expect_success SETUP 'disallowed suffix offers advice' '
45 test_must_fail tg tag --delete master@{0} 2>advice &&
46 grep -q "try --drop" advice &&
47 test_must_fail tg tag --clear master@{0} 2>advice &&
48 grep -q "try --drop" advice
51 test_expect_success SETUP 'delete embedded symref only' '
52 git symbolic-ref refs/remotes/origin/HEAD refs/heads/master &&
53 tg tag --delete origin &&
54 test_must_fail git rev-parse --quiet --verify refs/remotes/origin/HEAD -- &&
55 git rev-parse --verify refs/heads/master -- >/dev/null &&
56 git symbolic-ref refs/remotes/origin/HEAD refs/heads/master &&
57 tg tag --delete origin/HEAD &&
58 test_must_fail git rev-parse --quiet --verify refs/remotes/origin/HEAD -- &&
59 git rev-parse --verify refs/heads/master -- >/dev/null &&
60 git symbolic-ref refs/remotes/origin/HEAD refs/heads/master &&
61 tg tag --delete remotes/origin/HEAD &&
62 test_must_fail git rev-parse --quiet --verify refs/remotes/origin/HEAD -- &&
63 git rev-parse --verify refs/heads/master -- >/dev/null &&
64 git symbolic-ref refs/remotes/origin/HEAD refs/heads/master &&
65 tg tag --delete refs/remotes/origin/HEAD &&
66 test_must_fail git rev-parse --quiet --verify refs/remotes/origin/HEAD -- &&
67 git rev-parse --verify refs/heads/master -- >/dev/null
70 test_expect_success SETUP 'delete normal branch' '
71 test_must_fail tg tag --delete other >/dev/null 2>&1 &&
72 git update-ref refs/heads/other master &&
73 git rev-parse --verify --quiet other -- >/dev/null &&
74 tg tag --delete other &&
75 test_must_fail git rev-parse --verify --quiet heads/other -- >/dev/null &&
76 test_must_fail tg tag --delete heads/other >/dev/null 2>&1 &&
77 git update-ref refs/heads/other master &&
78 git rev-parse --verify --quiet heads/other -- >/dev/null &&
79 tg tag --delete heads/other &&
80 test_must_fail git rev-parse --verify --quiet refs/heads/other -- >/dev/null &&
81 test_must_fail tg tag --delete refs/heads/other >/dev/null 2>&1 &&
82 git update-ref refs/heads/other master &&
83 git rev-parse --verify --quiet refs/heads/other -- >/dev/null &&
84 tg tag --delete refs/heads/other &&
85 test_must_fail git rev-parse --verify --quiet refs/heads/other -- >/dev/null
88 test_expect_success SETUP 'delete detaches HEAD symref' '
89 git rev-parse --verify --quiet master -- >/dev/null &&
90 test_must_fail git rev-parse --verify --quiet other >/dev/null 2>&1 &&
92 git update-ref refs/heads/other master &&
93 git rev-parse --verify --quiet other -- >/dev/null &&
94 git update-ref --no-deref HEAD master &&
95 git rev-parse --verify --quiet HEAD -- >/dev/null &&
96 tg tag --delete other &&
97 test_must_fail git rev-parse --verify --quiet other >/dev/null 2>&1 &&
98 git rev-parse --verify --quiet master -- >/dev/null &&
99 git rev-parse --verify --quiet HEAD -- >/dev/null &&
101 git update-ref refs/heads/other master &&
102 git rev-parse --verify --quiet other -- >/dev/null &&
103 git update-ref --no-deref HEAD other &&
104 git rev-parse --verify --quiet HEAD -- >/dev/null &&
105 tg tag --delete other &&
106 test_must_fail git rev-parse --verify --quiet other >/dev/null 2>&1 &&
107 git rev-parse --verify --quiet master -- >/dev/null &&
108 git rev-parse --verify --quiet HEAD -- >/dev/null &&
110 git update-ref refs/heads/other master &&
111 git rev-parse --verify --quiet other -- >/dev/null &&
112 git symbolic-ref HEAD refs/heads/master &&
113 git rev-parse --verify --quiet HEAD -- >/dev/null &&
114 tg tag --delete other &&
115 test_must_fail git rev-parse --verify --quiet other >/dev/null 2>&1 &&
116 git rev-parse --verify --quiet master -- >/dev/null &&
117 git rev-parse --verify --quiet HEAD -- >/dev/null &&
119 # those were all preludes, this is the real detach test here
121 git update-ref refs/heads/other master &&
122 git rev-parse --verify --quiet other -- >/dev/null &&
123 git symbolic-ref HEAD refs/heads/other &&
124 git rev-parse --verify --quiet HEAD -- >/dev/null &&
125 tg tag --delete other &&
126 test_must_fail git rev-parse --verify --quiet other >/dev/null 2>&1 &&
127 mrev="$(git rev-parse --verify --quiet master --)" && test -n "$mrev" &&
128 hrev="$(git rev-parse --verify --quiet HEAD --)" && test -n "$hrev" &&
129 test "$hrev" = "$mrev"
132 test_done