diff options
Diffstat (limited to 'tests/test/script')
-rw-r--r-- | tests/test/script/runner/driver.cxx | 4 | ||||
-rw-r--r-- | tests/test/script/runner/export.testscript | 133 |
2 files changed, 135 insertions, 2 deletions
diff --git a/tests/test/script/runner/driver.cxx b/tests/test/script/runner/driver.cxx index 935541d..f081714 100644 --- a/tests/test/script/runner/driver.cxx +++ b/tests/test/script/runner/driver.cxx @@ -66,8 +66,8 @@ main (int argc, char* argv[]) // if required. // // -v <name> - // If the specified variable is set the print its value to stdout and the - // string '<none>' otherwise. + // If the specified variable is set then print its value to stdout and + // the string '<none>' otherwise. // // -l <sec> // Sleep the specified number of seconds. diff --git a/tests/test/script/runner/export.testscript b/tests/test/script/runner/export.testscript new file mode 100644 index 0000000..f965005 --- /dev/null +++ b/tests/test/script/runner/export.testscript @@ -0,0 +1,133 @@ +# file : tests/test/script/runner/export.testscript +# license : MIT; see accompanying LICENSE file + +.include ../common.testscript + +: group +: +{ + : add + : + $c <<EOI && $b + { + +export foo=bar + + $* -v foo >'bar' + } + EOI + + : change + : + $c <<EOI && $b + { + +export foo=bar + +export foo=baz + + $* -v foo >'baz' + } + EOI + + : remove + : + $c <<EOI && $b + { + +export foo=bar + +export --unset foo + + $* -v foo >'<none>' + } + EOI + + : clear + : + { + : added + : + $c <<EOI && $b + { + +export foo=bar + +export --clear foo + + $* -v foo >'<none>' + } + EOI + + : removed + : + $c <<EOI && $b + { + +export foo=bar + +export --unset foo + +export --clear foo + + $* -v foo >'<none>' + } + EOI + + : non-existent + : + $c <<EOI && $b + { + +export --clear foo + + $* -v foo >'<none>' + } + EOI + } + + : override + : + $c <<EOI && $b + +export foo=bar + + { + +export --unset foo + + export foo=baz; + $* -v foo >'baz' + + -$* -v foo >'<none>' + } + + -$* -v foo >'bar' + EOI +} + +: test +: +{ + : override + : + $c <<EOI && $b + { + export foo=bar; + env foo=baz -- $* -v foo >'baz'; + $* -v foo >'bar' + } + EOI +} + +: invalid +: +{ + : set + : + $c <'export foo' && $b 2>>~%EOE% != 0 + testscript:1:1: error: export: expected variable assignment instead of 'foo' + %.+ + EOE + + : unset + : + $c <'export --unset foo=abc' && $b 2>>~%EOE% != 0 + testscript:1:1: error: export: invalid value 'foo=abc' for option -u|--unset: contains '=' + %.+ + EOE + + : clear + : + $c <'export --clear foo=abc' && $b 2>>~%EOE% != 0 + testscript:1:1: error: export: invalid value 'foo=abc' for option -c|--clear: contains '=' + %.+ + EOE +} |