Home | History | Annotate | Line # | Download | only in unit-tests
      1 # $NetBSD: varmod-exclam-shell.mk,v 1.4 2020/11/03 18:42:33 rillig Exp $
      2 #
      3 # Tests for the :!cmd! variable modifier, which evaluates the modifier
      4 # argument, independent of the value or the name of the original variable.
      5 
      6 .if ${:!echo hello | tr 'l' 'l'!} != "hello"
      7 .  error
      8 .endif
      9 
     10 # The output is truncated at the first null byte.
     11 # Cmd_Exec returns only a string pointer without length information.
     12 # Truncating the output is not necessarily intended but may also be a side
     13 # effect from the implementation.  Having null bytes in the output of a
     14 # shell command is so unusual that it doesn't matter in practice.
     15 .if ${:!echo hello | tr 'l' '\0'!} != "he"
     16 .  error
     17 .endif
     18 
     19 # The newline at the end of the output is stripped.
     20 .if ${:!echo!} != ""
     21 .  error
     22 .endif
     23 
     24 # Only the final newline of the output is stripped.  All other newlines are
     25 # converted to spaces.
     26 .if ${:!echo;echo!} != " "
     27 .  error
     28 .endif
     29 
     30 # Each newline in the output is converted to a space, except for the newline
     31 # at the end of the output, which is stripped.
     32 .if ${:!echo;echo;echo;echo!} != "   "
     33 .  error
     34 .endif
     35 
     36 all:
     37 	@:;
     38