Merge branch 'maint'
[git] / t / t9600-cvsimport.sh
1 #!/bin/sh
2
3 test_description='git-cvsimport basic tests'
4 . ./test-lib.sh
5
6 CVSROOT=$(pwd)/cvsroot
7 export CVSROOT
8 # for clean cvsps cache
9 HOME=$(pwd)
10 export HOME
11
12 if ! type cvs >/dev/null 2>&1
13 then
14         say 'skipping cvsimport tests, cvs not found'
15         test_done
16         exit
17 fi
18
19 cvsps_version=`cvsps -h 2>&1 | sed -ne 's/cvsps version //p'`
20 case "$cvsps_version" in
21 2.1)
22         ;;
23 '')
24         say 'skipping cvsimport tests, cvsps not found'
25         test_done
26         exit
27         ;;
28 *)
29         say 'skipping cvsimport tests, cvsps too old'
30         test_done
31         exit
32         ;;
33 esac
34
35 test_expect_success 'setup cvsroot' 'cvs init'
36
37 test_expect_success 'setup a cvs module' '
38
39         mkdir "$CVSROOT/module" &&
40         cvs co -d module-cvs module &&
41         cd module-cvs &&
42         cat <<EOF >o_fortuna &&
43 O Fortuna
44 velut luna
45 statu variabilis,
46
47 semper crescis
48 aut decrescis;
49 vita detestabilis
50
51 nunc obdurat
52 et tunc curat
53 ludo mentis aciem,
54
55 egestatem,
56 potestatem
57 dissolvit ut glaciem.
58 EOF
59         cvs add o_fortuna &&
60         cat <<EOF >message &&
61 add "O Fortuna" lyrics
62
63 These public domain lyrics make an excellent sample text.
64 EOF
65         cvs commit -F message &&
66         cd ..
67 '
68
69 test_expect_success 'import a trivial module' '
70
71         git cvsimport -a -z 0 -C module-git module &&
72         test_cmp module-cvs/o_fortuna module-git/o_fortuna
73
74 '
75
76 test_expect_success 'pack refs' 'cd module-git && git gc && cd ..'
77
78 test_expect_success 'update cvs module' '
79
80         cd module-cvs &&
81         cat <<EOF >o_fortuna &&
82 O Fortune,
83 like the moon
84 you are changeable,
85
86 ever waxing
87 and waning;
88 hateful life
89
90 first oppresses
91 and then soothes
92 as fancy takes it;
93
94 poverty
95 and power
96 it melts them like ice.
97 EOF
98         cat <<EOF >message &&
99 translate to English
100
101 My Latin is terrible.
102 EOF
103         cvs commit -F message &&
104         cd ..
105 '
106
107 test_expect_success 'update git module' '
108
109         cd module-git &&
110         git cvsimport -a -z 0 module &&
111         git merge origin &&
112         cd .. &&
113         test_cmp module-cvs/o_fortuna module-git/o_fortuna
114
115 '
116
117 test_expect_success 'update cvs module' '
118
119         cd module-cvs &&
120                 echo 1 >tick &&
121                 cvs add tick &&
122                 cvs commit -m 1
123         cd ..
124
125 '
126
127 test_expect_success 'cvsimport.module config works' '
128
129         cd module-git &&
130                 git config cvsimport.module module &&
131                 git cvsimport -a -z0 &&
132                 git merge origin &&
133         cd .. &&
134         test_cmp module-cvs/tick module-git/tick
135
136 '
137
138 test_expect_success 'import from a CVS working tree' '
139
140         cvs co -d import-from-wt module &&
141         cd import-from-wt &&
142                 git cvsimport -a -z0 &&
143                 echo 1 >expect &&
144                 git log -1 --pretty=format:%s%n >actual &&
145                 test_cmp actual expect &&
146         cd ..
147
148 '
149
150 test_done