Home | History | Annotate | Line # | Download | only in unit-tests
      1 # $NetBSD: deptgt-end-fail.mk,v 1.7 2022/05/07 08:01:20 rillig Exp $
      2 #
      3 # Tests for an errors in the main target, its dependencies,
      4 # the .END node and its dependencies.
      5 #
      6 # Before 2020-11-25, an error in the .END target did not print the "Stop.",
      7 # even though this was intended.  The cause for this was a missing condition
      8 # in Compat_MakeAll, in the code handling the .END node.
      9 
     10 test: .PHONY
     11 
     12 # The default stop-on-error mode is not as interesting to test since it
     13 # stops right after the first error.
     14 .MAKEFLAGS: -k
     15 
     16 .for all in ok ERR
     17 .  for all-dep in ok ERR
     18 .    for end in ok ERR
     19 .      for end-dep in ok ERR
     20 .        for target in ${all}-${all-dep}-${end}-${end-dep}
     21 test: ${target}
     22 ${target}: .PHONY .SILENT
     23 	echo Test case all=${all} all-dep=${all-dep} end=${end} end-dep=${end-dep}.
     24 	${MAKE} -r -f ${MAKEFILE} \
     25 		all=${all} all-dep=${all-dep} \
     26 		end=${end} end-dep=${end-dep} \
     27 		all; \
     28 	echo "exit status $$?"
     29 	echo
     30 	echo
     31 .        endfor
     32 .      endfor
     33 .    endfor
     34 .  endfor
     35 .endfor
     36 
     37 .if make(all)
     38 
     39 all all-dep end-dep: .PHONY
     40 
     41 CMD.ok=		true
     42 CMD.ERR=	false
     43 
     44 all: all-dep
     45 	: Making ${.TARGET} from ${.ALLSRC}.
     46 	@${CMD.${all}}
     47 
     48 all-dep:
     49 	: Making ${.TARGET} out of nothing.
     50 	@${CMD.${all-dep}}
     51 
     52 .END: end-dep
     53 	: Making ${.TARGET} from ${.ALLSRC}.
     54 	@${CMD.${end}}
     55 
     56 end-dep:
     57 	: Making ${.TARGET} out of nothing.
     58 	@${CMD.${end-dep}}
     59 
     60 .endif
     61 
     62 # Until 2020-12-07, several of the test cases printed "`all' not remade
     63 # because of errors.", followed by "exit status 0", which contradicted
     64 # each other.
     65 
     66 # Until 2020-12-07, '.END' was even made if 'all' failed, but if a dependency
     67 # of 'all' failed, it was skipped.  This inconsistency was not needed for
     68 # anything and thus has been dropped.  To run some commands on error, use the
     69 # .ERROR target instead, see deptgt-error.mk.
     70