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