Home | History | Annotate | Line # | Download | only in unit-tests
      1 # $NetBSD: varmod-l-name-to-value.mk,v 1.8 2023/11/19 21:47:52 rillig Exp $
      2 #
      3 # Tests for the :L modifier, which returns the variable name as the new value.
      4 
      5 # The empty variable name leads to an empty string.
      6 .if ${:L} != ""
      7 .  error
      8 .endif
      9 
     10 # The variable name is converted into an expression with the variable name
     11 # "VARNAME" and the value "VARNAME".
     12 .if ${VARNAME:L} != "VARNAME"
     13 .  error
     14 .endif
     15 
     16 # The value of the expression can be modified afterwards.
     17 .if ${VARNAME:L:S,VAR,,} != "NAME"
     18 .  error
     19 .endif
     20 
     21 # The name of the expression is still the same as before. Using the :L
     22 # modifier, it can be restored.
     23 #
     24 # Hmmm, this can be used as a double storage or a backup mechanism.
     25 # Probably unintended, but maybe useful.
     26 .if ${VARNAME:L:S,VAR,,:L} != "VARNAME"
     27 .  error
     28 .endif
     29 
     30 # Between 2020-09-22 (var.c 1.527) and 2020-09-30 (var.c 1.553), there was
     31 # a bug in the evaluation of expressions.  Indirect modifiers like
     32 # the below :L did not update the definedness of the enclosing expression.
     33 # This resulted in a wrong "Malformed conditional".
     34 .if ${value:${:UL}} == ""
     35 .endif
     36 
     37 # As of 2020-10-02, the :L modifier does not ensure that it is followed by
     38 # a delimiter, that is, a ':' or endc.  Neither does the :P modifier.
     39 .if ${value:LLLLLLPL} != "value"
     40 .  error
     41 .endif
     42 
     43 all:
     44 	@:;
     45