summaryrefslogtreecommitdiff
path: root/unit-tests/varmod-exclam-shell.mk
diff options
context:
space:
mode:
Diffstat (limited to 'unit-tests/varmod-exclam-shell.mk')
-rw-r--r--unit-tests/varmod-exclam-shell.mk28
1 files changed, 28 insertions, 0 deletions
diff --git a/unit-tests/varmod-exclam-shell.mk b/unit-tests/varmod-exclam-shell.mk
new file mode 100644
index 0000000000000..2e811ddb4f5c8
--- /dev/null
+++ b/unit-tests/varmod-exclam-shell.mk
@@ -0,0 +1,28 @@
+# $NetBSD: varmod-exclam-shell.mk,v 1.2 2020/08/16 12:48:55 rillig Exp $
+#
+# Tests for the :!cmd! variable modifier.
+
+.if ${:!echo hello | tr 'l' 'l'!} != "hello"
+.warning unexpected
+.endif
+
+# The output is truncated at the first null byte.
+# Cmd_Exec returns only a string pointer without length information.
+.if ${:!echo hello | tr 'l' '\0'!} != "he"
+.warning unexpected
+.endif
+
+.if ${:!echo!} != ""
+.warning A newline at the end of the output must be stripped.
+.endif
+
+.if ${:!echo;echo!} != " "
+.warning Only a single newline at the end of the output is stripped.
+.endif
+
+.if ${:!echo;echo;echo;echo!} != " "
+.warning Other newlines in the output are converted to spaces.
+.endif
+
+all:
+ @:;