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