Module Name: src Committed By: sjg Date: Thu Feb 23 05:20:45 UTC 2023
Modified Files: src/usr.bin/make/unit-tests: Makefile varname-dot-make-meta-ignore_filter.exp varname-dot-make-meta-ignore_filter.mk varname-dot-make-meta-ignore_paths.exp varname-dot-make-meta-ignore_paths.mk varname-dot-make-meta-ignore_patterns.exp varname-dot-make-meta-ignore_patterns.mk Log Message: Add unit-tests for .MAKE.META.IGNORE_* These unit-tests should only be run if TEST_MAKE has a valid .MAKE.PATH_FILEMON to indicate that filemon is supported. All three tests use the same meta-ignore.inc which runs three sub-makes one to initialize the target .meta file two to ignore a file using .MAKE.META.IGNORE_{PATHS,PATTERNS,FILTER} three to verify that without .MAKE.META.IGNORE_* the target is out of date. Fix the order of _SED_CMDS to avoid errors when ${MAKE:T} appears in .OBJDIR To generate a diff of this commit: cvs rdiff -u -r1.331 -r1.332 src/usr.bin/make/unit-tests/Makefile cvs rdiff -u -r1.1 -r1.2 \ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.exp \ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.exp \ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.exp cvs rdiff -u -r1.2 -r1.3 \ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.mk \ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.mk \ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.mk Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/unit-tests/Makefile diff -u src/usr.bin/make/unit-tests/Makefile:1.331 src/usr.bin/make/unit-tests/Makefile:1.332 --- src/usr.bin/make/unit-tests/Makefile:1.331 Tue Jan 24 00:24:02 2023 +++ src/usr.bin/make/unit-tests/Makefile Thu Feb 23 05:20:45 2023 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.331 2023/01/24 00:24:02 sjg Exp $ +# $NetBSD: Makefile,v 1.332 2023/02/23 05:20:45 sjg Exp $ # # Unit tests for make(1) # @@ -405,12 +405,14 @@ TESTS+= varname-dot-make-makefiles TESTS+= varname-dot-make-meta-bailiwick TESTS+= varname-dot-make-meta-created TESTS+= varname-dot-make-meta-files +.if ${.MAKE.PATH_FILEMON:Uno:Nktrace:N/dev*} == "" TESTS+= varname-dot-make-meta-ignore_filter TESTS+= varname-dot-make-meta-ignore_paths TESTS+= varname-dot-make-meta-ignore_patterns +TESTS+= varname-dot-make-path_filemon +.endif TESTS+= varname-dot-make-meta-prefix TESTS+= varname-dot-make-mode -TESTS+= varname-dot-make-path_filemon TESTS+= varname-dot-make-pid TESTS+= varname-dot-make-ppid TESTS+= varname-dot-make-save_dollars @@ -501,6 +503,10 @@ SED_CMDS.job-output-long-lines= \ ${:D marker should always be at the beginning of the line. } \ -e '/^aa*--- job-b ---$$/d' \ -e '/^bb*--- job-a ---$$/d' + +# meta line numbers can vary based on filemon implementation +SED_CMDS.meta-ignore= -e 's,\(\.meta:\) [1-9][0-9]*:,\1 <line>:,' + SED_CMDS.opt-chdir= -e 's,\(nonexistent\).[1-9][0-9]*,\1,' SED_CMDS.opt-debug-graph1= ${STD_SED_CMDS.dg1} SED_CMDS.opt-debug-graph2= ${STD_SED_CMDS.dg2} @@ -533,6 +539,9 @@ SED_CMDS.var-op-shell+= -e '/command/s, SED_CMDS.vardebug+= -e 's,${.SHELL},</path/to/shell>,' SED_CMDS.varmod-subst-regex+= ${STD_SED_CMDS.regex} SED_CMDS.varparse-errors+= ${STD_SED_CMDS.timestamp} +SED_CMDS.varname-dot-make-meta-ignore_filter+= ${SED_CMDS.meta-ignore} +SED_CMDS.varname-dot-make-meta-ignore_paths+= ${SED_CMDS.meta-ignore} +SED_CMDS.varname-dot-make-meta-ignore_patterns+= ${SED_CMDS.meta-ignore} SED_CMDS.varname-dot-parsedir= -e '/in some cases/ s,^make: "[^"]*,make: "<normalized>,' SED_CMDS.varname-dot-parsefile= -e '/in some cases/ s,^make: "[^"]*,make: "<normalized>,' SED_CMDS.varname-dot-shell= -e 's, = /[^ ]*, = (details omitted),g' @@ -713,23 +722,23 @@ LIMIT_RESOURCES?= : # Postprocess the test output to make the output platform-independent. # -# always pretend .MAKE was called 'make' -_SED_CMDS+= -e 's,^${TEST_MAKE:T:S,.,\\.,g}[][0-9]*:,make:,' -_SED_CMDS+= -e 's,${TEST_MAKE:S,.,\\.,g},make,' -_SED_CMDS+= -e 's,^usage: ${TEST_MAKE:T:S,.,\\.,g} ,usage: make ,' -# replace anything after 'stopped in' with unit-tests +# Replace anything after 'stopped in' with unit-tests _SED_CMDS+= -e '/stopped/s, /.*, unit-tests,' # Allow the test files to be placed anywhere. _SED_CMDS+= -e 's,\(\.PARSEDIR}\) = `'"/[^']*'"',\1 = <some-dir>,' _SED_CMDS+= -e 's,\(\.INCLUDEDFROMDIR}\) = `'"/[^']*'"',\1 = <some-dir>,' -_SED_CMDS+= -e 's,${TMPDIR},<tmpdir>,g' +_SED_CMDS+= -e 's,${TMPDIR},<tmpdir>,g' -e 's,${TMPDIR:tA},<tmpdir>,g' # canonicalize ${.OBJDIR} and ${.CURDIR} +_SED_CMDS+= -e 's,${.CURDIR},<curdir>,g' .if ${.OBJDIR} != ${.CURDIR} # yes this is inaccurate but none of the tests expect <objdir> anywhere # which we get depending on how MAKEOBJDIR is set. -_SED_CMDS+= -e 's,${.OBJDIR},<curdir>,g' +_SED_CMDS+= -e 's,${.OBJDIR},<curdir>,g' -e 's,${.OBJDIR:tA},<curdir>,g' .endif -_SED_CMDS+= -e 's,${.CURDIR},<curdir>,g' +# always pretend .MAKE was called 'make' +_SED_CMDS+= -e 's,^${TEST_MAKE:T:S,.,\\.,g}[][0-9]*:,make:,' +_SED_CMDS+= -e 's,${TEST_MAKE:S,.,\\.,g},make,' +_SED_CMDS+= -e 's,^usage: ${TEST_MAKE:T:S,.,\\.,g} ,usage: make ,' _SED_CMDS+= -e 's,<curdir>/,,g' _SED_CMDS+= -e 's,${UNIT_TESTS:S,.,\\.,g}/,,g' _SED_CMDS+= -e '/MAKE_VERSION/d' Index: src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.exp diff -u src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.exp:1.1 src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.exp:1.2 --- src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.exp:1.1 Sun Aug 16 12:07:52 2020 +++ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.exp Thu Feb 23 05:20:45 2023 @@ -1 +1,11 @@ +Initialize check-ignore.meta +Building <tmpdir>/obj/check-ignore +Skipping meta for .END: .SPECIAL +Use .MAKE.META.IGNORE_* - check-ignore is up to date +`check-ignore' is up to date. +Skipping meta for .END: .SPECIAL +Skip .MAKE.META.IGNORE_* - check-ignore is out of date +<tmpdir>/obj/check-ignore.meta: <line>: file '<tmpdir>/ignore/check' is newer than the target... +Building <tmpdir>/obj/check-ignore +Skipping meta for .END: .SPECIAL exit status 0 Index: src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.exp diff -u src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.exp:1.1 src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.exp:1.2 --- src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.exp:1.1 Sun Aug 16 12:07:52 2020 +++ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.exp Thu Feb 23 05:20:45 2023 @@ -1 +1,11 @@ +Initialize check-ignore.meta +Building <tmpdir>/obj/check-ignore +Skipping meta for .END: .SPECIAL +Use .MAKE.META.IGNORE_* - check-ignore is up to date +`check-ignore' is up to date. +Skipping meta for .END: .SPECIAL +Skip .MAKE.META.IGNORE_* - check-ignore is out of date +<tmpdir>/obj/check-ignore.meta: <line>: file '<tmpdir>/ignore/check' is newer than the target... +Building <tmpdir>/obj/check-ignore +Skipping meta for .END: .SPECIAL exit status 0 Index: src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.exp diff -u src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.exp:1.1 src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.exp:1.2 --- src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.exp:1.1 Sun Aug 16 12:07:52 2020 +++ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.exp Thu Feb 23 05:20:45 2023 @@ -1 +1,11 @@ +Initialize check-ignore.meta +Building <tmpdir>/obj/check-ignore +Skipping meta for .END: .SPECIAL +Use .MAKE.META.IGNORE_* - check-ignore is up to date +`check-ignore' is up to date. +Skipping meta for .END: .SPECIAL +Skip .MAKE.META.IGNORE_* - check-ignore is out of date +<tmpdir>/obj/check-ignore.meta: <line>: file '<tmpdir>/ignore/check' is newer than the target... +Building <tmpdir>/obj/check-ignore +Skipping meta for .END: .SPECIAL exit status 0 Index: src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.mk diff -u src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.mk:1.2 src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.mk:1.3 --- src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.mk:1.2 Sun Aug 16 14:25:16 2020 +++ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_filter.mk Thu Feb 23 05:20:45 2023 @@ -1,8 +1,5 @@ -# $NetBSD: varname-dot-make-meta-ignore_filter.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $ +# $NetBSD: varname-dot-make-meta-ignore_filter.mk,v 1.3 2023/02/23 05:20:45 sjg Exp $ # # Tests for the special .MAKE.META.IGNORE_FILTER variable. -# TODO: Implementation - -all: - @:; +.include "meta-ignore.inc" Index: src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.mk diff -u src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.mk:1.2 src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.mk:1.3 --- src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.mk:1.2 Sun Aug 16 14:25:16 2020 +++ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_paths.mk Thu Feb 23 05:20:45 2023 @@ -1,8 +1,5 @@ -# $NetBSD: varname-dot-make-meta-ignore_paths.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $ +# $NetBSD: varname-dot-make-meta-ignore_paths.mk,v 1.3 2023/02/23 05:20:45 sjg Exp $ # # Tests for the special .MAKE.META.IGNORE_PATHS variable. -# TODO: Implementation - -all: - @:; +.include "meta-ignore.inc" Index: src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.mk diff -u src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.mk:1.2 src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.mk:1.3 --- src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.mk:1.2 Sun Aug 16 14:25:16 2020 +++ src/usr.bin/make/unit-tests/varname-dot-make-meta-ignore_patterns.mk Thu Feb 23 05:20:45 2023 @@ -1,8 +1,5 @@ -# $NetBSD: varname-dot-make-meta-ignore_patterns.mk,v 1.2 2020/08/16 14:25:16 rillig Exp $ +# $NetBSD: varname-dot-make-meta-ignore_patterns.mk,v 1.3 2023/02/23 05:20:45 sjg Exp $ # # Tests for the special .MAKE.META.IGNORE_PATTERNS variable. -# TODO: Implementation - -all: - @:; +.include "meta-ignore.inc"