1*2c3632d1SSimon J. Gerraty# This is a generated file, do NOT edit! 2*2c3632d1SSimon J. Gerraty# See contrib/bmake/bsd.after-import.mk 3d4d90f10SMarcel Moolenaar# 4*2c3632d1SSimon J. Gerraty# $FreeBSD$ 5*2c3632d1SSimon J. Gerraty# $Id: Makefile,v 1.92 2020/09/02 18:39:29 sjg Exp $ 6*2c3632d1SSimon J. Gerraty# 7*2c3632d1SSimon J. Gerraty# $NetBSD: Makefile,v 1.130 2020/09/02 05:33:57 rillig Exp $ 8d4d90f10SMarcel Moolenaar# 9d4d90f10SMarcel Moolenaar# Unit tests for make(1) 103841c287SSimon J. Gerraty# 11d4d90f10SMarcel Moolenaar# The main targets are: 12d4d90f10SMarcel Moolenaar# 133841c287SSimon J. Gerraty# all: 143841c287SSimon J. Gerraty# run all the tests 153841c287SSimon J. Gerraty# test: 163841c287SSimon J. Gerraty# run 'all', and compare to expected results 173841c287SSimon J. Gerraty# accept: 183841c287SSimon J. Gerraty# move generated output to expected results 19d4d90f10SMarcel Moolenaar# 203841c287SSimon J. Gerraty# Settable variables 213841c287SSimon J. Gerraty# 223841c287SSimon J. Gerraty# TEST_MAKE 233841c287SSimon J. Gerraty# The make program to be tested. 243841c287SSimon J. Gerraty# 253841c287SSimon J. Gerraty# 263841c287SSimon J. Gerraty# Adding a test case 273841c287SSimon J. Gerraty# 28d4d90f10SMarcel Moolenaar# Each feature should get its own set of tests in its own suitably 29db29cad8SSimon J. Gerraty# named makefile (*.mk), with its own set of expected results (*.exp), 303841c287SSimon J. Gerraty# and it should be added to the TESTS list. 313841c287SSimon J. Gerraty# 32*2c3632d1SSimon J. Gerraty# A few *.mk files are helper files for other tests (such as include-sub.mk) 33*2c3632d1SSimon J. Gerraty# and are thus not added to TESTS. Such files must be ignored in 34*2c3632d1SSimon J. Gerraty# src/tests/usr.bin/make/t_make.sh. 35d4d90f10SMarcel Moolenaar# 36d4d90f10SMarcel Moolenaar 373841c287SSimon J. Gerraty# Each test is in a sub-makefile. 383841c287SSimon J. Gerraty# Keep the list sorted. 39*2c3632d1SSimon J. Gerraty# Any test that is commented out must be ignored in 40*2c3632d1SSimon J. Gerraty# src/tests/usr.bin/make/t_make.sh as well. 41*2c3632d1SSimon J. GerratyTESTS+= # archive # broken on FreeBSD, enabled in t_make.sh 42*2c3632d1SSimon J. GerratyTESTS+= archive-suffix 43*2c3632d1SSimon J. GerratyTESTS+= cmd-interrupt 44*2c3632d1SSimon J. GerratyTESTS+= cmdline 453841c287SSimon J. GerratyTESTS+= comment 46*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric 47*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric-eq 48*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric-ge 49*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric-gt 50*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric-le 51*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric-lt 52*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-numeric-ne 53*2c3632d1SSimon J. GerratyTESTS+= cond-cmp-string 54*2c3632d1SSimon J. GerratyTESTS+= cond-func 55*2c3632d1SSimon J. GerratyTESTS+= cond-func-commands 56*2c3632d1SSimon J. GerratyTESTS+= cond-func-defined 57*2c3632d1SSimon J. GerratyTESTS+= cond-func-empty 58*2c3632d1SSimon J. GerratyTESTS+= cond-func-exists 59*2c3632d1SSimon J. GerratyTESTS+= cond-func-make 60*2c3632d1SSimon J. GerratyTESTS+= cond-func-target 613841c287SSimon J. GerratyTESTS+= cond-late 62*2c3632d1SSimon J. GerratyTESTS+= cond-op 63*2c3632d1SSimon J. GerratyTESTS+= cond-op-and 64*2c3632d1SSimon J. GerratyTESTS+= cond-op-not 65*2c3632d1SSimon J. GerratyTESTS+= cond-op-or 66*2c3632d1SSimon J. GerratyTESTS+= cond-op-parentheses 673841c287SSimon J. GerratyTESTS+= cond-short 68*2c3632d1SSimon J. GerratyTESTS+= cond-token-number 69*2c3632d1SSimon J. GerratyTESTS+= cond-token-plain 70*2c3632d1SSimon J. GerratyTESTS+= cond-token-string 71*2c3632d1SSimon J. GerratyTESTS+= cond-token-var 723841c287SSimon J. GerratyTESTS+= cond1 733841c287SSimon J. GerratyTESTS+= cond2 74*2c3632d1SSimon J. GerratyTESTS+= counter 75*2c3632d1SSimon J. GerratyTESTS+= dep 76*2c3632d1SSimon J. GerratyTESTS+= dep-colon 77*2c3632d1SSimon J. GerratyTESTS+= dep-double-colon 78*2c3632d1SSimon J. GerratyTESTS+= dep-exclam 79*2c3632d1SSimon J. GerratyTESTS+= dep-none 80*2c3632d1SSimon J. GerratyTESTS+= dep-var 81*2c3632d1SSimon J. GerratyTESTS+= dep-wildcards 82*2c3632d1SSimon J. GerratyTESTS+= depsrc 83*2c3632d1SSimon J. GerratyTESTS+= depsrc-exec 84*2c3632d1SSimon J. GerratyTESTS+= depsrc-ignore 85*2c3632d1SSimon J. GerratyTESTS+= depsrc-made 86*2c3632d1SSimon J. GerratyTESTS+= depsrc-make 87*2c3632d1SSimon J. GerratyTESTS+= depsrc-meta 88*2c3632d1SSimon J. GerratyTESTS+= depsrc-nometa 89*2c3632d1SSimon J. GerratyTESTS+= depsrc-nometa_cmp 90*2c3632d1SSimon J. GerratyTESTS+= depsrc-nopath 91*2c3632d1SSimon J. GerratyTESTS+= depsrc-notmain 92*2c3632d1SSimon J. GerratyTESTS+= depsrc-optional 93*2c3632d1SSimon J. GerratyTESTS+= depsrc-phony 94*2c3632d1SSimon J. GerratyTESTS+= depsrc-precious 95*2c3632d1SSimon J. GerratyTESTS+= depsrc-recursive 96*2c3632d1SSimon J. GerratyTESTS+= depsrc-silent 97*2c3632d1SSimon J. GerratyTESTS+= depsrc-use 98*2c3632d1SSimon J. GerratyTESTS+= depsrc-usebefore 99*2c3632d1SSimon J. GerratyTESTS+= depsrc-usebefore-double-colon 100*2c3632d1SSimon J. GerratyTESTS+= depsrc-wait 101*2c3632d1SSimon J. GerratyTESTS+= deptgt 102*2c3632d1SSimon J. GerratyTESTS+= deptgt-begin 103*2c3632d1SSimon J. GerratyTESTS+= deptgt-default 104*2c3632d1SSimon J. GerratyTESTS+= deptgt-delete_on_error 105*2c3632d1SSimon J. GerratyTESTS+= deptgt-end 106*2c3632d1SSimon J. GerratyTESTS+= deptgt-error 107*2c3632d1SSimon J. GerratyTESTS+= deptgt-ignore 108*2c3632d1SSimon J. GerratyTESTS+= deptgt-interrupt 109*2c3632d1SSimon J. GerratyTESTS+= deptgt-main 110*2c3632d1SSimon J. GerratyTESTS+= deptgt-makeflags 111*2c3632d1SSimon J. GerratyTESTS+= deptgt-no_parallel 112*2c3632d1SSimon J. GerratyTESTS+= deptgt-nopath 113*2c3632d1SSimon J. GerratyTESTS+= deptgt-notparallel 114*2c3632d1SSimon J. GerratyTESTS+= deptgt-objdir 115*2c3632d1SSimon J. GerratyTESTS+= deptgt-order 116*2c3632d1SSimon J. GerratyTESTS+= deptgt-path 117*2c3632d1SSimon J. GerratyTESTS+= deptgt-path-suffix 118*2c3632d1SSimon J. GerratyTESTS+= deptgt-phony 119*2c3632d1SSimon J. GerratyTESTS+= deptgt-precious 120*2c3632d1SSimon J. GerratyTESTS+= deptgt-shell 121*2c3632d1SSimon J. GerratyTESTS+= deptgt-silent 122*2c3632d1SSimon J. GerratyTESTS+= deptgt-stale 123*2c3632d1SSimon J. GerratyTESTS+= deptgt-suffixes 124*2c3632d1SSimon J. GerratyTESTS+= dir 125*2c3632d1SSimon J. GerratyTESTS+= dir-expand-path 126*2c3632d1SSimon J. GerratyTESTS+= directive 127*2c3632d1SSimon J. GerratyTESTS+= directive-elif 128*2c3632d1SSimon J. GerratyTESTS+= directive-elifdef 129*2c3632d1SSimon J. GerratyTESTS+= directive-elifmake 130*2c3632d1SSimon J. GerratyTESTS+= directive-elifndef 131*2c3632d1SSimon J. GerratyTESTS+= directive-elifnmake 132*2c3632d1SSimon J. GerratyTESTS+= directive-else 133*2c3632d1SSimon J. GerratyTESTS+= directive-endif 134*2c3632d1SSimon J. GerratyTESTS+= directive-error 135*2c3632d1SSimon J. GerratyTESTS+= directive-export 136*2c3632d1SSimon J. GerratyTESTS+= directive-export-env 137*2c3632d1SSimon J. GerratyTESTS+= directive-export-literal 138*2c3632d1SSimon J. GerratyTESTS+= directive-for 139*2c3632d1SSimon J. GerratyTESTS+= directive-for-generating-endif 140*2c3632d1SSimon J. GerratyTESTS+= directive-if 141*2c3632d1SSimon J. GerratyTESTS+= directive-ifdef 142*2c3632d1SSimon J. GerratyTESTS+= directive-ifmake 143*2c3632d1SSimon J. GerratyTESTS+= directive-ifndef 144*2c3632d1SSimon J. GerratyTESTS+= directive-ifnmake 145*2c3632d1SSimon J. GerratyTESTS+= directive-info 146*2c3632d1SSimon J. GerratyTESTS+= directive-undef 147*2c3632d1SSimon J. GerratyTESTS+= directive-unexport 148*2c3632d1SSimon J. GerratyTESTS+= directive-unexport-env 149*2c3632d1SSimon J. GerratyTESTS+= directive-warning 150*2c3632d1SSimon J. GerratyTESTS+= directives 1513841c287SSimon J. GerratyTESTS+= dollar 1523841c287SSimon J. GerratyTESTS+= doterror 1533841c287SSimon J. GerratyTESTS+= dotwait 154*2c3632d1SSimon J. GerratyTESTS+= envfirst 1553841c287SSimon J. GerratyTESTS+= error 1563841c287SSimon J. GerratyTESTS+= # escape # broken by reverting POSIX changes 1573841c287SSimon J. GerratyTESTS+= export 1583841c287SSimon J. GerratyTESTS+= export-all 1593841c287SSimon J. GerratyTESTS+= export-env 160*2c3632d1SSimon J. GerratyTESTS+= export-variants 1613841c287SSimon J. GerratyTESTS+= forloop 1623841c287SSimon J. GerratyTESTS+= forsubst 1633841c287SSimon J. GerratyTESTS+= hash 164*2c3632d1SSimon J. GerratyTESTS+= impsrc 1653841c287SSimon J. GerratyTESTS+= include-main 166*2c3632d1SSimon J. GerratyTESTS+= lint 167*2c3632d1SSimon J. GerratyTESTS+= make-exported 1683841c287SSimon J. GerratyTESTS+= misc 1693841c287SSimon J. GerratyTESTS+= moderrs 1703841c287SSimon J. GerratyTESTS+= modmatch 1713841c287SSimon J. GerratyTESTS+= modmisc 1723841c287SSimon J. GerratyTESTS+= modts 1733841c287SSimon J. GerratyTESTS+= modword 174*2c3632d1SSimon J. GerratyTESTS+= opt 175*2c3632d1SSimon J. GerratyTESTS+= opt-backwards 176*2c3632d1SSimon J. GerratyTESTS+= opt-chdir 177*2c3632d1SSimon J. GerratyTESTS+= opt-debug 178*2c3632d1SSimon J. GerratyTESTS+= opt-debug-g1 179*2c3632d1SSimon J. GerratyTESTS+= opt-define 180*2c3632d1SSimon J. GerratyTESTS+= opt-env 181*2c3632d1SSimon J. GerratyTESTS+= opt-file 182*2c3632d1SSimon J. GerratyTESTS+= opt-ignore 183*2c3632d1SSimon J. GerratyTESTS+= opt-include-dir 184*2c3632d1SSimon J. GerratyTESTS+= opt-jobs 185*2c3632d1SSimon J. GerratyTESTS+= opt-jobs-internal 186*2c3632d1SSimon J. GerratyTESTS+= opt-keep-going 187*2c3632d1SSimon J. GerratyTESTS+= opt-m-include-dir 188*2c3632d1SSimon J. GerratyTESTS+= opt-no-action 189*2c3632d1SSimon J. GerratyTESTS+= opt-no-action-at-all 190*2c3632d1SSimon J. GerratyTESTS+= opt-query 191*2c3632d1SSimon J. GerratyTESTS+= opt-raw 192*2c3632d1SSimon J. GerratyTESTS+= opt-silent 193*2c3632d1SSimon J. GerratyTESTS+= opt-touch 194*2c3632d1SSimon J. GerratyTESTS+= opt-tracefile 195*2c3632d1SSimon J. GerratyTESTS+= opt-var-expanded 196*2c3632d1SSimon J. GerratyTESTS+= opt-var-literal 197*2c3632d1SSimon J. GerratyTESTS+= opt-warnings-as-errors 198*2c3632d1SSimon J. GerratyTESTS+= opt-where-am-i 199*2c3632d1SSimon J. GerratyTESTS+= opt-x-reduce-exported 2003841c287SSimon J. GerratyTESTS+= order 201*2c3632d1SSimon J. GerratyTESTS+= phony-end 2023841c287SSimon J. GerratyTESTS+= posix 2033841c287SSimon J. GerratyTESTS+= # posix1 # broken by reverting POSIX changes 2043841c287SSimon J. GerratyTESTS+= qequals 205*2c3632d1SSimon J. GerratyTESTS+= recursive 206*2c3632d1SSimon J. GerratyTESTS+= sh 207*2c3632d1SSimon J. GerratyTESTS+= sh-dots 208*2c3632d1SSimon J. GerratyTESTS+= sh-jobs 209*2c3632d1SSimon J. GerratyTESTS+= sh-jobs-error 210*2c3632d1SSimon J. GerratyTESTS+= sh-leading-at 211*2c3632d1SSimon J. GerratyTESTS+= sh-leading-hyphen 212*2c3632d1SSimon J. GerratyTESTS+= sh-leading-plus 213*2c3632d1SSimon J. GerratyTESTS+= sh-meta-chars 214*2c3632d1SSimon J. GerratyTESTS+= sh-multi-line 215*2c3632d1SSimon J. GerratyTESTS+= sh-single-line 216*2c3632d1SSimon J. GerratyTESTS+= # suffixes # runs into an endless loop (try -dA) 2173841c287SSimon J. GerratyTESTS+= sunshcmd 2183841c287SSimon J. GerratyTESTS+= sysv 2193841c287SSimon J. GerratyTESTS+= ternary 2203841c287SSimon J. GerratyTESTS+= unexport 2213841c287SSimon J. GerratyTESTS+= unexport-env 222*2c3632d1SSimon J. GerratyTESTS+= use-inference 223*2c3632d1SSimon J. GerratyTESTS+= var-class 224*2c3632d1SSimon J. GerratyTESTS+= var-class-cmdline 225*2c3632d1SSimon J. GerratyTESTS+= var-class-env 226*2c3632d1SSimon J. GerratyTESTS+= var-class-global 227*2c3632d1SSimon J. GerratyTESTS+= var-class-local 228*2c3632d1SSimon J. GerratyTESTS+= var-class-local-legacy 229*2c3632d1SSimon J. GerratyTESTS+= var-op 230*2c3632d1SSimon J. GerratyTESTS+= var-op-append 231*2c3632d1SSimon J. GerratyTESTS+= var-op-assign 232*2c3632d1SSimon J. GerratyTESTS+= var-op-default 233*2c3632d1SSimon J. GerratyTESTS+= var-op-expand 234*2c3632d1SSimon J. GerratyTESTS+= var-op-shell 2353841c287SSimon J. GerratyTESTS+= varcmd 236*2c3632d1SSimon J. GerratyTESTS+= vardebug 237*2c3632d1SSimon J. GerratyTESTS+= varfind 2383841c287SSimon J. GerratyTESTS+= varmisc 239*2c3632d1SSimon J. GerratyTESTS+= varmod 240*2c3632d1SSimon J. GerratyTESTS+= varmod-assign 241*2c3632d1SSimon J. GerratyTESTS+= varmod-defined 2423841c287SSimon J. GerratyTESTS+= varmod-edge 243*2c3632d1SSimon J. GerratyTESTS+= varmod-exclam-shell 244*2c3632d1SSimon J. GerratyTESTS+= varmod-extension 245*2c3632d1SSimon J. GerratyTESTS+= varmod-gmtime 246*2c3632d1SSimon J. GerratyTESTS+= varmod-hash 247*2c3632d1SSimon J. GerratyTESTS+= varmod-head 248*2c3632d1SSimon J. GerratyTESTS+= varmod-ifelse 249*2c3632d1SSimon J. GerratyTESTS+= varmod-l-name-to-value 250*2c3632d1SSimon J. GerratyTESTS+= varmod-localtime 251*2c3632d1SSimon J. GerratyTESTS+= varmod-loop 252*2c3632d1SSimon J. GerratyTESTS+= varmod-match 253*2c3632d1SSimon J. GerratyTESTS+= varmod-match-escape 254*2c3632d1SSimon J. GerratyTESTS+= varmod-no-match 255*2c3632d1SSimon J. GerratyTESTS+= varmod-order 256*2c3632d1SSimon J. GerratyTESTS+= varmod-order-reverse 257*2c3632d1SSimon J. GerratyTESTS+= varmod-order-shuffle 258*2c3632d1SSimon J. GerratyTESTS+= varmod-path 259*2c3632d1SSimon J. GerratyTESTS+= varmod-quote 260*2c3632d1SSimon J. GerratyTESTS+= varmod-quote-dollar 261*2c3632d1SSimon J. GerratyTESTS+= varmod-range 262*2c3632d1SSimon J. GerratyTESTS+= varmod-remember 263*2c3632d1SSimon J. GerratyTESTS+= varmod-root 264*2c3632d1SSimon J. GerratyTESTS+= varmod-select-words 265*2c3632d1SSimon J. GerratyTESTS+= varmod-shell 266*2c3632d1SSimon J. GerratyTESTS+= varmod-subst 267*2c3632d1SSimon J. GerratyTESTS+= varmod-subst-regex 268*2c3632d1SSimon J. GerratyTESTS+= varmod-sysv 269*2c3632d1SSimon J. GerratyTESTS+= varmod-tail 270*2c3632d1SSimon J. GerratyTESTS+= varmod-to-abs 271*2c3632d1SSimon J. GerratyTESTS+= varmod-to-lower 272*2c3632d1SSimon J. GerratyTESTS+= varmod-to-many-words 273*2c3632d1SSimon J. GerratyTESTS+= varmod-to-one-word 274*2c3632d1SSimon J. GerratyTESTS+= varmod-to-separator 275*2c3632d1SSimon J. GerratyTESTS+= varmod-to-upper 276*2c3632d1SSimon J. GerratyTESTS+= varmod-undefined 277*2c3632d1SSimon J. GerratyTESTS+= varmod-unique 278*2c3632d1SSimon J. GerratyTESTS+= varname 279*2c3632d1SSimon J. GerratyTESTS+= varname-dollar 280*2c3632d1SSimon J. GerratyTESTS+= varname-dot-alltargets 281*2c3632d1SSimon J. GerratyTESTS+= varname-dot-curdir 282*2c3632d1SSimon J. GerratyTESTS+= varname-dot-includes 283*2c3632d1SSimon J. GerratyTESTS+= varname-dot-includedfromdir 284*2c3632d1SSimon J. GerratyTESTS+= varname-dot-includedfromfile 285*2c3632d1SSimon J. GerratyTESTS+= varname-dot-libs 286*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-dependfile 287*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-expand_variables 288*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-exported 289*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-jobs 290*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-jobs-prefix 291*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-level 292*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-makefile_preference 293*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-makefiles 294*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-bailiwick 295*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-created 296*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-files 297*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-ignore_filter 298*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-ignore_paths 299*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-ignore_patterns 300*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-meta-prefix 301*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-mode 302*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-path_filemon 303*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-pid 304*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-ppid 305*2c3632d1SSimon J. GerratyTESTS+= varname-dot-make-save_dollars 306*2c3632d1SSimon J. GerratyTESTS+= varname-dot-makeoverrides 307*2c3632d1SSimon J. GerratyTESTS+= varname-dot-newline 308*2c3632d1SSimon J. GerratyTESTS+= varname-dot-objdir 309*2c3632d1SSimon J. GerratyTESTS+= varname-dot-parsedir 310*2c3632d1SSimon J. GerratyTESTS+= varname-dot-parsefile 311*2c3632d1SSimon J. GerratyTESTS+= varname-dot-path 312*2c3632d1SSimon J. GerratyTESTS+= varname-dot-shell 313*2c3632d1SSimon J. GerratyTESTS+= varname-dot-targets 314*2c3632d1SSimon J. GerratyTESTS+= varname-empty 315*2c3632d1SSimon J. GerratyTESTS+= varname-make 316*2c3632d1SSimon J. GerratyTESTS+= varname-make_print_var_on_error 317*2c3632d1SSimon J. GerratyTESTS+= varname-makeflags 318*2c3632d1SSimon J. GerratyTESTS+= varname-pwd 319*2c3632d1SSimon J. GerratyTESTS+= varname-vpath 320*2c3632d1SSimon J. GerratyTESTS+= varparse-dynamic 3213841c287SSimon J. GerratyTESTS+= varquote 3223841c287SSimon J. GerratyTESTS+= varshell 3233841c287SSimon J. Gerraty 324*2c3632d1SSimon J. Gerraty# Additional environment variables for some of the tests. 325*2c3632d1SSimon J. Gerraty# The base environment is -i PATH="$PATH". 326*2c3632d1SSimon J. GerratyENV.envfirst= FROM_ENV=value-from-env 327*2c3632d1SSimon J. GerratyENV.varmisc= FROM_ENV=env 328*2c3632d1SSimon J. GerratyENV.varmisc+= FROM_ENV_BEFORE=env 329*2c3632d1SSimon J. GerratyENV.varmisc+= FROM_ENV_AFTER=env 330*2c3632d1SSimon J. Gerraty 331*2c3632d1SSimon J. Gerraty# Override make flags for some of the tests; default is -k. 332*2c3632d1SSimon J. Gerraty# If possible, write ".MAKEFLAGS: -dv" in the test .mk file instead of 333*2c3632d1SSimon J. Gerraty# settings FLAGS.test=-dv here, since that is closer to the test code. 334*2c3632d1SSimon J. GerratyFLAGS.archive= -dA 335*2c3632d1SSimon J. GerratyFLAGS.counter= -dv 336*2c3632d1SSimon J. GerratyFLAGS.directive-ifmake= first second 3373841c287SSimon J. GerratyFLAGS.doterror= # none 338*2c3632d1SSimon J. GerratyFLAGS.envfirst= -e 339*2c3632d1SSimon J. GerratyFLAGS.export= # none 340*2c3632d1SSimon J. GerratyFLAGS.lint= -dL -k 341*2c3632d1SSimon J. GerratyFLAGS.opt-debug-g1= -dg1 342*2c3632d1SSimon J. GerratyFLAGS.opt-ignore= -i 343*2c3632d1SSimon J. GerratyFLAGS.opt-keep-going= -k 344*2c3632d1SSimon J. GerratyFLAGS.opt-no-action= -n 345*2c3632d1SSimon J. GerratyFLAGS.opt-query= -q 346*2c3632d1SSimon J. GerratyFLAGS.opt-var-expanded= -v VAR -v VALUE 347*2c3632d1SSimon J. GerratyFLAGS.opt-var-literal= -V VAR -V VALUE 348*2c3632d1SSimon J. GerratyFLAGS.opt-warnings-as-errors= -W 3493841c287SSimon J. GerratyFLAGS.order= -j1 350*2c3632d1SSimon J. GerratyFLAGS.recursive= -dL 351*2c3632d1SSimon J. GerratyFLAGS.sh-leading-plus= -n 352*2c3632d1SSimon J. GerratyFLAGS.vardebug= -k -dv FROM_CMDLINE= 353*2c3632d1SSimon J. GerratyFLAGS.varmod-match-escape= -dv 354*2c3632d1SSimon J. GerratyFLAGS.varname-dot-shell= -dpv 355*2c3632d1SSimon J. GerratyFLAGS.varname-empty= -dv '$${:U}=cmdline-u' '=cmline-plain' 3563841c287SSimon J. Gerraty 3573841c287SSimon J. Gerraty# Some tests need extra post-processing. 358*2c3632d1SSimon J. GerratySED_CMDS.opt-debug-g1= -e 's,${.CURDIR},CURDIR,' 359*2c3632d1SSimon J. GerratySED_CMDS.opt-debug-g1+= -e '/Global Variables:/,/Suffixes:/d' 360*2c3632d1SSimon J. GerratySED_CMDS.sh-dots= -e 's,^.*\.\.\.:.*,<normalized: ...: not found>,' 361*2c3632d1SSimon J. GerratySED_CMDS.varmod-subst-regex+= \ 362*2c3632d1SSimon J. Gerraty -e 's,\(Regex compilation error:\).*,\1 (details omitted),' 363*2c3632d1SSimon J. GerratySED_CMDS.varmod-edge+= -e 's, line [0-9]*:, line omitted:,' 364*2c3632d1SSimon J. GerratySED_CMDS.varshell+= -e 's,^${.SHELL:T}: ,,' 3653841c287SSimon J. GerratySED_CMDS.varshell+= -e '/command/s,No such.*,not found,' 366*2c3632d1SSimon J. GerratySED_CMDS.varname-dot-shell= -e 's, = /.*, = (details omitted),' 367*2c3632d1SSimon J. GerratySED_CMDS.varname-dot-shell+= -e 's,"/[^"]*","(details omitted)",' 368*2c3632d1SSimon J. GerratySED_CMDS.varname-dot-shell+= -e 's,\[/[^]]*\],[(details omitted)],' 369*2c3632d1SSimon J. Gerraty 370*2c3632d1SSimon J. Gerraty# Some tests need an additional round of postprocessing. 371*2c3632d1SSimon J. GerratyPOSTPROC.counter= ${TOOL_SED} -n -e '/:RELEVANT = yes/,/:RELEVANT = no/p' 372*2c3632d1SSimon J. GerratyPOSTPROC.deptgt-suffixes= \ 373*2c3632d1SSimon J. Gerraty ${TOOL_SED} -n -e '/^\#\*\*\* Suffixes/,/^\#\*/p' 374*2c3632d1SSimon J. GerratyPOSTPROC.vardebug= ${TOOL_SED} -n -e '/:RELEVANT = yes/,/:RELEVANT = no/p' 375*2c3632d1SSimon J. GerratyPOSTPROC.varmod-match-escape= ${TOOL_SED} -n -e '/^Pattern/p' 376*2c3632d1SSimon J. GerratyPOSTPROC.varname-dot-shell= \ 377*2c3632d1SSimon J. Gerraty awk '/\.SHELL/ || /^ParseReadLine/' 378*2c3632d1SSimon J. GerratyPOSTPROC.varname-empty= ${TOOL_SED} -n -e '/^Var_Set/p' -e '/^out:/p' 379*2c3632d1SSimon J. Gerraty 380*2c3632d1SSimon J. Gerraty# Some tests reuse other tests, which makes them unnecessarily fragile. 381*2c3632d1SSimon J. Gerratyexport-all.rawout: export.mk 382*2c3632d1SSimon J. Gerratyunexport.rawout: export.mk 383*2c3632d1SSimon J. Gerratyunexport-env.rawout: export.mk 3843841c287SSimon J. Gerraty 3853841c287SSimon J. Gerraty# End of the configuration section. 386d4d90f10SMarcel Moolenaar 387d4d90f10SMarcel Moolenaar.MAIN: all 388d4d90f10SMarcel Moolenaar 389*2c3632d1SSimon J. Gerraty.sinclude "Makefile.inc" 390*2c3632d1SSimon J. Gerraty.sinclude "Makefile.config" 3913841c287SSimon J. Gerraty 392d4d90f10SMarcel MoolenaarUNIT_TESTS:= ${srcdir} 393db29cad8SSimon J. Gerraty.PATH: ${UNIT_TESTS} 394d4d90f10SMarcel Moolenaar 3953841c287SSimon J. GerratyOUTFILES= ${TESTS:=.out} 396db29cad8SSimon J. Gerraty 397db29cad8SSimon J. Gerratyall: ${OUTFILES} 398db29cad8SSimon J. Gerraty 399*2c3632d1SSimon J. GerratyCLEANFILES= *.rawout *.out *.status *.tmp *.core *.tmp 400db29cad8SSimon J. GerratyCLEANFILES+= obj*.[och] lib*.a # posix1.mk 401db29cad8SSimon J. GerratyCLEANFILES+= issue* .[ab]* # suffixes.mk 402*2c3632d1SSimon J. GerratyCLEANDIRS= dir dummy # posix1.mk 403d4d90f10SMarcel Moolenaar 404d4d90f10SMarcel Moolenaarclean: 405db29cad8SSimon J. Gerraty rm -f ${CLEANFILES} 406*2c3632d1SSimon J. Gerraty rm -rf ${CLEANDIRS} 407d4d90f10SMarcel Moolenaar 408d4d90f10SMarcel MoolenaarTEST_MAKE?= ${.MAKE} 409d4d90f10SMarcel MoolenaarTOOL_SED?= sed 410d4d90f10SMarcel MoolenaarTOOL_TR?= tr 411d4d90f10SMarcel MoolenaarTOOL_DIFF?= diff 412d4d90f10SMarcel MoolenaarDIFF_FLAGS?= -u 413d4d90f10SMarcel Moolenaar 4144639b858SSimon J. Gerraty.if defined(.PARSEDIR) 415d4d90f10SMarcel Moolenaar# ensure consistent results from sort(1) 416d4d90f10SMarcel MoolenaarLC_ALL= C 417d4d90f10SMarcel MoolenaarLANG= C 418d4d90f10SMarcel Moolenaar.export LANG LC_ALL 4194639b858SSimon J. Gerraty.endif 420d4d90f10SMarcel Moolenaar 421*2c3632d1SSimon J. Gerraty.if ${.MAKE.MODE:Unormal:Mmeta} != "" 422*2c3632d1SSimon J. Gerraty# we don't need the noise 423*2c3632d1SSimon J. Gerraty_MKMSG_TEST= : 424*2c3632d1SSimon J. Gerraty.endif 425*2c3632d1SSimon J. Gerraty 426db29cad8SSimon J. Gerraty# the tests are actually done with sub-makes. 427db29cad8SSimon J. Gerraty.SUFFIXES: .mk .rawout .out 428db29cad8SSimon J. Gerraty.mk.rawout: 429*2c3632d1SSimon J. Gerraty @${_MKMSG_TEST:Uecho '# test '} ${.PREFIX} 430*2c3632d1SSimon J. Gerraty @set -eu; \ 431*2c3632d1SSimon J. Gerraty cd ${.OBJDIR}; \ 432*2c3632d1SSimon J. Gerraty env -i PATH="$$PATH" ${ENV.${.TARGET:R}} \ 433*2c3632d1SSimon J. Gerraty ${TEST_MAKE} \ 434*2c3632d1SSimon J. Gerraty -r -C ${.CURDIR} -f ${.IMPSRC} \ 435*2c3632d1SSimon J. Gerraty ${FLAGS.${.TARGET:R}:U-k} \ 436*2c3632d1SSimon J. Gerraty > ${.TARGET}.tmp 2>&1 \ 437*2c3632d1SSimon J. Gerraty && status=$$? || status=$$?; \ 438*2c3632d1SSimon J. Gerraty echo $$status > ${.TARGET:R}.status 439db29cad8SSimon J. Gerraty @mv ${.TARGET}.tmp ${.TARGET} 440db29cad8SSimon J. Gerraty 4413841c287SSimon J. Gerraty# Post-process the test output so that the results can be compared. 4423841c287SSimon J. Gerraty# 4433841c287SSimon J. Gerraty# always pretend .MAKE was called 'make' 4443841c287SSimon J. Gerraty_SED_CMDS+= -e 's,^${TEST_MAKE:T:S,.,\\.,g}[][0-9]*:,make:,' 4453841c287SSimon J. Gerraty_SED_CMDS+= -e 's,${TEST_MAKE:S,.,\\.,g},make,' 4463841c287SSimon J. Gerraty# replace anything after 'stopped in' with unit-tests 4473841c287SSimon J. Gerraty_SED_CMDS+= -e '/stopped/s, /.*, unit-tests,' 4483841c287SSimon J. Gerraty# strip ${.CURDIR}/ from the output 4493841c287SSimon J. Gerraty_SED_CMDS+= -e 's,${.CURDIR:S,.,\\.,g}/,,g' 4503841c287SSimon J. Gerraty_SED_CMDS+= -e 's,${UNIT_TESTS:S,.,\\.,g}/,,g' 4513841c287SSimon J. Gerraty 452db29cad8SSimon J. Gerraty.rawout.out: 4533841c287SSimon J. Gerraty @${TOOL_SED} ${_SED_CMDS} ${SED_CMDS.${.TARGET:R}} \ 454*2c3632d1SSimon J. Gerraty < ${.IMPSRC} > ${.TARGET}.tmp1 455*2c3632d1SSimon J. Gerraty @${POSTPROC.${.TARGET:R}:Ucat} < ${.TARGET}.tmp1 > ${.TARGET}.tmp2 456*2c3632d1SSimon J. Gerraty @rm ${.TARGET}.tmp1 457*2c3632d1SSimon J. Gerraty @echo "exit status `cat ${.TARGET:R}.status`" >> ${.TARGET}.tmp2 458*2c3632d1SSimon J. Gerraty @mv ${.TARGET}.tmp2 ${.TARGET} 459db29cad8SSimon J. Gerraty 460db29cad8SSimon J. Gerraty# Compare all output files 461db29cad8SSimon J. Gerratytest: ${OUTFILES} .PHONY 462db29cad8SSimon J. Gerraty @failed= ; \ 4633841c287SSimon J. Gerraty for test in ${TESTS}; do \ 464ac3446e9SSimon J. Gerraty ${TOOL_DIFF} ${DIFF_FLAGS} ${UNIT_TESTS}/$${test}.exp $${test}.out \ 465db29cad8SSimon J. Gerraty || failed="$${failed}$${failed:+ }$${test}" ; \ 466db29cad8SSimon J. Gerraty done ; \ 467db29cad8SSimon J. Gerraty if [ -n "$${failed}" ]; then \ 468db29cad8SSimon J. Gerraty echo "Failed tests: $${failed}" ; false ; \ 469db29cad8SSimon J. Gerraty else \ 470db29cad8SSimon J. Gerraty echo "All tests passed" ; \ 471db29cad8SSimon J. Gerraty fi 472d4d90f10SMarcel Moolenaar 473d4d90f10SMarcel Moolenaaraccept: 4743841c287SSimon J. Gerraty @for test in ${TESTS}; do \ 475db29cad8SSimon J. Gerraty cmp -s ${UNIT_TESTS}/$${test}.exp $${test}.out \ 476db29cad8SSimon J. Gerraty || { echo "Replacing $${test}.exp" ; \ 477db29cad8SSimon J. Gerraty cp $${test}.out ${UNIT_TESTS}/$${test}.exp ; } \ 478db29cad8SSimon J. Gerraty done 479d4d90f10SMarcel Moolenaar 480db29cad8SSimon J. Gerraty.if exists(${TEST_MAKE}) 481*2c3632d1SSimon J. Gerraty${TESTS:=.rawout}: ${TEST_MAKE} ${.PARSEDIR}/Makefile 482db29cad8SSimon J. Gerraty.endif 483db29cad8SSimon J. Gerraty 484*2c3632d1SSimon J. Gerraty.sinclude <bsd.obj.mk> 485