xref: /openbsd/regress/usr.bin/cvs/Makefile (revision 404b540a)
1#	$OpenBSD: Makefile,v 1.26 2008/03/10 20:03:21 tobias Exp $
2
3# Regression tests by Niall O'Higgins <niallo@openbsd.org> and
4# Tobias Stoeckmann <tobias@openbsd.org>.
5# Based on OpenRCS regression framework.
6
7CVS?=		opencvs
8CVSCMD=		${CVS} -f
9
10REGRESS_ROOT=	${.OBJDIR}/regress_cvs_root
11REGRESS_WCOPY=	${.OBJDIR}/regress_cvs_wcopy
12REGRESS_SEED=	${REGRESS_WCOPY}/seed
13
14.if defined(REMOTE)
15MYCVSROOT?=	localhost:${REGRESS_ROOT}
16.if defined(CVS_SERVER)
17TESTFILE=	$(CVS_SERVER)
18.else
19TESTFILE=	cvs
20.endif
21.else
22TESTFILE=	${CVS}
23MYCVSROOT?=	${REGRESS_ROOT}
24.endif
25
26DIFF=		diff -u
27
28CLEANFILES=	regress_cvs_root regress_cvs_wcopy regress_cvs_stderr \
29		regress_cvs_stdout
30
31
32# These must be done in order.
33LTESTS= cvs-initial \
34	cvs-import-mflag \
35	cvs-checkout-dflag \
36	cvs-checkout-rflag-HEAD \
37	cvs-checkout-kflag-k-rflag-HEAD \
38	cvs-checkout-rflag-inval_branch_rev \
39	cvs-checkout-rflag-too_high \
40	cvs-checkout \
41	cvs-checkout-pflag \
42	cvs-tag \
43	cvs-add \
44	cvs-add-dir \
45	cvs-add-subdir_file \
46	cvs-commit-Fflag \
47	cvs-checkout \
48	cvs-tag-branch \
49	cvs-checkout-rflag_branch \
50	cvs-diff-file \
51	cvs-commit-to_branch \
52	cvs-annotate \
53	cvs-annotate-rflag-inval_branch_rev \
54	cvs-annotate-rflag-inval_branch_rev-fflag \
55	cvs-annotate-rflag-unknown_symbol-fflag \
56	cvs-checkout-kflag-kv-rflag-1.1 \
57	cvs-update-Aflag-kflag-kv \
58	cvs-update-Aflag-kflag-k-rflag-1.1 \
59	cvs-update-Aflag-rflag-1.1 \
60	cvs-update-Aflag \
61	cvs-status \
62	cvs-diff \
63	cvs-remove-fflag \
64	cvs-status-vflag \
65	cvs-log \
66	cvs-rlog \
67	cvs-rtag-one_more_branch \
68	cvs-export
69# Known to fail.
70#	cvs-update-for_subdir
71#	cvs-release-dflag
72
73.for t in ${LTESTS}
74REGRESS_TARGETS+=test-${t}
75.endfor
76
77# XXX - should not print anything
78test-cvs-add:
79	@echo "initial content" > ${REGRESS_SEED}/seed2.txt
80	@cd ${REGRESS_SEED}; \
81	    ${CVSCMD} -q add seed2.txt > /dev/null 2> /dev/null
82#	    eval 'test `${CVSCMD} -Q add seed2.txt | wc -l` -eq 0'
83
84test-cvs-add-dir:
85	@mkdir ${REGRESS_SEED}/subdir
86	@cd ${REGRESS_SEED}; ${CVSCMD} -q add subdir > /dev/null 2> /dev/null
87	@test -d ${REGRESS_SEED}/subdir/CVS && \
88	    test -d ${REGRESS_ROOT}/seed/subdir
89
90test-cvs-add-subdir_file:
91	@echo "initial content of seed3.txt" > ${REGRESS_SEED}/subdir/seed3.txt
92	@cd ${REGRESS_SEED}; \
93	    ${CVSCMD} -q add subdir/seed3.txt > /dev/null 2> /dev/null
94#	@eval 'test `${CVSCMD} -Q add seed2.txt | wc -l` -eq 0'
95
96test-cvs-annotate:
97	@cd ${REGRESS_SEED}; \
98	    eval 'test `${CVSCMD} -Q annotate seed1.txt 2>/dev/null | \
99	    wc -l` -eq 3'
100
101test-cvs-annotate-rflag-inval_branch_rev:
102	@cd ${REGRESS_SEED}; \
103	    eval 'test `${CVSCMD} -Q annotate -r 1.2.3.4 seed1.txt 2>/dev/null \
104	    | wc -l` -eq 0'
105
106test-cvs-annotate-rflag-inval_branch_rev-fflag:
107	@cd ${REGRESS_SEED}; \
108	    eval 'test `${CVSCMD} -Q annotate -f -r 1.2.3.4 seed1.txt \
109	    2>/dev/null | wc -l` -eq 3'
110
111test-cvs-annotate-rflag-unknown_symbol-fflag:
112	@cd ${REGRESS_SEED}; \
113	    eval 'test `${CVSCMD} -Q annotate -f -r UNKNOWN seed1.txt \
114	    2>/dev/null | wc -l` -eq 0'
115
116test-cvs-checkout:
117	@rm -rf ${REGRESS_WCOPY}
118	@mkdir ${REGRESS_WCOPY}
119	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} co seed > /dev/null
120	@test -f ${REGRESS_SEED}/seed1.txt
121
122test-cvs-checkout-kflag-k-rflag-HEAD:
123	@rm -rf ${REGRESS_WCOPY}
124	@mkdir ${REGRESS_WCOPY}
125	@cd ${REGRESS_WCOPY}; \
126	    ${CVSCMD} -Q -d ${MYCVSROOT} co -rHEAD -kkv seed > /dev/null
127	@test -f ${REGRESS_SEED}/seed1.txt
128	@eval 'test `grep -c -e THEAD -e -kkv \
129	    ${REGRESS_SEED}/CVS/Entries | wc -l` -eq 1'
130	@eval 'test `grep -c Id$ \
131	    ${REGRESS_SEED}/seed1.txt | wc -l` -eq 1'
132
133test-cvs-checkout-kflag-kv-rflag-1.1:
134	@rm -rf ${REGRESS_WCOPY}
135	@mkdir ${REGRESS_WCOPY}
136	@cd ${REGRESS_WCOPY}; \
137	    ${CVSCMD} -Q -d ${MYCVSROOT} co -r 1.1 -kkv seed > /dev/null
138	@test -f ${REGRESS_SEED}/seed1.txt;
139	@eval 'test `grep -c -e T1.1 -e -kkv \
140	    ${REGRESS_SEED}/CVS/Entries | wc -l` -eq 1'
141
142test-cvs-checkout-pflag:
143	@eval 'test `${CVSCMD} -Q -d ${MYCVSROOT} checkout \
144	    -p seed/seed1.txt 2>/dev/null | wc -l` -eq 2'
145
146test-cvs-checkout-rflag_branch:
147	@rm -rf ${REGRESS_WCOPY}
148	@mkdir ${REGRESS_WCOPY}
149	@cd ${REGRESS_WCOPY}; \
150	    ${CVSCMD} -Q -d ${MYCVSROOT} co -r FIRST_BRANCH seed > /dev/null
151	@test -f ${REGRESS_SEED}/seed1.txt
152	@eval 'test `grep -c TFIRST_BRANCH ${REGRESS_SEED}/CVS/Entries` -eq 2'
153
154test-cvs-checkout-rflag-inval_branch_rev:
155	@rm -rf ${REGRESS_WCOPY}
156	@mkdir ${REGRESS_WCOPY}
157	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} co -r1.2.3.4 seed
158	@eval 'test ! -f ${REGRESS_SEED}/seed1.txt'
159
160test-cvs-checkout-rflag-too_high:
161	@rm -rf ${REGRESS_WCOPY}
162	@mkdir ${REGRESS_WCOPY}
163	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} co -r1.5 seed
164	@eval 'test ! -f ${REGRESS_SEED}/seed1.txt'
165
166test-cvs-checkout-rflag-HEAD:
167	@rm -rf ${REGRESS_WCOPY}
168	@mkdir ${REGRESS_WCOPY}
169	@cd ${REGRESS_WCOPY}; \
170	    ${CVSCMD} -Q -d ${MYCVSROOT} co -rHEAD seed > /dev/null
171	@test -f ${REGRESS_SEED}/seed1.txt;
172	@eval 'test `grep -c THEAD ${REGRESS_SEED}/CVS/Entries | wc -l` -eq 1'
173
174test-cvs-checkout-rflag-1.1:
175	@rm -rf ${REGRESS_WCOPY}
176	@mkdir ${REGRESS_WCOPY}
177	@cd ${REGRESS_WCOPY}; \
178	    ${CVSCMD} -Q -d ${MYCVSROOT} co -r 1.1 seed > /dev/null
179	@test -f ${REGRESS_SEED}/seed1.txt && test -f ${REGRESS_SEED}/seed2.txt
180
181test-cvs-checkout-dflag:
182	@rm -rf ${REGRESS_WCOPY}
183	@mkdir ${REGRESS_WCOPY}
184	@cd ${REGRESS_WCOPY}; \
185	    ${CVSCMD} -Q -d ${MYCVSROOT} co -d seed2 seed > /dev/null
186	@test -d ${REGRESS_WCOPY}/seed2/CVS
187
188test-cvs-checkout-subdir:
189	@rm -rf ${REGRESS_WCOPY}
190	@mkdir ${REGRESS_WCOPY}
191	@cd ${REGRESS_WCOPY}; \
192	    ${CVSCMD} -Q -d ${MYCVSROOT} co seed/subdir > /dev/null
193	@test -f ${REGRESS_SEED}/subdir/seed3.txt && \
194	    test ! -f ${REGRESS_SEED}/seed2.txt
195
196test-cvs-commit-Fflag:
197	@sleep 1
198	@echo "second line" >> ${REGRESS_SEED}/seed1.txt
199	@echo "commit seed repo" > ${REGRESS_WCOPY}/logmsg.txt
200	@cd ${REGRESS_SEED}; ${CVSCMD} commit \
201	    -F ${REGRESS_WCOPY}/logmsg.txt > /dev/null
202	@grep "^@commit seed repo" \
203	    ${REGRESS_ROOT}/seed/seed1.txt,v > /dev/null
204	@eval 'test `cat ${REGRESS_ROOT}/seed/seed1.txt,v | wc -l` -eq 60'
205	@test -f ${REGRESS_ROOT}/seed/seed2.txt,v
206
207test-cvs-commit-to_branch:
208	@sleep 1
209	@cd ${REGRESS_SEED}; ${CVSCMD} commit -m'first branch seed' > /dev/null
210	@eval 'test `cat ${REGRESS_ROOT}/seed/seed1.txt,v | wc -l` -eq 80'
211	@eval 'test `grep -c TFIRST_BRANCH ${REGRESS_SEED}/CVS/Entries` -eq 2'
212
213test-cvs-diff:
214	@sleep 1
215	@echo "modified" > ${REGRESS_SEED}/seed2.txt
216	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q diff | wc -l` -eq 9'
217
218test-cvs-diff-file:
219	@sleep 1
220	@echo "first branch line" >> ${REGRESS_SEED}/seed1.txt
221	@cd ${REGRESS_SEED}; \
222	    eval 'test `${CVSCMD} -Q diff seed1.txt | wc -l` -eq 7'
223
224test-cvs-export:
225	@rm -rf ${REGRESS_WCOPY}
226	@mkdir ${REGRESS_WCOPY}
227	@cd ${REGRESS_WCOPY}; \
228	    ${CVSCMD} -Q -d ${MYCVSROOT} export -r HEAD seed > /dev/null
229	@test -f ${REGRESS_SEED}/seed1.txt
230
231test-cvs-import-mflag:
232	@cd ${.CURDIR}/import_seed; \
233	    touch -t 200001010100 seed1.txt; \
234	    ${CVSCMD} -Q -d ${MYCVSROOT} import \
235	    -m'import seed repo' seed regress regress_import > /dev/null
236	@chmod u+w ${REGRESS_ROOT}/seed/seed1.txt,v
237	@perl ${.CURDIR}/setdate.pl ${REGRESS_ROOT}/seed/seed1.txt,v 1.1 \
238	    2000.01.01.00.00.00
239	@perl ${.CURDIR}/setdate.pl ${REGRESS_ROOT}/seed/seed1.txt,v 1.1.1.1 \
240	    2000.01.01.00.00.00
241	@sed "s/author `whoami`/author user/" \
242	    ${REGRESS_ROOT}/seed/seed1.txt,v | \
243	    ${DIFF} - ${.CURDIR}/test_${TESTFILE}_import_01_seed1.txt,v
244
245test-cvs-initial: clean
246	@${CVSCMD} -d ${MYCVSROOT} init
247	@test -d ${REGRESS_ROOT}/CVSROOT
248
249test-cvs-log:
250	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q log | wc -l` -eq 68'
251
252test-cvs-release-dflag: test-cvs-checkout
253	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} release -d seed
254	@test ! -d ${.OBJDIR}/regress_cvs_wcopy/seed
255	@eval 'test `grep '^F' ${REGRESS_ROOT}/CVSROOT/history | wc -l` -eq 1'
256
257test-cvs-remove-fflag:
258	@cd ${REGRESS_SEED}; ${CVSCMD} -Q remove -f seed1.txt
259	@test ! -f ${REGRESS_SEED}/seed1.txt
260
261test-cvs-rlog:
262	@eval 'test `${CVSCMD} -Q -d ${MYCVSROOT} rlog seed | wc -l` -eq 65'
263
264test-cvs-status:
265	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q status | wc -l` -eq 18'
266
267test-cvs-status-vflag:
268	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q status -v | wc -l` -eq 30'
269
270test-cvs-tag:
271	@cd ${REGRESS_SEED}; ${CVSCMD} -Q tag FIRST_TAG > /dev/null
272	@grep FIRST_TAG ${REGRESS_ROOT}/seed/seed1.txt,v > /dev/null
273
274test-cvs-tag-branch:
275	@cd ${REGRESS_SEED}; ${CVSCMD} -Q tag -b FIRST_BRANCH > /dev/null
276	@grep FIRST_BRANCH ${REGRESS_ROOT}/seed/seed1.txt,v > /dev/null
277
278test-cvs-rtag-one_more_branch:
279	@${CVSCMD} -d ${MYCVSROOT} -Q rtag -b SECOND_BRANCH seed > /dev/null
280	@grep SECOND_BRANCH ${REGRESS_ROOT}/seed/seed2.txt,v \
281	    | grep 4 > /dev/null
282
283test-cvs-update-Aflag:
284	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A > /dev/null
285	@eval 'test `grep -c -e T1 -e kkv ${REGRESS_SEED}/CVS/Entries` -eq 0'
286
287test-cvs-update-Aflag-kflag-kv:
288	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A -kv > /dev/null
289	@eval 'test `grep -c T1 ${REGRESS_SEED}/CVS/Entries` -eq 0'
290	@eval 'test `grep -c kv ${REGRESS_SEED}/CVS/Entries` -eq 2'
291
292test-cvs-update-Aflag-kflag-k-rflag-1.1:
293	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A -kk -r 1.1 > /dev/null
294	@eval 'test `grep -c T1 ${REGRESS_SEED}/CVS/Entries` -eq 2'
295	@eval 'test `grep -c kk ${REGRESS_SEED}/CVS/Entries` -eq 2'
296
297test-cvs-update-Aflag-rflag-1.1:
298	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A -r 1.1 > /dev/null
299	@eval 'test `grep -c T1 ${REGRESS_SEED}/CVS/Entries` -eq 2'
300	@eval 'test `grep -c kk ${REGRESS_SEED}/CVS/Entries` -eq 0'
301
302test-cvs-update-for_subdir:
303	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update > /dev/null
304	@test -f ${REGRESS_SEED}/subdir/seed3.txt && \
305	    test ! -f ${REGRESS_SEED}/seed1.txt && \
306	    test ! -f ${REGRESS_SEED}/seed2.txt
307
308clean:
309	@rm -rf ${CLEANFILES}
310
311.include <bsd.regress.mk>
312