remote-helpers: test: cleanup white-spaces
[git] / contrib / remote-helpers / test-hg.sh
1 #!/bin/sh
2 #
3 # Copyright (c) 2012 Felipe Contreras
4 #
5 # Base commands from hg-git tests:
6 # https://bitbucket.org/durin42/hg-git/src
7 #
8
9 test_description='Test remote-hg'
10
11 . ./test-lib.sh
12
13 if ! test_have_prereq PYTHON; then
14         skip_all='skipping remote-hg tests; python not available'
15         test_done
16 fi
17
18 if ! python -c 'import mercurial'; then
19         skip_all='skipping remote-hg tests; mercurial not available'
20         test_done
21 fi
22
23 check () {
24         (cd $1 &&
25         git log --format='%s' -1 &&
26         git symbolic-ref HEAD) > actual &&
27         (echo $2 &&
28         echo "refs/heads/$3") > expected &&
29         test_cmp expected actual
30 }
31
32 setup () {
33         (
34         echo "[ui]"
35         echo "username = H G Wells <wells@example.com>"
36         ) >> "$HOME"/.hgrc
37 }
38
39 setup
40
41 test_expect_success 'cloning' '
42         test_when_finished "rm -rf gitrepo*" &&
43
44         (
45         hg init hgrepo &&
46         cd hgrepo &&
47         echo zero > content &&
48         hg add content &&
49         hg commit -m zero
50         ) &&
51
52         git clone "hg::$PWD/hgrepo" gitrepo &&
53         check gitrepo zero master
54 '
55
56 test_expect_success 'cloning with branches' '
57         test_when_finished "rm -rf gitrepo*" &&
58
59         (
60         cd hgrepo &&
61         hg branch next &&
62         echo next > content &&
63         hg commit -m next
64         ) &&
65
66         git clone "hg::$PWD/hgrepo" gitrepo &&
67         check gitrepo next next &&
68
69         (cd hgrepo && hg checkout default) &&
70
71         git clone "hg::$PWD/hgrepo" gitrepo2 &&
72         check gitrepo2 zero master
73 '
74
75 test_expect_success 'cloning with bookmarks' '
76         test_when_finished "rm -rf gitrepo*" &&
77
78         (
79         cd hgrepo &&
80         hg bookmark feature-a &&
81         echo feature-a > content &&
82         hg commit -m feature-a
83         ) &&
84
85         git clone "hg::$PWD/hgrepo" gitrepo &&
86         check gitrepo feature-a feature-a
87 '
88
89 test_expect_success 'cloning with detached head' '
90         test_when_finished "rm -rf gitrepo*" &&
91
92         (
93         cd hgrepo &&
94         hg update -r 0
95         ) &&
96
97         git clone "hg::$PWD/hgrepo" gitrepo &&
98         check gitrepo zero master
99 '
100
101 test_expect_success 'update bookmark' '
102         test_when_finished "rm -rf gitrepo*" &&
103
104         (
105         cd hgrepo &&
106         hg bookmark devel
107         ) &&
108
109         (
110         git clone "hg::$PWD/hgrepo" gitrepo &&
111         cd gitrepo &&
112         git checkout --quiet devel &&
113         echo devel > content &&
114         git commit -a -m devel &&
115         git push --quiet
116         ) &&
117
118         hg -R hgrepo bookmarks | egrep "devel[   ]+3:"
119 '
120
121 author_test () {
122         echo $1 >> content &&
123         hg commit -u "$2" -m "add $1" &&
124         echo "$3" >> ../expected
125 }
126
127 test_expect_success 'authors' '
128         mkdir -p tmp && cd tmp &&
129         test_when_finished "cd .. && rm -rf tmp" &&
130
131         (
132         hg init hgrepo &&
133         cd hgrepo &&
134
135         touch content &&
136         hg add content &&
137
138         author_test alpha "" "H G Wells <wells@example.com>" &&
139         author_test beta "test" "test <unknown>" &&
140         author_test beta "test <test@example.com> (comment)" "test <test@example.com>" &&
141         author_test gamma "<test@example.com>" "Unknown <test@example.com>" &&
142         author_test delta "name<test@example.com>" "name <test@example.com>" &&
143         author_test epsilon "name <test@example.com" "name <test@example.com>" &&
144         author_test zeta " test " "test <unknown>" &&
145         author_test eta "test < test@example.com >" "test <test@example.com>" &&
146         author_test theta "test >test@example.com>" "test <test@example.com>" &&
147         author_test iota "test < test <at> example <dot> com>" "test <unknown>" &&
148         author_test kappa "test@example.com" "Unknown <test@example.com>"
149         ) &&
150
151         git clone "hg::$PWD/hgrepo" gitrepo &&
152         git --git-dir=gitrepo/.git log --reverse --format="%an <%ae>" > actual &&
153
154         test_cmp expected actual
155 '
156
157 test_done