]> git.ipfire.org Git - thirdparty/git.git/blob - t/lib-t6000.sh
use test number as port number
[thirdparty/git.git] / t / lib-t6000.sh
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
8 tag()
9 {
10 _tag=$1
11 [ -f .git/refs/tags/$_tag ] || error "tag: \"$_tag\" does not exist"
12 cat .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.
17 unique_commit()
18 {
19 _text=$1
20 _tree=$2
21 shift 2
22 echo $_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
27 save_tag()
28 {
29 _tag=$1
30 [ -n "$_tag" ] || error "usage: save_tag tag commit-args ..."
31 shift 1
32 "$@" >.git/refs/tags/$_tag
33
34 echo "s/$(tag $_tag)/$_tag/g" > sed.script.tmp
35 cat sed.script >> sed.script.tmp
36 rm sed.script
37 mv sed.script.tmp sed.script
38 }
39
40 # Replace unhelpful sha1 hashses with their symbolic equivalents
41 entag()
42 {
43 sed -f sed.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.
48 as_author()
49 {
50 _author=$1
51 shift 1
52 _save=$GIT_AUTHOR_EMAIL
53
54 GIT_AUTHOR_EMAIL="$_author"
55 export GIT_AUTHOR_EMAIL
56 "$@"
57 if test -z "$_save"
58 then
59 unset GIT_AUTHOR_EMAIL
60 else
61 GIT_AUTHOR_EMAIL="$_save"
62 export GIT_AUTHOR_EMAIL
63 fi
64 }
65
66 commit_date()
67 {
68 _commit=$1
69 git cat-file commit $_commit | sed -n "s/^committer .*> \([0-9]*\) .*/\1/p"
70 }
71
72 on_committer_date()
73 {
74 _date=$1
75 shift 1
76 GIT_COMMITTER_DATE="$_date"
77 export GIT_COMMITTER_DATE
78 "$@"
79 unset GIT_COMMITTER_DATE
80 }
81
82 # Execute a command and suppress any error output.
83 hide_error()
84 {
85 "$@" 2>/dev/null
86 }
87
88 check_output()
89 {
90 _name=$1
91 shift 1
92 if eval "$*" | entag > $_name.actual
93 then
94 test_cmp $_name.expected $_name.actual
95 else
96 return 1;
97 fi
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.
103 name_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.
119 test_output_expect_success()
120 {
121 _description=$1
122 _test=$2
123 [ $# -eq 2 ] || error "usage: test_output_expect_success description test <<EOF ... EOF"
124 _name=$(echo $_description | name_from_description)
125 cat > $_name.expected
126 test_expect_success "$_description" "check_output $_name \"$_test\""
127 }