xref: /openbsd/regress/usr.bin/cvs/Makefile (revision 6f1fe1d5)
1#	$OpenBSD: Makefile,v 1.28 2010/07/13 21:31:17 nicm 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	cvs-update-with-local
70# Known to fail.
71#	cvs-update-for_subdir
72#	cvs-release-dflag
73
74.for t in ${LTESTS}
75REGRESS_TARGETS+=test-${t}
76.endfor
77
78# XXX - should not print anything
79test-cvs-add:
80	@echo "initial content" > ${REGRESS_SEED}/seed2.txt
81	@cd ${REGRESS_SEED}; \
82	    ${CVSCMD} -q add seed2.txt > /dev/null 2> /dev/null
83#	    eval 'test `${CVSCMD} -Q add seed2.txt | wc -l` -eq 0'
84
85test-cvs-add-dir:
86	@mkdir ${REGRESS_SEED}/subdir
87	@cd ${REGRESS_SEED}; ${CVSCMD} -q add subdir > /dev/null 2> /dev/null
88	@test -d ${REGRESS_SEED}/subdir/CVS && \
89	    test -d ${REGRESS_ROOT}/seed/subdir
90
91test-cvs-add-subdir_file:
92	@echo "initial content of seed3.txt" > ${REGRESS_SEED}/subdir/seed3.txt
93	@cd ${REGRESS_SEED}; \
94	    ${CVSCMD} -q add subdir/seed3.txt > /dev/null 2> /dev/null
95#	@eval 'test `${CVSCMD} -Q add seed2.txt | wc -l` -eq 0'
96
97test-cvs-annotate:
98	@cd ${REGRESS_SEED}; \
99	    eval 'test `${CVSCMD} -Q annotate seed1.txt 2>/dev/null | \
100	    wc -l` -eq 3'
101
102test-cvs-annotate-rflag-inval_branch_rev:
103	@cd ${REGRESS_SEED}; \
104	    eval 'test `${CVSCMD} -Q annotate -r 1.2.3.4 seed1.txt 2>/dev/null \
105	    | wc -l` -eq 0'
106
107test-cvs-annotate-rflag-inval_branch_rev-fflag:
108	@cd ${REGRESS_SEED}; \
109	    eval 'test `${CVSCMD} -Q annotate -f -r 1.2.3.4 seed1.txt \
110	    2>/dev/null | wc -l` -eq 3'
111
112test-cvs-annotate-rflag-unknown_symbol-fflag:
113	@cd ${REGRESS_SEED}; \
114	    eval 'test `${CVSCMD} -Q annotate -f -r UNKNOWN seed1.txt \
115	    2>/dev/null | wc -l` -eq 0'
116
117test-cvs-checkout:
118	@rm -rf ${REGRESS_WCOPY}
119	@mkdir ${REGRESS_WCOPY}
120	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} co seed > /dev/null
121	@test -f ${REGRESS_SEED}/seed1.txt
122
123test-cvs-checkout-kflag-k-rflag-HEAD:
124	@rm -rf ${REGRESS_WCOPY}
125	@mkdir ${REGRESS_WCOPY}
126	@cd ${REGRESS_WCOPY}; \
127	    ${CVSCMD} -Q -d ${MYCVSROOT} co -rHEAD -kkv seed > /dev/null
128	@test -f ${REGRESS_SEED}/seed1.txt
129	@eval 'test `grep -c -e THEAD -e -kkv \
130	    ${REGRESS_SEED}/CVS/Entries | wc -l` -eq 1'
131	@eval 'test `grep -c Id$ \
132	    ${REGRESS_SEED}/seed1.txt | wc -l` -eq 1'
133
134test-cvs-checkout-kflag-kv-rflag-1.1:
135	@rm -rf ${REGRESS_WCOPY}
136	@mkdir ${REGRESS_WCOPY}
137	@cd ${REGRESS_WCOPY}; \
138	    ${CVSCMD} -Q -d ${MYCVSROOT} co -r 1.1 -kkv seed > /dev/null
139	@test -f ${REGRESS_SEED}/seed1.txt;
140	@eval 'test `grep -c -e T1.1 -e -kkv \
141	    ${REGRESS_SEED}/CVS/Entries | wc -l` -eq 1'
142
143test-cvs-checkout-pflag:
144	@eval 'test `${CVSCMD} -Q -d ${MYCVSROOT} checkout \
145	    -p seed/seed1.txt 2>/dev/null | wc -l` -eq 2'
146
147test-cvs-checkout-rflag_branch:
148	@rm -rf ${REGRESS_WCOPY}
149	@mkdir ${REGRESS_WCOPY}
150	@cd ${REGRESS_WCOPY}; \
151	    ${CVSCMD} -Q -d ${MYCVSROOT} co -r FIRST_BRANCH seed > /dev/null
152	@test -f ${REGRESS_SEED}/seed1.txt
153	@eval 'test `grep -c TFIRST_BRANCH ${REGRESS_SEED}/CVS/Entries` -eq 2'
154
155test-cvs-checkout-rflag-inval_branch_rev:
156	@rm -rf ${REGRESS_WCOPY}
157	@mkdir ${REGRESS_WCOPY}
158	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} co -r1.2.3.4 seed
159	@eval 'test ! -f ${REGRESS_SEED}/seed1.txt'
160
161test-cvs-checkout-rflag-too_high:
162	@rm -rf ${REGRESS_WCOPY}
163	@mkdir ${REGRESS_WCOPY}
164	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} co -r1.5 seed
165	@eval 'test ! -f ${REGRESS_SEED}/seed1.txt'
166
167test-cvs-checkout-rflag-HEAD:
168	@rm -rf ${REGRESS_WCOPY}
169	@mkdir ${REGRESS_WCOPY}
170	@cd ${REGRESS_WCOPY}; \
171	    ${CVSCMD} -Q -d ${MYCVSROOT} co -rHEAD seed > /dev/null
172	@test -f ${REGRESS_SEED}/seed1.txt;
173	@eval 'test `grep -c THEAD ${REGRESS_SEED}/CVS/Entries | wc -l` -eq 1'
174
175test-cvs-checkout-rflag-1.1:
176	@rm -rf ${REGRESS_WCOPY}
177	@mkdir ${REGRESS_WCOPY}
178	@cd ${REGRESS_WCOPY}; \
179	    ${CVSCMD} -Q -d ${MYCVSROOT} co -r 1.1 seed > /dev/null
180	@test -f ${REGRESS_SEED}/seed1.txt && test -f ${REGRESS_SEED}/seed2.txt
181
182test-cvs-checkout-dflag:
183	@rm -rf ${REGRESS_WCOPY}
184	@mkdir ${REGRESS_WCOPY}
185	@cd ${REGRESS_WCOPY}; \
186	    ${CVSCMD} -Q -d ${MYCVSROOT} co -d seed2 seed > /dev/null
187	@test -d ${REGRESS_WCOPY}/seed2/CVS
188
189test-cvs-checkout-subdir:
190	@rm -rf ${REGRESS_WCOPY}
191	@mkdir ${REGRESS_WCOPY}
192	@cd ${REGRESS_WCOPY}; \
193	    ${CVSCMD} -Q -d ${MYCVSROOT} co seed/subdir > /dev/null
194	@test -f ${REGRESS_SEED}/subdir/seed3.txt && \
195	    test ! -f ${REGRESS_SEED}/seed2.txt
196
197test-cvs-commit-Fflag:
198	@sleep 1
199	@echo "second line" >> ${REGRESS_SEED}/seed1.txt
200	@echo "commit seed repo" > ${REGRESS_WCOPY}/logmsg.txt
201	@cd ${REGRESS_SEED}; ${CVSCMD} commit \
202	    -F ${REGRESS_WCOPY}/logmsg.txt > /dev/null
203	@grep "^@commit seed repo" \
204	    ${REGRESS_ROOT}/seed/seed1.txt,v > /dev/null
205	@eval 'test `cat ${REGRESS_ROOT}/seed/seed1.txt,v | wc -l` -eq 60'
206	@test -f ${REGRESS_ROOT}/seed/seed2.txt,v
207
208test-cvs-commit-to_branch:
209	@sleep 1
210	@cd ${REGRESS_SEED}; ${CVSCMD} commit -m'first branch seed' > /dev/null
211	@eval 'test `cat ${REGRESS_ROOT}/seed/seed1.txt,v | wc -l` -eq 80'
212	@eval 'test `grep -c TFIRST_BRANCH ${REGRESS_SEED}/CVS/Entries` -eq 2'
213
214test-cvs-diff:
215	@sleep 1
216	@echo "modified" > ${REGRESS_SEED}/seed2.txt
217	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q diff | wc -l` -eq 9'
218
219test-cvs-diff-file:
220	@sleep 1
221	@echo "first branch line" >> ${REGRESS_SEED}/seed1.txt
222	@cd ${REGRESS_SEED}; \
223	    eval 'test `${CVSCMD} -Q diff seed1.txt | wc -l` -eq 7'
224
225test-cvs-export:
226	@rm -rf ${REGRESS_WCOPY}
227	@mkdir ${REGRESS_WCOPY}
228	@cd ${REGRESS_WCOPY}; \
229	    ${CVSCMD} -Q -d ${MYCVSROOT} export -r HEAD seed > /dev/null
230	@test -f ${REGRESS_SEED}/seed1.txt
231
232test-cvs-import-mflag:
233	@cd ${.CURDIR}/import_seed; \
234	    touch -t 200001010100 seed1.txt; \
235	    ${CVSCMD} -Q -d ${MYCVSROOT} import \
236	    -m'import seed repo' seed regress regress_import > /dev/null
237	@chmod u+w ${REGRESS_ROOT}/seed/seed1.txt,v
238	@perl ${.CURDIR}/setdate.pl ${REGRESS_ROOT}/seed/seed1.txt,v 1.1 \
239	    2000.01.01.00.00.00
240	@perl ${.CURDIR}/setdate.pl ${REGRESS_ROOT}/seed/seed1.txt,v 1.1.1.1 \
241	    2000.01.01.00.00.00
242	@sed "s/author `whoami`/author user/" \
243	    ${REGRESS_ROOT}/seed/seed1.txt,v | \
244	    ${DIFF} - ${.CURDIR}/test_${TESTFILE}_import_01_seed1.txt,v
245
246test-cvs-initial: clean
247	@${CVSCMD} -d ${MYCVSROOT} init
248	@test -d ${REGRESS_ROOT}/CVSROOT
249
250test-cvs-log:
251	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q log | wc -l` -eq 68'
252
253test-cvs-release-dflag: test-cvs-checkout
254	@cd ${REGRESS_WCOPY}; ${CVSCMD} -Q -d ${MYCVSROOT} release -d seed
255	@test ! -d ${.OBJDIR}/regress_cvs_wcopy/seed
256	@eval 'test `grep '^F' ${REGRESS_ROOT}/CVSROOT/history | wc -l` -eq 1'
257
258test-cvs-remove-fflag:
259	@cd ${REGRESS_SEED}; ${CVSCMD} -Q remove -f seed1.txt
260	@test ! -f ${REGRESS_SEED}/seed1.txt
261
262test-cvs-rlog:
263	@eval 'test `${CVSCMD} -Q -d ${MYCVSROOT} rlog seed | wc -l` -eq 65'
264
265test-cvs-status:
266	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q status | wc -l` -eq 18'
267
268test-cvs-status-vflag:
269	@cd ${REGRESS_SEED}; eval 'test `${CVSCMD} -Q status -v | wc -l` -eq 30'
270
271test-cvs-tag:
272	@cd ${REGRESS_SEED}; ${CVSCMD} -Q tag FIRST_TAG > /dev/null
273	@grep FIRST_TAG ${REGRESS_ROOT}/seed/seed1.txt,v > /dev/null
274
275test-cvs-tag-branch:
276	@cd ${REGRESS_SEED}; ${CVSCMD} -Q tag -b FIRST_BRANCH > /dev/null
277	@grep FIRST_BRANCH ${REGRESS_ROOT}/seed/seed1.txt,v > /dev/null
278
279test-cvs-rtag-one_more_branch:
280	@${CVSCMD} -d ${MYCVSROOT} -Q rtag -b SECOND_BRANCH seed > /dev/null
281	@grep SECOND_BRANCH ${REGRESS_ROOT}/seed/seed2.txt,v \
282	    | grep 4 > /dev/null
283
284test-cvs-update-Aflag:
285	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A > /dev/null
286	@eval 'test `grep -c -e T1 -e kkv ${REGRESS_SEED}/CVS/Entries` -eq 0'
287
288test-cvs-update-Aflag-kflag-kv:
289	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A -kv > /dev/null
290	@eval 'test `grep -c T1 ${REGRESS_SEED}/CVS/Entries` -eq 0'
291	@eval 'test `grep -c kv ${REGRESS_SEED}/CVS/Entries` -eq 2'
292
293test-cvs-update-Aflag-kflag-k-rflag-1.1:
294	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A -kk -r 1.1 > /dev/null
295	@eval 'test `grep -c T1 ${REGRESS_SEED}/CVS/Entries` -eq 2'
296	@eval 'test `grep -c kk ${REGRESS_SEED}/CVS/Entries` -eq 2'
297
298test-cvs-update-Aflag-rflag-1.1:
299	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update -A -r 1.1 > /dev/null
300	@eval 'test `grep -c T1 ${REGRESS_SEED}/CVS/Entries` -eq 2'
301	@eval 'test `grep -c kk ${REGRESS_SEED}/CVS/Entries` -eq 0'
302
303test-cvs-update-for_subdir:
304	@cd ${REGRESS_SEED}; ${CVSCMD} -Q update > /dev/null
305	@test -f ${REGRESS_SEED}/subdir/seed3.txt && \
306	    test ! -f ${REGRESS_SEED}/seed1.txt && \
307	    test ! -f ${REGRESS_SEED}/seed2.txt
308
309test-cvs-merge:
310	@rm -rf ${REGRESS_WCOPY}
311	@mkdir -p ${REGRESS_WCOPY}/a ${REGRESS_WCOPY}/b
312	@cd ${REGRESS_WCOPY}/a; \
313	    ${CVSCMD} -Q -d ${MYCVSROOT} co seed > /dev/null
314	@cd ${REGRESS_WCOPY}/b; \
315	    ${CVSCMD} -Q -d ${MYCVSROOT} co seed > /dev/null
316	@echo "modified text" > ${REGRESS_WCOPY}/a/seed/seed1.txt
317	@cd ${REGRESS_WCOPY}/a/seed && ${CVSCMD} -Q com -m 'a' > /dev/null
318	@echo "modified text 2" > ${REGRESS_WCOPY}/b/seed/seed1.txt
319	@cd ${REGRESS_WCOPY}/b/seed && ${CVSCMD} -Q up > /dev/null 2>&1
320	@echo "modified text" > ${REGRESS_WCOPY}/b/seed/seed1.txt
321	@cd ${REGRESS_WCOPY}/b/seed && test `${CVSCMD} -q up | wc -l` -eq 0
322
323test-cvs-update-with-local:
324	@rm -rf ${REGRESS_WCOPY}
325	@mkdir -p ${REGRESS_WCOPY}/a ${REGRESS_WCOPY}/b
326	@cd ${REGRESS_WCOPY}/a; \
327	    ${CVSCMD} -Q -d ${MYCVSROOT} co seed > /dev/null
328	@cd ${REGRESS_WCOPY}/b; \
329	    ${CVSCMD} -Q -d ${MYCVSROOT} co seed > /dev/null
330	@echo "new file" > ${REGRESS_WCOPY}/a/seed/test.txt
331	@cd ${REGRESS_WCOPY}/a/seed && \
332		${CVSCMD} -Q add test.txt > /dev/null && \
333		${CVSCMD} -Q com -m 'a' > /dev/null;
334	@echo "local file" > ${REGRESS_WCOPY}/b/seed/test.txt
335	@cd ${REGRESS_WCOPY}/b/seed && \
336		${CVSCMD} -Q up 2>&1|grep -q '^C test.txt' && \
337		grep -q '^local file' test.txt
338
339clean:
340	@rm -rf ${CLEANFILES}
341
342.include <bsd.regress.mk>
343