Home | History | Annotate | Line # | Download | only in unit-tests
varmod-select-words.mk revision 1.4
      1  1.4  rillig # $NetBSD: varmod-select-words.mk,v 1.4 2022/01/23 16:09:38 rillig Exp $
      2  1.1  rillig #
      3  1.2  rillig # Tests for the :[...] variable modifier, which selects a single word
      4  1.2  rillig # or a range of words from a variable.
      5  1.3  rillig #
      6  1.4  rillig # History:
      7  1.4  rillig #	The variable modifier ':[...]' was added on 2003-09-27.
      8  1.4  rillig #
      9  1.3  rillig # See also:
     10  1.3  rillig #	modword.mk		(should be migrated here)
     11  1.1  rillig 
     12  1.4  rillig all: mod-squarebrackets mod-S-W mod-C-W mod-tW-tw
     13  1.4  rillig 
     14  1.4  rillig LIST=		one two three four five six
     15  1.4  rillig LONGLIST=	1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
     16  1.4  rillig 
     17  1.4  rillig EMPTY=		# the space should be ignored
     18  1.4  rillig ESCAPEDSPACE=	\ # escaped space before the '#', the actual value is '\ '
     19  1.4  rillig REALLYSPACE:=	${:U }
     20  1.4  rillig HASH=		\#
     21  1.4  rillig AT=		@
     22  1.4  rillig STAR=		*
     23  1.4  rillig ZERO=		0
     24  1.4  rillig ONE=		1
     25  1.4  rillig MINUSONE=	-1
     26  1.4  rillig 
     27  1.4  rillig mod-squarebrackets: mod-squarebrackets-0-star-at \
     28  1.4  rillig 	mod-squarebrackets-hash \
     29  1.4  rillig 	mod-squarebrackets-n \
     30  1.4  rillig 	mod-squarebrackets-start-end \
     31  1.4  rillig 	mod-squarebrackets-nested \
     32  1.4  rillig 	mod-squarebrackets-space
     33  1.4  rillig 
     34  1.4  rillig mod-squarebrackets-0-star-at:
     35  1.4  rillig 	@echo 'LIST:[]="${LIST:[]}" is an error'
     36  1.4  rillig 	@echo 'LIST:[0]="${LIST:[0]}"'
     37  1.4  rillig 	@echo 'LIST:[0x0]="${LIST:[0x0]}"'
     38  1.4  rillig 	@echo 'LIST:[000]="${LIST:[000]}"'
     39  1.4  rillig 	@echo 'LIST:[*]="${LIST:[*]}"'
     40  1.4  rillig 	@echo 'LIST:[@]="${LIST:[@]}"'
     41  1.4  rillig 	@echo 'LIST:[0]:C/ /,/="${LIST:[0]:C/ /,/}"'
     42  1.4  rillig 	@echo 'LIST:[0]:C/ /,/g="${LIST:[0]:C/ /,/g}"'
     43  1.4  rillig 	@echo 'LIST:[0]:C/ /,/1g="${LIST:[0]:C/ /,/1g}"'
     44  1.4  rillig 	@echo 'LIST:[*]:C/ /,/="${LIST:[*]:C/ /,/}"'
     45  1.4  rillig 	@echo 'LIST:[*]:C/ /,/g="${LIST:[*]:C/ /,/g}"'
     46  1.4  rillig 	@echo 'LIST:[*]:C/ /,/1g="${LIST:[*]:C/ /,/1g}"'
     47  1.4  rillig 	@echo 'LIST:[@]:C/ /,/="${LIST:[@]:C/ /,/}"'
     48  1.4  rillig 	@echo 'LIST:[@]:C/ /,/g="${LIST:[@]:C/ /,/g}"'
     49  1.4  rillig 	@echo 'LIST:[@]:C/ /,/1g="${LIST:[@]:C/ /,/1g}"'
     50  1.4  rillig 	@echo 'LIST:[@]:[0]:C/ /,/="${LIST:[@]:[0]:C/ /,/}"'
     51  1.4  rillig 	@echo 'LIST:[0]:[@]:C/ /,/="${LIST:[0]:[@]:C/ /,/}"'
     52  1.4  rillig 	@echo 'LIST:[@]:[*]:C/ /,/="${LIST:[@]:[*]:C/ /,/}"'
     53  1.4  rillig 	@echo 'LIST:[*]:[@]:C/ /,/="${LIST:[*]:[@]:C/ /,/}"'
     54  1.4  rillig 
     55  1.4  rillig mod-squarebrackets-hash:
     56  1.4  rillig 	@echo 'EMPTY="${EMPTY}"'
     57  1.4  rillig 	@echo 'EMPTY:[#]="${EMPTY:[#]}" == 1 ?'
     58  1.4  rillig 	@echo 'ESCAPEDSPACE="${ESCAPEDSPACE}"'
     59  1.4  rillig 	@echo 'ESCAPEDSPACE:[#]="${ESCAPEDSPACE:[#]}" == 1 ?'
     60  1.4  rillig 	@echo 'REALLYSPACE="${REALLYSPACE}"'
     61  1.4  rillig 	@echo 'REALLYSPACE:[#]="${REALLYSPACE:[#]}" == 1 ?'
     62  1.4  rillig 	@echo 'LIST:[#]="${LIST:[#]}"'
     63  1.4  rillig 	@echo 'LIST:[0]:[#]="${LIST:[0]:[#]}" == 1 ?'
     64  1.4  rillig 	@echo 'LIST:[*]:[#]="${LIST:[*]:[#]}" == 1 ?'
     65  1.4  rillig 	@echo 'LIST:[@]:[#]="${LIST:[@]:[#]}"'
     66  1.4  rillig 	@echo 'LIST:[1]:[#]="${LIST:[1]:[#]}"'
     67  1.4  rillig 	@echo 'LIST:[1..3]:[#]="${LIST:[1..3]:[#]}"'
     68  1.4  rillig 
     69  1.4  rillig mod-squarebrackets-n:
     70  1.4  rillig 	@echo 'EMPTY:[1]="${EMPTY:[1]}"'
     71  1.4  rillig 	@echo 'ESCAPEDSPACE="${ESCAPEDSPACE}"'
     72  1.4  rillig 	@echo 'ESCAPEDSPACE:[1]="${ESCAPEDSPACE:[1]}"'
     73  1.4  rillig 	@echo 'REALLYSPACE="${REALLYSPACE}"'
     74  1.4  rillig 	@echo 'REALLYSPACE:[1]="${REALLYSPACE:[1]}" == "" ?'
     75  1.4  rillig 	@echo 'REALLYSPACE:[*]:[1]="${REALLYSPACE:[*]:[1]}" == " " ?'
     76  1.4  rillig 	@echo 'LIST:[1]="${LIST:[1]}"'
     77  1.4  rillig 	@echo 'LIST:[1.]="${LIST:[1.]}" is an error'
     78  1.4  rillig 	@echo 'LIST:[1].="${LIST:[1].}" is an error'
     79  1.4  rillig 	@echo 'LIST:[2]="${LIST:[2]}"'
     80  1.4  rillig 	@echo 'LIST:[6]="${LIST:[6]}"'
     81  1.4  rillig 	@echo 'LIST:[7]="${LIST:[7]}"'
     82  1.4  rillig 	@echo 'LIST:[999]="${LIST:[999]}"'
     83  1.4  rillig 	@echo 'LIST:[-]="${LIST:[-]}" is an error'
     84  1.4  rillig 	@echo 'LIST:[--]="${LIST:[--]}" is an error'
     85  1.4  rillig 	@echo 'LIST:[-1]="${LIST:[-1]}"'
     86  1.4  rillig 	@echo 'LIST:[-2]="${LIST:[-2]}"'
     87  1.4  rillig 	@echo 'LIST:[-6]="${LIST:[-6]}"'
     88  1.4  rillig 	@echo 'LIST:[-7]="${LIST:[-7]}"'
     89  1.4  rillig 	@echo 'LIST:[-999]="${LIST:[-999]}"'
     90  1.4  rillig 	@echo 'LONGLIST:[17]="${LONGLIST:[17]}"'
     91  1.4  rillig 	@echo 'LONGLIST:[0x11]="${LONGLIST:[0x11]}"'
     92  1.4  rillig 	@echo 'LONGLIST:[021]="${LONGLIST:[021]}"'
     93  1.4  rillig 	@echo 'LIST:[0]:[1]="${LIST:[0]:[1]}"'
     94  1.4  rillig 	@echo 'LIST:[*]:[1]="${LIST:[*]:[1]}"'
     95  1.4  rillig 	@echo 'LIST:[@]:[1]="${LIST:[@]:[1]}"'
     96  1.4  rillig 	@echo 'LIST:[0]:[2]="${LIST:[0]:[2]}"'
     97  1.4  rillig 	@echo 'LIST:[*]:[2]="${LIST:[*]:[2]}"'
     98  1.4  rillig 	@echo 'LIST:[@]:[2]="${LIST:[@]:[2]}"'
     99  1.4  rillig 	@echo 'LIST:[*]:C/ /,/:[2]="${LIST:[*]:C/ /,/:[2]}"'
    100  1.4  rillig 	@echo 'LIST:[*]:C/ /,/:[*]:[2]="${LIST:[*]:C/ /,/:[*]:[2]}"'
    101  1.4  rillig 	@echo 'LIST:[*]:C/ /,/:[@]:[2]="${LIST:[*]:C/ /,/:[@]:[2]}"'
    102  1.4  rillig 	@echo 'LONGLIST:[012..0x12]="${LONGLIST:[012..0x12]}"'
    103  1.4  rillig 
    104  1.4  rillig mod-squarebrackets-start-end:
    105  1.4  rillig 	@echo 'LIST:[1.]="${LIST:[1.]}" is an error'
    106  1.4  rillig 	@echo 'LIST:[1..]="${LIST:[1..]}" is an error'
    107  1.4  rillig 	@echo 'LIST:[1.. ]="${LIST:[1.. ]}" is an error'
    108  1.4  rillig 	@echo 'LIST:[1..1]="${LIST:[1..1]}"'
    109  1.4  rillig 	@echo 'LIST:[1..1.]="${LIST:[1..1.]}" is an error'
    110  1.4  rillig 	@echo 'LIST:[1..2]="${LIST:[1..2]}"'
    111  1.4  rillig 	@echo 'LIST:[2..1]="${LIST:[2..1]}"'
    112  1.4  rillig 	@echo 'LIST:[3..-2]="${LIST:[3..-2]}"'
    113  1.4  rillig 	@echo 'LIST:[-4..4]="${LIST:[-4..4]}"'
    114  1.4  rillig 	@echo 'LIST:[0..1]="${LIST:[0..1]}" is an error'
    115  1.4  rillig 	@echo 'LIST:[-1..0]="${LIST:[-1..0]}" is an error'
    116  1.4  rillig 	@echo 'LIST:[-1..1]="${LIST:[-1..1]}"'
    117  1.4  rillig 	@echo 'LIST:[0..0]="${LIST:[0..0]}"'
    118  1.4  rillig 	@echo 'LIST:[3..99]="${LIST:[3..99]}"'
    119  1.4  rillig 	@echo 'LIST:[-3..-99]="${LIST:[-3..-99]}"'
    120  1.4  rillig 	@echo 'LIST:[-99..-3]="${LIST:[-99..-3]}"'
    121  1.4  rillig 
    122  1.4  rillig mod-squarebrackets-nested:
    123  1.4  rillig 	@echo 'HASH="${HASH}" == "#" ?'
    124  1.4  rillig 	@echo 'LIST:[$${HASH}]="${LIST:[${HASH}]}"'
    125  1.4  rillig 	@echo 'LIST:[$${ZERO}]="${LIST:[${ZERO}]}"'
    126  1.4  rillig 	@echo 'LIST:[$${ZERO}x$${ONE}]="${LIST:[${ZERO}x${ONE}]}"'
    127  1.4  rillig 	@echo 'LIST:[$${ONE}]="${LIST:[${ONE}]}"'
    128  1.4  rillig 	@echo 'LIST:[$${MINUSONE}]="${LIST:[${MINUSONE}]}"'
    129  1.4  rillig 	@echo 'LIST:[$${STAR}]="${LIST:[${STAR}]}"'
    130  1.4  rillig 	@echo 'LIST:[$${AT}]="${LIST:[${AT}]}"'
    131  1.4  rillig 	@echo 'LIST:[$${EMPTY}]="${LIST:[${EMPTY}]}" is an error'
    132  1.4  rillig 	@echo 'LIST:[$${LONGLIST:[21]:S/2//}]="${LIST:[${LONGLIST:[21]:S/2//}]}"'
    133  1.4  rillig 	@echo 'LIST:[$${LIST:[#]}]="${LIST:[${LIST:[#]}]}"'
    134  1.4  rillig 	@echo 'LIST:[$${LIST:[$${HASH}]}]="${LIST:[${LIST:[${HASH}]}]}"'
    135  1.4  rillig 
    136  1.4  rillig mod-squarebrackets-space:
    137  1.4  rillig 	# As of 2020-11-01, it is possible to have spaces before the numbers
    138  1.4  rillig 	# but not after them.  This is an unintended side-effect of using
    139  1.4  rillig 	# strtol for parsing the numbers.
    140  1.4  rillig 	@echo 'LIST:[  -1..   +3]="${LIST:[  -1..   +3]}"'
    141  1.4  rillig 
    142  1.4  rillig mod-C-W:
    143  1.4  rillig 	@echo 'LIST:C/ /,/="${LIST:C/ /,/}"'
    144  1.4  rillig 	@echo 'LIST:C/ /,/W="${LIST:C/ /,/W}"'
    145  1.4  rillig 	@echo 'LIST:C/ /,/gW="${LIST:C/ /,/gW}"'
    146  1.4  rillig 	@echo 'EMPTY:C/^/,/="${EMPTY:C/^/,/}"'
    147  1.4  rillig 	@echo 'EMPTY:C/^/,/W="${EMPTY:C/^/,/W}"'
    148  1.4  rillig 
    149  1.4  rillig mod-S-W:
    150  1.4  rillig 	@echo 'LIST:S/ /,/="${LIST:S/ /,/}"'
    151  1.4  rillig 	@echo 'LIST:S/ /,/W="${LIST:S/ /,/W}"'
    152  1.4  rillig 	@echo 'LIST:S/ /,/gW="${LIST:S/ /,/gW}"'
    153  1.4  rillig 	@echo 'EMPTY:S/^/,/="${EMPTY:S/^/,/}"'
    154  1.4  rillig 	@echo 'EMPTY:S/^/,/W="${EMPTY:S/^/,/W}"'
    155  1.1  rillig 
    156  1.4  rillig mod-tW-tw:
    157  1.4  rillig 	@echo 'LIST:tW="${LIST:tW}"'
    158  1.4  rillig 	@echo 'LIST:tw="${LIST:tw}"'
    159  1.4  rillig 	@echo 'LIST:tW:C/ /,/="${LIST:tW:C/ /,/}"'
    160  1.4  rillig 	@echo 'LIST:tW:C/ /,/g="${LIST:tW:C/ /,/g}"'
    161  1.4  rillig 	@echo 'LIST:tW:C/ /,/1g="${LIST:tW:C/ /,/1g}"'
    162  1.4  rillig 	@echo 'LIST:tw:C/ /,/="${LIST:tw:C/ /,/}"'
    163  1.4  rillig 	@echo 'LIST:tw:C/ /,/g="${LIST:tw:C/ /,/g}"'
    164  1.4  rillig 	@echo 'LIST:tw:C/ /,/1g="${LIST:tw:C/ /,/1g}"'
    165  1.4  rillig 	@echo 'LIST:tw:tW:C/ /,/="${LIST:tw:tW:C/ /,/}"'
    166  1.4  rillig 	@echo 'LIST:tW:tw:C/ /,/="${LIST:tW:tw:C/ /,/}"'
    167