diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-23 16:29:49 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-23 16:29:49 +0200 |
commit | 793f078ec31dc61921b382f14412ed3e25cc51d8 (patch) | |
tree | 62fb0b58dde440387ca585b151a10dc5af192a25 /tests | |
parent | 79cb3221c2babe6f560f2e3e463e899631a32b33 (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')
-rw-r--r-- | tests/buildfile | 2 | ||||
-rw-r--r-- | tests/directive/assert.test | 28 | ||||
-rw-r--r-- | tests/directive/buildfile | 7 | ||||
-rw-r--r-- | tests/directive/common.test | 11 |
4 files changed, 47 insertions, 1 deletions
diff --git a/tests/buildfile b/tests/buildfile index cd5177e..f38b3ca 100644 --- a/tests/buildfile +++ b/tests/buildfile @@ -2,6 +2,6 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -d = function/ test/ +d = directive/ function/ test/ ./: $d include $d 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 |