t / t3800-mktag.shon commit t7003: make test repeatable (aee078b)
   1#!/bin/sh
   2#
   3#
   4
   5test_description='git-mktag: tag object verify test'
   6
   7. ./test-lib.sh
   8
   9###########################################################
  10# check the tag.sig file, expecting verify_tag() to fail,
  11# and checking that the error message matches the pattern
  12# given in the expect.pat file.
  13
  14check_verify_failure () {
  15    test_expect_success \
  16        "$1" \
  17        'git-mktag <tag.sig 2>message ||
  18         egrep -q -f expect.pat message'
  19}
  20
  21###########################################################
  22# first create a commit, so we have a valid object/type
  23# for the tag.
  24echo Hello >A
  25git-update-index --add A
  26git-commit -m "Initial commit"
  27head=$(git-rev-parse --verify HEAD)
  28
  29############################################################
  30#  1. length check
  31
  32cat >tag.sig <<EOF
  33too short for a tag
  34EOF
  35
  36cat >expect.pat <<EOF
  37^error: .*size wrong.*$
  38EOF
  39
  40check_verify_failure 'Tag object length check'
  41
  42############################################################
  43#  2. object line label check
  44
  45cat >tag.sig <<EOF
  46xxxxxx 139e9b33986b1c2670fff52c5067603117b3e895
  47type tag
  48tag mytag
  49EOF
  50
  51cat >expect.pat <<EOF
  52^error: char0: .*"object "$
  53EOF
  54
  55check_verify_failure '"object" line label check'
  56
  57############################################################
  58#  3. object line SHA1 check
  59
  60cat >tag.sig <<EOF
  61object zz9e9b33986b1c2670fff52c5067603117b3e895
  62type tag
  63tag mytag
  64EOF
  65
  66cat >expect.pat <<EOF
  67^error: char7: .*SHA1 hash$
  68EOF
  69
  70check_verify_failure '"object" line SHA1 check'
  71
  72############################################################
  73#  4. type line label check
  74
  75cat >tag.sig <<EOF
  76object 779e9b33986b1c2670fff52c5067603117b3e895
  77xxxx tag
  78tag mytag
  79EOF
  80
  81cat >expect.pat <<EOF
  82^error: char47: .*"[\]ntype "$
  83EOF
  84
  85check_verify_failure '"type" line label check'
  86
  87############################################################
  88#  5. type line eol check
  89
  90echo "object 779e9b33986b1c2670fff52c5067603117b3e895" >tag.sig
  91printf "type tagsssssssssssssssssssssssssssssss" >>tag.sig
  92
  93cat >expect.pat <<EOF
  94^error: char48: .*"[\]n"$
  95EOF
  96
  97check_verify_failure '"type" line eol check'
  98
  99############################################################
 100#  6. tag line label check #1
 101
 102cat >tag.sig <<EOF
 103object 779e9b33986b1c2670fff52c5067603117b3e895
 104type tag
 105xxx mytag
 106EOF
 107
 108cat >expect.pat <<EOF
 109^error: char57: no "tag " found$
 110EOF
 111
 112check_verify_failure '"tag" line label check #1'
 113
 114############################################################
 115#  7. tag line label check #2
 116
 117cat >tag.sig <<EOF
 118object 779e9b33986b1c2670fff52c5067603117b3e895
 119type taggggggggggggggggggggggggggggggg
 120tag
 121EOF
 122
 123cat >expect.pat <<EOF
 124^error: char87: no "tag " found$
 125EOF
 126
 127check_verify_failure '"tag" line label check #2'
 128
 129############################################################
 130#  8. type line type-name length check
 131
 132cat >tag.sig <<EOF
 133object 779e9b33986b1c2670fff52c5067603117b3e895
 134type taggggggggggggggggggggggggggggggg
 135tag mytag
 136EOF
 137
 138cat >expect.pat <<EOF
 139^error: char53: type too long$
 140EOF
 141
 142check_verify_failure '"type" line type-name length check'
 143
 144############################################################
 145#  9. verify object (SHA1/type) check
 146
 147cat >tag.sig <<EOF
 148object 779e9b33986b1c2670fff52c5067603117b3e895
 149type tagggg
 150tag mytag
 151EOF
 152
 153cat >expect.pat <<EOF
 154^error: char7: could not verify object.*$
 155EOF
 156
 157check_verify_failure 'verify object (SHA1/type) check'
 158
 159############################################################
 160# 10. verify tag-name check
 161
 162cat >tag.sig <<EOF
 163object $head
 164type commit
 165tag my  tag
 166EOF
 167
 168cat >expect.pat <<EOF
 169^error: char67: could not verify tag name$
 170EOF
 171
 172check_verify_failure 'verify tag-name check'
 173
 174############################################################
 175# 11. tagger line label check #1
 176
 177cat >tag.sig <<EOF
 178object $head
 179type commit
 180tag mytag
 181EOF
 182
 183cat >expect.pat <<EOF
 184^error: char70: could not find "tagger"$
 185EOF
 186
 187check_verify_failure '"tagger" line label check #1'
 188
 189############################################################
 190# 12. tagger line label check #2
 191
 192cat >tag.sig <<EOF
 193object $head
 194type commit
 195tag mytag
 196tagger
 197EOF
 198
 199cat >expect.pat <<EOF
 200^error: char70: could not find "tagger"$
 201EOF
 202
 203check_verify_failure '"tagger" line label check #2'
 204
 205############################################################
 206# 13. create valid tag
 207
 208cat >tag.sig <<EOF
 209object $head
 210type commit
 211tag mytag
 212tagger another@example.com
 213EOF
 214
 215test_expect_success \
 216    'create valid tag' \
 217    'git-mktag <tag.sig >.git/refs/tags/mytag 2>message'
 218
 219############################################################
 220# 14. check mytag
 221
 222test_expect_success \
 223    'check mytag' \
 224    'git-tag -l | grep mytag'
 225
 226
 227test_done