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