Home | History | Annotate | Line # | Download | only in unit-tests
vardebug.mk revision 1.9
      1  1.9  rillig # $NetBSD: vardebug.mk,v 1.9 2023/12/20 09:46:00 rillig Exp $
      2  1.1  rillig #
      3  1.1  rillig # Demonstrates the debugging output for var.c.
      4  1.1  rillig 
      5  1.4  rillig .MAKEFLAGS: -dv FROM_CMDLINE=
      6  1.1  rillig 
      7  1.9  rillig # expect: Global: VAR = added
      8  1.1  rillig VAR=		added		# VarAdd
      9  1.9  rillig # expect: Global: VAR = overwritten
     10  1.1  rillig VAR=		overwritten	# Var_Set
     11  1.9  rillig # expect: Global: delete VAR
     12  1.9  rillig .undef VAR
     13  1.9  rillig # expect: Global: ignoring delete 'VAR' as it is not found
     14  1.9  rillig .undef VAR
     15  1.1  rillig 
     16  1.1  rillig # The variable with the empty name cannot be set at all.
     17  1.9  rillig # expect: Global: ignoring ' = empty name' as the variable name '${:U}' expands to empty
     18  1.1  rillig ${:U}=		empty name	# Var_Set
     19  1.9  rillig # expect: Global: ignoring ' += empty name' as the variable name '${:U}' expands to empty
     20  1.1  rillig ${:U}+=		empty name	# Var_Append
     21  1.1  rillig 
     22  1.1  rillig FROM_CMDLINE=	overwritten	# Var_Set (ignored)
     23  1.1  rillig 
     24  1.9  rillig # expect: Global: VAR = 1
     25  1.1  rillig VAR=		1
     26  1.9  rillig # expect: Global: VAR = 1 2
     27  1.1  rillig VAR+=		2
     28  1.9  rillig # expect: Global: VAR = 1 2 3
     29  1.1  rillig VAR+=		3
     30  1.1  rillig 
     31  1.9  rillig # expect: Pattern for ':M' is "[2]"
     32  1.9  rillig # expect: Result of ${VAR:M[2]} is "2"
     33  1.6  rillig .if ${VAR:M[2]}			# ModifyWord_Match
     34  1.1  rillig .endif
     35  1.9  rillig # expect: Pattern for ':N' is "[2]"
     36  1.9  rillig # expect: Result of ${VAR:N[2]} is "1 3"
     37  1.9  rillig .if ${VAR:N[2]}			# ModifyWord_NoMatch
     38  1.1  rillig .endif
     39  1.1  rillig 
     40  1.6  rillig .if ${VAR:S,2,two,}		# ParseModifierPart
     41  1.1  rillig .endif
     42  1.1  rillig 
     43  1.9  rillig # expect: Result of ${VAR:Q} is "1\ 2\ 3"
     44  1.1  rillig .if ${VAR:Q}			# VarQuote
     45  1.1  rillig .endif
     46  1.1  rillig 
     47  1.1  rillig .if ${VAR:tu:tl:Q}		# ApplyModifiers
     48  1.1  rillig .endif
     49  1.1  rillig 
     50  1.2  rillig # ApplyModifiers, "Got ..."
     51  1.9  rillig # expect: Result of ${:Mvalu[e]} is "value" (eval-defined, defined)
     52  1.2  rillig .if ${:Uvalue:${:UM*e}:Mvalu[e]}
     53  1.2  rillig .endif
     54  1.2  rillig 
     55  1.9  rillig # expect: Global: delete VAR
     56  1.1  rillig .undef ${:UVAR}			# Var_Delete
     57  1.1  rillig 
     58  1.3  rillig # When ApplyModifiers results in an error, this appears in the debug log
     59  1.3  rillig # as "is error", without surrounding quotes.
     60  1.9  rillig # expect: Result of ${:unknown} is error (eval-defined, defined)
     61  1.8  rillig # expect+2: Malformed conditional (${:Uvariable:unknown})
     62  1.8  rillig # expect+1: Unknown modifier "unknown"
     63  1.3  rillig .if ${:Uvariable:unknown}
     64  1.3  rillig .endif
     65  1.3  rillig 
     66  1.3  rillig # XXX: The error message is "Malformed conditional", which is wrong.
     67  1.3  rillig # The condition is syntactically fine, it just contains an undefined variable.
     68  1.3  rillig #
     69  1.3  rillig # There is a specialized error message for "Undefined variable", but as of
     70  1.3  rillig # 2020-08-08, that is not covered by any unit tests.  It might even be
     71  1.3  rillig # unreachable.
     72  1.8  rillig # expect+1: Malformed conditional (${UNDEFINED})
     73  1.3  rillig .if ${UNDEFINED}
     74  1.3  rillig .endif
     75  1.3  rillig 
     76  1.5  rillig # By default, .SHELL is not defined and thus can be set.  As soon as it is
     77  1.7  rillig # accessed, it is initialized in the command line scope (during VarFind),
     78  1.5  rillig # where it is set to read-only.  Assigning to it is ignored.
     79  1.9  rillig # expect: Command: ignoring '.SHELL = overwritten' as it is read-only
     80  1.5  rillig .MAKEFLAGS: .SHELL=overwritten
     81  1.5  rillig 
     82  1.4  rillig .MAKEFLAGS: -d0
     83