summaryrefslogtreecommitdiff
path: root/unit-tests/vardebug.mk
diff options
context:
space:
mode:
Diffstat (limited to 'unit-tests/vardebug.mk')
-rw-r--r--unit-tests/vardebug.mk59
1 files changed, 59 insertions, 0 deletions
diff --git a/unit-tests/vardebug.mk b/unit-tests/vardebug.mk
new file mode 100644
index 0000000000000..f61df98d50def
--- /dev/null
+++ b/unit-tests/vardebug.mk
@@ -0,0 +1,59 @@
+# $NetBSD: vardebug.mk,v 1.3 2020/08/08 14:28:46 rillig Exp $
+#
+# Demonstrates the debugging output for var.c.
+
+RELEVANT= yes
+
+VAR= added # VarAdd
+VAR= overwritten # Var_Set
+.undef VAR # Var_Delete (found)
+.undef VAR # Var_Delete (not found)
+
+# The variable with the empty name cannot be set at all.
+${:U}= empty name # Var_Set
+${:U}+= empty name # Var_Append
+
+FROM_CMDLINE= overwritten # Var_Set (ignored)
+
+VAR= 1
+VAR+= 2
+VAR+= 3
+
+.if ${VAR:M[2]} # VarMatch
+.endif
+.if ${VAR:N[2]} # VarNoMatch (no debug output)
+.endif
+
+.if ${VAR:S,2,two,} # VarGetPattern
+.endif
+
+.if ${VAR:Q} # VarQuote
+.endif
+
+.if ${VAR:tu:tl:Q} # ApplyModifiers
+.endif
+
+# ApplyModifiers, "Got ..."
+.if ${:Uvalue:${:UM*e}:Mvalu[e]}
+.endif
+
+.undef ${:UVAR} # Var_Delete
+
+# When ApplyModifiers results in an error, this appears in the debug log
+# as "is error", without surrounding quotes.
+.if ${:Uvariable:unknown}
+.endif
+
+# XXX: The error message is "Malformed conditional", which is wrong.
+# The condition is syntactically fine, it just contains an undefined variable.
+#
+# There is a specialized error message for "Undefined variable", but as of
+# 2020-08-08, that is not covered by any unit tests. It might even be
+# unreachable.
+.if ${UNDEFINED}
+.endif
+
+RELEVANT= no
+
+all:
+ @: