diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2018-02-05 14:39:47 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2018-02-05 14:39:47 +0200 |
commit | 36ec90018e1a6337d23fc5286ed926c2134bde1f (patch) | |
tree | 40710bf9555076689d1ee7726ec3e29317dba00a /tests/test/script | |
parent | 3954be70024fd60c20c658f08025eff7654a8943 (diff) |
Add tests for auto-generated test inputs/outputs
Diffstat (limited to 'tests/test/script')
-rw-r--r-- | tests/test/script/generated/buildfile | 8 | ||||
-rw-r--r-- | tests/test/script/generated/driver.cxx | 11 | ||||
-rw-r--r-- | tests/test/script/generated/testscript | 34 | ||||
-rw-r--r-- | tests/test/script/generated/testscript.in | 5 | ||||
-rw-r--r-- | tests/test/script/integration/buildfile | 8 | ||||
-rw-r--r-- | tests/test/script/integration/testscript | 86 |
6 files changed, 152 insertions, 0 deletions
diff --git a/tests/test/script/generated/buildfile b/tests/test/script/generated/buildfile new file mode 100644 index 0000000..c27b49d --- /dev/null +++ b/tests/test/script/generated/buildfile @@ -0,0 +1,8 @@ +# file : tests/test/script/generated/buildfile +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Test generated testscripts. +# + +./: test{testscript} $b file{*.cxx +*.in} diff --git a/tests/test/script/generated/driver.cxx b/tests/test/script/generated/driver.cxx new file mode 100644 index 0000000..e155462 --- /dev/null +++ b/tests/test/script/generated/driver.cxx @@ -0,0 +1,11 @@ +// file : tests/test/script/generated/driver.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#include <iostream> + +int +main () +{ + std::cout << "1.2.3" << std::endl; +} diff --git a/tests/test/script/generated/testscript b/tests/test/script/generated/testscript new file mode 100644 index 0000000..572c73f --- /dev/null +++ b/tests/test/script/generated/testscript @@ -0,0 +1,34 @@ +# file : tests/test/script/generated/testscript +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +test.arguments = test clean + +# Note: using common.test from test/, not script/. +# +.include ../../common.test + +# @@ in module +# ++cat <<EOI >+build/bootstrap.build +using version +EOI ++cat <<EOI >=manifest +: 1 +name: test +version: 1.2.3 +EOI + ++cat <<EOI >=build/root.build +using cxx +EOI + +: testscript +: +ln -s $src_base/driver.cxx ./; +ln -s $src_base/testscript.in ./; +$* <<EOI +exe{driver}: cxx{driver} test{testscript} +test{testscript}: in{testscript} $src_root/file{manifest} #@@ in module +test{testscript}: in.symbol = '@' +EOI diff --git a/tests/test/script/generated/testscript.in b/tests/test/script/generated/testscript.in new file mode 100644 index 0000000..b030b39 --- /dev/null +++ b/tests/test/script/generated/testscript.in @@ -0,0 +1,5 @@ +# file : tests/test/script/generated/testscript.in +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +$* >'@version@' diff --git a/tests/test/script/integration/buildfile b/tests/test/script/integration/buildfile new file mode 100644 index 0000000..1cc1e30 --- /dev/null +++ b/tests/test/script/integration/buildfile @@ -0,0 +1,8 @@ +# file : tests/test/script/integration/buildfile +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Test integration of testscript into build system. +# + +./: test{testscript} $b diff --git a/tests/test/script/integration/testscript b/tests/test/script/integration/testscript new file mode 100644 index 0000000..7074e36 --- /dev/null +++ b/tests/test/script/integration/testscript @@ -0,0 +1,86 @@ +# file : tests/test/script/integration/testscript +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Note: using common.test from test/, not script/. +# +.include ../../common.test + +: script-files +: +{ + +touch testscript foo.test bar.test + + : testscript-and-other + : + $* <<EOI 2>>/EOE != 0 + ./: test{../testscript ../foo} + EOI + error: both 'testscript' and other names specified for dir{./} + EOE + + : other-and-testscript + : + $* <<EOI 2>>/EOE != 0 + ./: test{../foo ../testscript} + EOI + error: both 'testscript' and other names specified for dir{./} + EOE + + : others + : + $* <<EOI + ./: test{../foo ../bar} + EOI +} + +: wd-is-file +: +: Note that here we can not use portable path modifier as not all slashes are +: path separators. +: +touch foo.test; +touch test; +$* <<EOI 2>>~%EOE% != 0 +./: test{foo} +EOI +%error: working directory test[/\\] is a file/symlink% +EOE + +: wd-exists-before +: +touch foo.test; +mkdir test &!test/; +$* <<EOI 2>>/EOE +./: test{foo} +EOI +warning: working directory test/ exists at the beginning of the test +EOE + +: wd-not-empty-before +: +touch foo.test; +mkdir test &!test/; +touch test/dummy &!test/dummy; +$* <<EOI 2>>/EOE +./: test{foo} +EOI +warning: working directory test/ exists and is not empty at the beginning of the test +EOE + +: wd-not-empty-after +: +: The idea here is to run a nested testscript that creates (but does not +: clean up) a file in our working directory. Note that an implicit cleanup +: cancelation is not required as the file is out of the test root directory +: scope. Also note that we still have to remove everything after detecting the +: failure. +: +cat <<EOI >=foo.test; +touch ../../dummy +EOI +$* <<EOI 2>>/EOE &test/*** != 0 +./: test{foo} +EOI +error: working directory test/ is not empty at the end of the test +EOE |