From 793f078ec31dc61921b382f14412ed3e25cc51d8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 23 Nov 2016 16:29:49 +0200 Subject: Implement assert directive The grammar is as follows: assert [] assert! [] The expression must evaluate to 'true' or 'false', just like in if-else. --- tests/directive/assert.test | 28 ++++++++++++++++++++++++++++ tests/directive/buildfile | 7 +++++++ tests/directive/common.test | 11 +++++++++++ 3 files changed, 46 insertions(+) create mode 100644 tests/directive/assert.test create mode 100644 tests/directive/buildfile create mode 100644 tests/directive/common.test (limited to 'tests/directive') 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 +:1:1: error: assertion failed +EOE + +: false-desc +: +$* <'assert false bad thing happened: (a == b)' 2>>EOE != 0 +:1:1: error: assertion failed: bad thing happened: false +EOE + +: invalid +: +$* <'assert junk' 2>>EOE != 0 +: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 <>>build/bootstrap.build +project = test +amalgamation = +EOI + +test.options += -q --buildfile - noop -- cgit v1.1