aboutsummaryrefslogtreecommitdiff
path: root/libbuild2/build/script/parser+body.test.testscript
diff options
context:
space:
mode:
Diffstat (limited to 'libbuild2/build/script/parser+body.test.testscript')
-rw-r--r--libbuild2/build/script/parser+body.test.testscript133
1 files changed, 133 insertions, 0 deletions
diff --git a/libbuild2/build/script/parser+body.test.testscript b/libbuild2/build/script/parser+body.test.testscript
new file mode 100644
index 0000000..11c2609
--- /dev/null
+++ b/libbuild2/build/script/parser+body.test.testscript
@@ -0,0 +1,133 @@
+# file : libbuild2/build/script/parser+body.test.testscript
+# license : MIT; see accompanying LICENSE file
+
+test.options += -b
+
+: lines
+:
+$* <<EOI >>EOO
+ s = 'foo'
+ if echo "$s" | sed 's/o/a/p' >>>? 'bar'
+ f = 'baz'
+ else
+ f = 'fox'
+ end
+ depdb clear
+ depdb string "$s"
+ depdb hash "$f"
+ foo "$s" "$f"
+ EOI
+ foo "$s" "$f"
+ EOO
+
+: temp_dir
+:
+{
+ test.options += -t
+
+ : no
+ :
+ $* <<EOI >false
+ foo
+ EOI
+
+ : yes
+ :
+ $* <<EOI >true
+ foo
+ f = $~/f
+ EOI
+
+ : preamble-no
+ :
+ $* <<EOI >false
+ f1 = $~/f2
+ depdb string "$f1"
+ f2 = $~/f3
+ depdb string "$f2"
+ foo "$f1" "$f2"
+ EOI
+
+ : preamble-yes
+ :
+ $* <<EOI >true
+ f1 = $~/f1
+ depdb string "$f1"
+ f2 = $~/f2
+ foo "$f2"
+ EOI
+}
+
+: command
+:
+$* <<EOF >>EOF
+ foo >| 2>- &a &?b
+ foo >=c 2>~/error:.*/ &!c
+ foo >>:/~%EOS%
+ %.*
+ abc
+ %xyz.*%
+ EOS
+ EOF
+
+: if-else
+:
+$* <<EOF >>EOF
+ if foo
+ bar
+ elif fox
+ if fix
+ baz
+ end
+ biz
+ end
+ if! foo
+ bar
+ elif! fox
+ baz
+ end
+ EOF
+
+: quoting
+:
+$* <<EOI >>EOO
+ foo 'bar' "baz" '' ""
+ "$foo"
+ "foo$bar"
+ "fo"o
+ "foo"\"
+ "foo\\"
+ "foo\"<"
+ fo\"o
+ fo\\o
+ fo\<o
+ "fo<o"
+ 'fo\"o'
+ f"oo" "ba"r
+ f"oo" 'ba'r
+ "fo"'o'
+ 'foo b"ar baz'
+ EOI
+ foo 'bar' "baz" '' ""
+ "$foo"
+ "foo$bar"
+ "foo"
+ "foo\""
+ "foo\\"
+ "foo\"<"
+ fo\"o
+ fo\\o
+ fo\<o
+ "fo<o"
+ 'fo\"o'
+ "foo bar"
+ "foo" 'bar'
+ "foo"
+ 'foo b"ar baz'
+ EOO
+
+: no-newline
+:
+$* <:'foo' 2>>EOE != 0
+ buildfile:11:4: error: expected newline instead of <end of file>
+ EOE