From 08eea971d2d3170ca357935644483dc520f46173 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 1 Dec 2016 13:19:49 +0200 Subject: Organize tests/, factor common testscript fragments --- build2/functions-builtin.cxx | 2 +- tests/buildfile | 2 +- tests/common.test | 21 +++++++++++++++++++++ tests/directive/assert.test | 2 +- tests/directive/buildfile | 4 +--- tests/directive/common.test | 11 ----------- tests/expansion/buildfile | 4 +--- tests/expansion/common.test | 11 ----------- tests/expansion/type.test | 2 +- tests/function/builtin/buildfile | 2 -- tests/function/builtin/testscript | 8 +------- tests/function/path/buildfile | 2 -- tests/function/path/testscript | 8 +------- tests/test/buildfile | 2 +- tests/test/common.test | 24 ++++++++++++++++++++++++ tests/test/script/buildfile | 2 +- tests/test/script/builtin/cat.test | 4 ++++ tests/test/script/common.test | 27 +++++++++++++++++++++++++++ tests/test/script/integration/buildfile | 1 - tests/test/script/integration/testscript | 13 ++++--------- tests/test/script/runner/cleanup.test | 13 ++----------- tests/test/script/runner/status.test | 15 +++------------ 22 files changed, 95 insertions(+), 85 deletions(-) create mode 100644 tests/common.test delete mode 100644 tests/directive/common.test delete mode 100644 tests/expansion/common.test create mode 100644 tests/test/common.test create mode 100644 tests/test/script/common.test diff --git a/build2/functions-builtin.cxx b/build2/functions-builtin.cxx index 0fe6135..df3554d 100644 --- a/build2/functions-builtin.cxx +++ b/build2/functions-builtin.cxx @@ -17,7 +17,7 @@ namespace build2 f["type"] = [](value* v) {return v->type != nullptr ? v->type->name : "";}; f["null"] = [](value* v) {return v->null;}; - f["empty"] = [](value v) {return v.empty ();}; + f["empty"] = [](value* v) {return v->null || v->empty ();}; f["identity"] = [](value* v) {return move (*v);}; diff --git a/tests/buildfile b/tests/buildfile index 405df8f..0c2a895 100644 --- a/tests/buildfile +++ b/tests/buildfile @@ -3,5 +3,5 @@ # license : MIT; see accompanying LICENSE file d = directive/ expansion/ function/ test/ -./: $d +./: $d file{common.test} include $d diff --git a/tests/common.test b/tests/common.test new file mode 100644 index 0000000..4d4520f --- /dev/null +++ b/tests/common.test @@ -0,0 +1,21 @@ +# file : tests/common.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Commonly-used build system test project setup and driver command line. +# + ++mkdir build ++cat <>>build/bootstrap.build +project = test +amalgamation = +EOI + +test = $effect($build.path) +test.options += -q --buildfile - + +# By default just load the buildfile. +# ++if ($empty($test.arguments)) + test.arguments = noop +end diff --git a/tests/directive/assert.test b/tests/directive/assert.test index ca1b035..80e28ba 100644 --- a/tests/directive/assert.test +++ b/tests/directive/assert.test @@ -2,7 +2,7 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -.include common.test +.include ../common.test $* <'assert true' : true $* <'assert! false foo' : not-false diff --git a/tests/directive/buildfile b/tests/directive/buildfile index e9e946e..583b149 100644 --- a/tests/directive/buildfile +++ b/tests/directive/buildfile @@ -2,6 +2,4 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -./: test{assert} file{common.test} - -test{*}: test = $effect($build.path) +./: test{assert} diff --git a/tests/directive/common.test b/tests/directive/common.test deleted file mode 100644 index 351c133..0000000 --- a/tests/directive/common.test +++ /dev/null @@ -1,11 +0,0 @@ -# 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 diff --git a/tests/expansion/buildfile b/tests/expansion/buildfile index 81df59e..2f02852 100644 --- a/tests/expansion/buildfile +++ b/tests/expansion/buildfile @@ -2,6 +2,4 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -./: test{type} file{common.test} - -test{*}: test = $effect($build.path) +./: test{type} diff --git a/tests/expansion/common.test b/tests/expansion/common.test deleted file mode 100644 index 881c74e..0000000 --- a/tests/expansion/common.test +++ /dev/null @@ -1,11 +0,0 @@ -# file : tests/expansion/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 diff --git a/tests/expansion/type.test b/tests/expansion/type.test index 27c646d..7ac6524 100644 --- a/tests/expansion/type.test +++ b/tests/expansion/type.test @@ -4,7 +4,7 @@ # Test type propagation during expansion. -.include common.test +.include ../common.test : var : diff --git a/tests/function/builtin/buildfile b/tests/function/builtin/buildfile index 5a49ad0..fb06e73 100644 --- a/tests/function/builtin/buildfile +++ b/tests/function/builtin/buildfile @@ -3,5 +3,3 @@ # license : MIT; see accompanying LICENSE file ./: test{testscript} - -test{*}: test = $effect($build.path) diff --git a/tests/function/builtin/testscript b/tests/function/builtin/testscript index 6491a60..98513d3 100644 --- a/tests/function/builtin/testscript +++ b/tests/function/builtin/testscript @@ -2,13 +2,7 @@ # 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 +.include ../../common.test : type : diff --git a/tests/function/path/buildfile b/tests/function/path/buildfile index 8f51cab..65ed19b 100644 --- a/tests/function/path/buildfile +++ b/tests/function/path/buildfile @@ -3,5 +3,3 @@ # license : MIT; see accompanying LICENSE file ./: test{testscript} - -test{*}: test = $effect($build.path) diff --git a/tests/function/path/testscript b/tests/function/path/testscript index fc1cb31..8b527e3 100644 --- a/tests/function/path/testscript +++ b/tests/function/path/testscript @@ -2,13 +2,7 @@ # 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 +.include ../../common.test +if ($cxx.target.class != windows) # @@ TMP ternarry s = '/' diff --git a/tests/test/buildfile b/tests/test/buildfile index 0a98d5e..3095a9d 100644 --- a/tests/test/buildfile +++ b/tests/test/buildfile @@ -3,5 +3,5 @@ # license : MIT; see accompanying LICENSE file d = script/ -./: $d +./: $d file{common.test} include $d diff --git a/tests/test/common.test b/tests/test/common.test new file mode 100644 index 0000000..9477359 --- /dev/null +++ b/tests/test/common.test @@ -0,0 +1,24 @@ +# file : tests/test/common.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Commonly-used build system test project setup and driver command line +# (test module tests). +# + ++mkdir build ++cat <>>build/bootstrap.build +project = test +amalgamation = + +using test +EOI + +test = $effect($build.path) +test.options += -q --buildfile - + +# By default perform test. +# ++if ($empty($test.arguments)) + test.arguments = test +end diff --git a/tests/test/script/buildfile b/tests/test/script/buildfile index 2c98193..7100d20 100644 --- a/tests/test/script/buildfile +++ b/tests/test/script/buildfile @@ -3,5 +3,5 @@ # license : MIT; see accompanying LICENSE file d = builtin/ integration/ runner/ -./: $d +./: $d file{common.test} include $d diff --git a/tests/test/script/builtin/cat.test b/tests/test/script/builtin/cat.test index 7797906..f94b7bd 100644 --- a/tests/test/script/builtin/cat.test +++ b/tests/test/script/builtin/cat.test @@ -2,6 +2,10 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file +# @@ I think these should be run indirectly (via cat & build) +# for cross-testing to work (we want to run the via the build +# system we built, not the one we used to acomplish this. + : in : cat <>EOO diff --git a/tests/test/script/common.test b/tests/test/script/common.test new file mode 100644 index 0000000..a38c0a1 --- /dev/null +++ b/tests/test/script/common.test @@ -0,0 +1,27 @@ +# file : tests/test/script/common.test +# copyright : Copyright (c) 2014-2016 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Commonly-used build system test project setup and driver command line +# (test module using testscript tests). +# + ++mkdir build ++cat <>>build/bootstrap.build +project = test +amalgamation = + +using test +EOI + +# The "cat & build" setup: first cat ($c) the testscript, then run build +# ($b) which will execute the testscript. +# +c = cat >>>testscript +b = $effect($build.path) -q --buildfile - <'./: test{testscript}' \ + &?test/*** test + +# Add extra set of quotes since this value will be "cat" (normally as $*) +# into testscript. +# +test = "'$test'" diff --git a/tests/test/script/integration/buildfile b/tests/test/script/integration/buildfile index d2b77c9..28aa014 100644 --- a/tests/test/script/integration/buildfile +++ b/tests/test/script/integration/buildfile @@ -4,4 +4,3 @@ ./: test{testscript} -test{*}: test = $effect($build.path) diff --git a/tests/test/script/integration/testscript b/tests/test/script/integration/testscript index 93ce08a..8960b88 100644 --- a/tests/test/script/integration/testscript +++ b/tests/test/script/integration/testscript @@ -2,16 +2,11 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -+mkdir build -+cat <>>build/bootstrap.build -project = test -amalgamation = +# @@ I think these should be run indirectly (via cat & build) +# for cross-testing to work (we want to run the via the build +# system we built, not the one we used to acomplish this. -using test -EOI - -test.options += -q --buildfile - -test.arguments = test +.include ../../common.test : scrip-files : diff --git a/tests/test/script/runner/cleanup.test b/tests/test/script/runner/cleanup.test index e5d917d..52c0a29 100644 --- a/tests/test/script/runner/cleanup.test +++ b/tests/test/script/runner/cleanup.test @@ -2,18 +2,9 @@ # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -+mkdir build -+cat <>>build/bootstrap.build -project = test -amalgamation = +.include ../common.test -using test -EOI - -b = $effect($build.path) -q --no-column --buildfile - <"./: test{testscript}" \ - &?test/*** test -c = cat >>>testscript -test = "'$test'" +b += --no-column # Valid cleanups. # diff --git a/tests/test/script/runner/status.test b/tests/test/script/runner/status.test index 4998311..cf4ce1d 100644 --- a/tests/test/script/runner/status.test +++ b/tests/test/script/runner/status.test @@ -1,19 +1,10 @@ -# file : tests/test/script/runner/status.tests +# file : tests/test/script/runner/status.test # copyright : Copyright (c) 2014-2016 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file -+mkdir build -+cat <>>build/bootstrap.build -project = test -amalgamation = +.include ../common.test -using test -EOI - -b = $effect($build.path) -q --no-column --buildfile - <"./: test{testscript}" \ - &?test/*** test -c = cat >>>testscript -test = "'$test'" +b += --no-column +if ($cxx.target.class == "windows") ext = ".exe" -- cgit v1.1