1: included from 6002 and others 2 3[-d .git/refs/tags ] ||mkdir-p .git/refs/tags 4 5:>sed.script 6 7# Answer the sha1 has associated with the tag. The tag must exist in .git or .git/refs/tags 8tag() 9{ 10 _tag=$1 11[-f .git/refs/tags/$_tag] || error "tag:\"$_tag\"does not exist" 12cat .git/refs/tags/$_tag 13} 14 15# Generate a commit using the text specified to make it unique and the tree 16# named by the tag specified. 17unique_commit() 18{ 19 _text=$1 20 _tree=$2 21shift2 22echo$_text| git commit-tree$(tag $_tree)"$@" 23} 24 25# Save the output of a command into the tag specified. Prepend 26# a substitution script for the tag onto the front of sed.script 27save_tag() 28{ 29 _tag=$1 30[-n"$_tag"] || error "usage: save_tag tag commit-args ..." 31shift1 32"$@">.git/refs/tags/$_tag 33 34echo"s/$(tag $_tag)/$_tag/g">sed.script.tmp 35cat sed.script>>sed.script.tmp 36rm sed.script 37mv sed.script.tmp sed.script 38} 39 40# Replace unhelpful sha1 hashses with their symbolic equivalents 41entag() 42{ 43sed-fsed.script 44} 45 46# Execute a command after first saving, then setting the GIT_AUTHOR_EMAIL 47# tag to a specified value. Restore the original value on return. 48as_author() 49{ 50 _author=$1 51shift1 52 _save=$GIT_AUTHOR_EMAIL 53 54 GIT_AUTHOR_EMAIL="$_author" 55export GIT_AUTHOR_EMAIL 56"$@" 57iftest -z"$_save" 58then 59unset GIT_AUTHOR_EMAIL 60else 61 GIT_AUTHOR_EMAIL="$_save" 62export GIT_AUTHOR_EMAIL 63fi 64} 65 66commit_date() 67{ 68 _commit=$1 69 git cat-file commit $_commit|sed-n"s/^committer .*> \([0-9]*\) .*/\1/p" 70} 71 72on_committer_date() 73{ 74 _date=$1 75shift1 76 GIT_COMMITTER_DATE="$_date" 77export GIT_COMMITTER_DATE 78"$@" 79unset GIT_COMMITTER_DATE 80} 81 82# Execute a command and suppress any error output. 83hide_error() 84{ 85"$@"2>/dev/null 86} 87 88check_output() 89{ 90 _name=$1 91shift1 92ifeval"$*"| entag >$_name.actual 93then 94diff$_name.expected $_name.actual 95else 96return1; 97fi 98} 99 100# Turn a reasonable test description into a reasonable test name. 101# All alphanums translated into -'s which are then compressed and stripped 102# from front and back. 103name_from_description() 104{ 105 perl -pe' 106 s/[^A-Za-z0-9.]/-/g; 107 s/-+/-/g; 108 s/-$//; 109 s/^-//; 110 y/A-Z/a-z/; 111 ' 112} 113 114 115# Execute the test described by the first argument, by eval'ing 116# command line specified in the 2nd argument. Check the status code 117# is zero and that the output matches the stream read from 118# stdin. 119test_output_expect_success() 120{ 121 _description=$1 122 _test=$2 123[$#-eq2] || error "usage: test_output_expect_success description test <<EOF ... EOF" 124 _name=$(echo $_description | name_from_description) 125cat>$_name.expected 126 test_expect_success "$_description""check_output$_name\"$_test\"" 127}