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