Home | History | Annotate | Line # | Download | only in unit-tests
varmod-order.mk revision 1.13
      1  1.13  rillig # $NetBSD: varmod-order.mk,v 1.13 2024/07/05 17:41:50 rillig Exp $
      2   1.1  rillig #
      3   1.6  rillig # Tests for the :O variable modifier and its variants, which either sort the
      4   1.6  rillig # words of the value or shuffle them.
      5   1.1  rillig 
      6   1.7  rillig WORDS=		one two three four five six seven eight nine ten
      7   1.7  rillig NUMBERS=	8 5 4 9 1 7 6 10 3 2	# in English alphabetical order
      8   1.3  rillig 
      9   1.7  rillig .if ${WORDS:O} != "eight five four nine one seven six ten three two"
     10   1.7  rillig .  error ${WORDS:O}
     11   1.3  rillig .endif
     12   1.1  rillig 
     13   1.4  rillig # Unknown modifier "OX"
     14  1.12  rillig # FIXME: The error message "Undefined variable" is wrong.
     15  1.12  rillig # expect+2: Undefined variable "${WORDS:OX"
     16  1.12  rillig # expect+1: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OX"
     17   1.7  rillig _:=	${WORDS:OX}
     18   1.4  rillig 
     19   1.4  rillig # Unknown modifier "OxXX"
     20  1.12  rillig # FIXME: The error message "Undefined variable" is wrong.
     21  1.12  rillig # expect+2: Undefined variable "${WORDS:Ox"
     22  1.12  rillig # expect+1: while evaluating variable "WORDS" with value "one two three four five six seven eight nine ten": Bad modifier ":OxXX"
     23   1.7  rillig _:=	${WORDS:OxXX}
     24   1.4  rillig 
     25   1.6  rillig # Missing closing brace, to cover the error handling code.
     26  1.13  rillig # expect: make: Unclosed expression, expecting '}' for modifier "O" of variable "WORDS" with value "eight five four nine one seven six ten three two"
     27   1.7  rillig _:=	${WORDS:O
     28  1.13  rillig # expect: make: Unclosed expression, expecting '}' for modifier "On" of variable "NUMBERS" with value "1 2 3 4 5 6 7 8 9 10"
     29   1.6  rillig _:=	${NUMBERS:On
     30  1.13  rillig # expect: make: Unclosed expression, expecting '}' for modifier "Onr" of variable "NUMBERS" with value "10 9 8 7 6 5 4 3 2 1"
     31   1.6  rillig _:=	${NUMBERS:Onr
     32   1.6  rillig 
     33   1.6  rillig # Shuffling numerically doesn't make sense, so don't allow 'x' and 'n' to be
     34   1.6  rillig # combined.
     35   1.6  rillig #
     36  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Oxn"
     37   1.6  rillig # expect+1: Malformed conditional (${NUMBERS:Oxn})
     38   1.6  rillig .if ${NUMBERS:Oxn}
     39   1.6  rillig .  error
     40   1.6  rillig .else
     41   1.6  rillig .  error
     42   1.6  rillig .endif
     43   1.6  rillig 
     44   1.6  rillig # Extra characters after ':On' are detected and diagnosed.
     45   1.6  rillig #
     46  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":On_typo"
     47  1.11  rillig # expect+1: Malformed conditional (${NUMBERS:On_typo})
     48   1.6  rillig .if ${NUMBERS:On_typo}
     49   1.6  rillig .  error
     50   1.6  rillig .else
     51   1.6  rillig .  error
     52   1.6  rillig .endif
     53   1.6  rillig 
     54   1.6  rillig # Extra characters after ':Onr' are detected and diagnosed.
     55   1.6  rillig #
     56  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onr_typo"
     57  1.11  rillig # expect+1: Malformed conditional (${NUMBERS:Onr_typo})
     58   1.6  rillig .if ${NUMBERS:Onr_typo}
     59   1.6  rillig .  error
     60   1.6  rillig .else
     61   1.6  rillig .  error
     62   1.6  rillig .endif
     63   1.6  rillig 
     64   1.6  rillig # Extra characters after ':Orn' are detected and diagnosed.
     65   1.6  rillig #
     66  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orn_typo"
     67  1.11  rillig # expect+1: Malformed conditional (${NUMBERS:Orn_typo})
     68   1.6  rillig .if ${NUMBERS:Orn_typo}
     69   1.6  rillig .  error
     70   1.6  rillig .else
     71   1.6  rillig .  error
     72   1.6  rillig .endif
     73   1.6  rillig 
     74   1.6  rillig # Repeating the 'n' is not supported.  In the typical use cases, the sorting
     75   1.6  rillig # criteria are fixed, not computed, therefore allowing this redundancy does
     76   1.6  rillig # not make sense.
     77   1.6  rillig #
     78  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onn"
     79  1.11  rillig # expect+1: Malformed conditional (${NUMBERS:Onn})
     80   1.6  rillig .if ${NUMBERS:Onn}
     81   1.6  rillig .  error
     82   1.6  rillig .else
     83   1.6  rillig .  error
     84   1.6  rillig .endif
     85   1.6  rillig 
     86   1.6  rillig # Repeating the 'r' is not supported as well, for the same reasons as above.
     87   1.6  rillig #
     88  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Onrr"
     89  1.11  rillig # expect+1: Malformed conditional (${NUMBERS:Onrr})
     90   1.6  rillig .if ${NUMBERS:Onrr}
     91   1.6  rillig .  error
     92   1.6  rillig .else
     93   1.6  rillig .  error
     94   1.6  rillig .endif
     95   1.6  rillig 
     96   1.6  rillig # Repeating the 'r' is not supported as well, for the same reasons as above.
     97   1.6  rillig #
     98  1.12  rillig # expect+2: while evaluating variable "NUMBERS" with value "8 5 4 9 1 7 6 10 3 2": Bad modifier ":Orrn"
     99  1.11  rillig # expect+1: Malformed conditional (${NUMBERS:Orrn})
    100   1.6  rillig .if ${NUMBERS:Orrn}
    101   1.6  rillig .  error
    102   1.6  rillig .else
    103   1.6  rillig .  error
    104   1.6  rillig .endif
    105   1.6  rillig 
    106   1.9  rillig 
    107  1.10  rillig # If a modifier that starts with ':O' is not one of the known sort or shuffle
    108  1.10  rillig # forms, it is a parse error.  Several other modifiers such as ':H' or ':u'
    109  1.10  rillig # fall back to the SysV modifier, for example, ':H=new' is not the standard
    110  1.10  rillig # ':H' modifier but instead replaces a trailing 'H' with 'new' in each word.
    111  1.10  rillig # There is no such fallback for the ':O' modifiers.
    112  1.10  rillig SWITCH=	On
    113  1.12  rillig # expect+2: while evaluating variable "SWITCH" with value "On": Bad modifier ":On=Off"
    114  1.11  rillig # expect+1: Malformed conditional (${SWITCH:On=Off} != "Off")
    115  1.10  rillig .if ${SWITCH:On=Off} != "Off"
    116   1.9  rillig .  error
    117   1.9  rillig .else
    118   1.9  rillig .  error
    119   1.9  rillig .endif
    120   1.9  rillig 
    121   1.1  rillig all:
    122