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