aboutsummaryrefslogtreecommitdiff
path: root/tests/directive
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-11-23 16:29:49 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-23 16:29:49 +0200
commit793f078ec31dc61921b382f14412ed3e25cc51d8 (patch)
tree62fb0b58dde440387ca585b151a10dc5af192a25 /tests/directive
parent79cb3221c2babe6f560f2e3e463e899631a32b33 (diff)
Implement assert directive
The grammar is as follows: assert <expression> [<description>] assert! <expression> [<description>] The expression must evaluate to 'true' or 'false', just like in if-else.
Diffstat (limited to 'tests/directive')
-rw-r--r--tests/directive/assert.test28
-rw-r--r--tests/directive/buildfile7
-rw-r--r--tests/directive/common.test11
3 files changed, 46 insertions, 0 deletions
diff --git a/tests/directive/assert.test b/tests/directive/assert.test
new file mode 100644
index 0000000..ca1b035
--- /dev/null
+++ b/tests/directive/assert.test
@@ -0,0 +1,28 @@
+# file : tests/directive/assert.test
+# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+.include common.test
+
+$* <'assert true' : true
+$* <'assert! false foo' : not-false
+$* <'assert true $no_such_function()' : skip-line
+$* <'assert! $empty($build.version)' : expr
+
+: false
+:
+$* <'assert false' 2>>EOE != 0
+<stdin>:1:1: error: assertion failed
+EOE
+
+: false-desc
+:
+$* <'assert false bad thing happened: (a == b)' 2>>EOE != 0
+<stdin>:1:1: error: assertion failed: bad thing happened: false
+EOE
+
+: invalid
+:
+$* <'assert junk' 2>>EOE != 0
+<stdin>:1:8: error: expected assert-expression to evaluate to 'true' or 'false' instead of 'junk'
+EOE
diff --git a/tests/directive/buildfile b/tests/directive/buildfile
new file mode 100644
index 0000000..e9e946e
--- /dev/null
+++ b/tests/directive/buildfile
@@ -0,0 +1,7 @@
+# file : tests/directive/buildfile
+# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
+./: test{assert} file{common.test}
+
+test{*}: test = $effect($build.path)
diff --git a/tests/directive/common.test b/tests/directive/common.test
new file mode 100644
index 0000000..351c133
--- /dev/null
+++ b/tests/directive/common.test
@@ -0,0 +1,11 @@
+# file : tests/directive/assert.test
+# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd
+# license : MIT; see accompanying LICENSE file
+
++mkdir build
++cat <<EOI >>>build/bootstrap.build
+project = test
+amalgamation =
+EOI
+
+test.options += -q --buildfile - noop