Home | History | Annotate | Line # | Download | only in unit-tests
opt-file.mk revision 1.6
      1  1.6  rillig # $NetBSD: opt-file.mk,v 1.6 2020/12/06 20:33:44 rillig Exp $
      2  1.1  rillig #
      3  1.2  rillig # Tests for the -f command line option.
      4  1.1  rillig 
      5  1.1  rillig # TODO: Implementation
      6  1.1  rillig 
      7  1.4  rillig all: .PHONY
      8  1.4  rillig all: file-ending-in-backslash
      9  1.4  rillig all: file-containing-null-byte
     10  1.3  rillig 
     11  1.3  rillig # Passing '-' as the filename reads from stdin.  This is unusual but possible.
     12  1.3  rillig #
     13  1.3  rillig # In the unlikely case where a file ends in a backslash instead of a newline,
     14  1.3  rillig # that backslash is trimmed.  See ParseGetLine.
     15  1.3  rillig file-ending-in-backslash: .PHONY
     16  1.4  rillig 	@printf '%s' 'VAR=value\' \
     17  1.4  rillig 	| ${MAKE} -r -f - -v VAR
     18  1.4  rillig 
     19  1.4  rillig # If a file contains null bytes, the rest of the line is skipped, and parsing
     20  1.5  rillig # continues in the next line.  Throughout the history of make, the behavior
     21  1.5  rillig # has changed several times, sometimes knowingly, sometimes by accident.
     22  1.5  rillig #
     23  1.5  rillig #	echo 'VAR=value' | tr 'l' '\0' > zero-byte.in
     24  1.5  rillig #	printf '%s\n' 'all:' ': VAR=${VAR:Q}' >> zero-byte.in
     25  1.5  rillig #
     26  1.5  rillig #	for year in $(seq 2003 2020); do
     27  1.5  rillig #	  echo $year:
     28  1.5  rillig #	  make-$year.01.01.00.00.00 -r -f zero-byte.in
     29  1.5  rillig #	  echo "exit status $?"
     30  1.5  rillig #	  echo
     31  1.5  rillig #	done 2>&1 \
     32  1.5  rillig #	| sed "s,$PWD/,.,"
     33  1.5  rillig #
     34  1.5  rillig # This program generated the following output:
     35  1.5  rillig #
     36  1.5  rillig #	2003 to 2007:
     37  1.5  rillig #	exit status 0
     38  1.5  rillig #
     39  1.5  rillig #	2008 to 2010:
     40  1.5  rillig #	make: "zero-byte.in" line 1: Zero byte read from file
     41  1.5  rillig #	make: Fatal errors encountered -- cannot continue
     42  1.5  rillig #
     43  1.5  rillig #	make: stopped in .
     44  1.5  rillig #	exit status 1
     45  1.5  rillig #
     46  1.5  rillig #	2011 to 2013:
     47  1.5  rillig #	make: no target to make.
     48  1.5  rillig #
     49  1.5  rillig #	make: stopped in .
     50  1.5  rillig #	exit status 2
     51  1.5  rillig #
     52  1.6  rillig #	2014 to 2020-12-06:
     53  1.5  rillig #	make: "zero-byte.in" line 1: warning: Zero byte read from file, skipping rest of line.
     54  1.5  rillig #	exit status 0
     55  1.4  rillig #
     56  1.6  rillig #	Since 2020-12-07:
     57  1.6  rillig #	make: "zero-byte.in" line 1: Zero byte read from file
     58  1.6  rillig #	make: Fatal errors encountered -- cannot continue
     59  1.6  rillig #	make: stopped in .
     60  1.6  rillig #	exit status 1
     61  1.4  rillig file-containing-null-byte: .PHONY
     62  1.4  rillig 	@printf '%s\n' 'VAR=value' 'VAR2=VALUE2' \
     63  1.4  rillig 	| tr 'l' '\0' \
     64  1.4  rillig 	| ${MAKE} -r -f - -v VAR -v VAR2
     65  1.3  rillig 
     66  1.1  rillig all:
     67  1.6  rillig 	: Making ${.TARGET}
     68