From 9bf93c1ab73ee3cd2b763285fc5fc5456e972854 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 11 Jan 2017 10:14:23 +0200 Subject: Implement support for narrowing down tests (config.test) --- tests/test/config-test/testscript | 200 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 tests/test/config-test/testscript (limited to 'tests/test/config-test/testscript') diff --git a/tests/test/config-test/testscript b/tests/test/config-test/testscript new file mode 100644 index 0000000..be342ef --- /dev/null +++ b/tests/test/config-test/testscript @@ -0,0 +1,200 @@ +# file : tests/test/config-build/testscript +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Setup a realistic test project that we will then exercise. +# + +test.options = --jobs 1 --quiet +test.arguments = 'test(../proj/@./)' # Test out-of-src (for parallel). +#test.cleanups = &**/ # Cleanup out directory structure. +test.cleanups = &!./ #@@ TMP + ++mkdir proj ++mkdir proj/build ++cat <>>proj/build/bootstrap.build +project = proj +amalgamation = + +using test +EOI + ++cat <>>proj/buildfile +d = tests/ units/ +./: $d +include $d +EOI + +# tests/ - as a subproject +# ++mkdir proj/tests ++mkdir proj/tests/build ++cat <>>proj/tests/build/bootstrap.build +project = + +using test +EOI + ++cat <>>proj/tests/buildfile +d = script/ +./: $d +include $d +EOI + +# tests/script - scripted test +# ++mkdir proj/tests/script ++cat <>>proj/tests/script/buildfile +./: test{basics.test} +EOI ++cat <>>proj/tests/script/basics.test +echo 'tests/script/basics/foo' >+ : foo +echo 'tests/script/basics/bar' >+ : bar + +: baz +{ + echo 'tests/script/basics/baz/foo' >+ : foo + echo 'tests/script/basics/baz/bar' >+ : bar +} +EOI + +# units/ - as a subdirectory +# ++mkdir proj/units + +# This one is "dual": test and sub-test alias. +# ++cat <>>proj/units/buildfile +d = simple/ script/ +./: $d test{testscript} +include $d +EOI ++cat <>>proj/units/testscript +echo 'units' >+ +EOI + +# units/simple - simple (non-scripted) test +# +# This one is a bit tricky since we need an executable to run. We don't want +# to be building anything as part of our test project so what we do is test +# a dummy file target with an overridden test target. +# ++mkdir proj/units/simple ++touch proj/units/simple/driver ++cat <>>proj/units/simple/buildfile +driver = $src_root/../../exe{driver} +#@@ TMP file{driver}@./: $driver +./: file{driver} $driver +file{driver}@./: test = $driver +file{driver}@./: test.arguments = units/simple +EOI + +# units/script - scripted test +# ++mkdir proj/units/script ++cat <>>proj/units/script/buildfile +./: test{testscript} +EOI ++cat <>>proj/units/script/testscript +echo 'units/script/foo' >+ : foo +echo 'units/script/bar' >+ : bar +EOI + +# Now the tests. Should all be top-level, no groups (or set test.arguments). +# + +: all +: +$* >>EOO +tests/script/basics/foo +tests/script/basics/bar +tests/script/basics/baz/foo +tests/script/basics/baz/bar +units/simple +units/script/foo +units/script/bar +units +EOO + +: alias-pass +: Test lead-up alias pass-through (but not test) +: +$* config.test=units/simple/file{driver} >>EOO +units/simple +EOO + +: alias-test +: Test lead-up alias test (but not pass-through) +: +$* config.test=dir{units/} >>EOO +units +EOO + +: alias-pass-test +: Test lead-up alias pass-through and test +: +$* config.test=units/ >>EOO +units/simple +units/script/foo +units/script/bar +units +EOO + +: alias-pass-id-only +: Test lead-up alias pass-through (ids only) +: +$* config.test=bogus >>EOO +units/simple +EOO + +: target-simple +: +$* config.test=units/simple/file{driver} >>EOO +units/simple +EOO + +: target-script +: +$* config.test=dir{units/script/} >>EOO +units/script/foo +units/script/bar +EOO + +: id +: +$* config.test=foo >>EOO +units/simple +units/script/foo +EOO + +: target-id +: +$* config.test=dir{units/script/}@foo >>EOO +units/script/foo +EOO + +: target-ids +: +$* 'config.test=dir{units/script/}@{foo bar}' >>EOO +units/script/foo +units/script/bar +EOO + +: id-group +: +$* config.test=tests/@{basics/baz} >>EOO +tests/script/basics/baz/foo +tests/script/basics/baz/bar +EOO + +: id-in-group +: +$* config.test=tests/@{basics/baz/bar} >>EOO +tests/script/basics/baz/bar +EOO + +# @@ TMP HACK +# +-rm -r all/ alias-pass/ alias-test/ alias-pass-test/ alias-pass-id-only/ \ + target-simple/ target-script/ id/ target-id/ target-ids/ id-group/ \ + id-in-group/ -- cgit v1.1