aboutsummaryrefslogtreecommitdiff
path: root/tests/exec2.test
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-09-28 07:33:19 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:54 +1000
commit73b6640e994c4c954d54894a16acd5a151899c3a (patch)
tree073587ee55b51b159ad5c3e7775c30d2a7716bf3 /tests/exec2.test
parentff0f40d8ec4af2399e6265d731c8070987e24270 (diff)
downloadjimtcl-73b6640e994c4c954d54894a16acd5a151899c3a.zip
jimtcl-73b6640e994c4c954d54894a16acd5a151899c3a.tar.gz
jimtcl-73b6640e994c4c954d54894a16acd5a151899c3a.tar.bz2
Use $::env to build environment for exec
Also, switch to using 'sh -c' for the vfork() implementation because it then allows command line redirection, pipes and setting the environment. Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'tests/exec2.test')
-rw-r--r--tests/exec2.test39
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/exec2.test b/tests/exec2.test
new file mode 100644
index 0000000..e3d8a25
--- /dev/null
+++ b/tests/exec2.test
@@ -0,0 +1,39 @@
+# These tests are design especially for the vfork() implementation
+# of exec where sh -c must be used and thus we must take extra care
+# in quoting arguments to exec.
+
+source testing.tcl
+
+set d \"
+set s '
+set b \\
+
+test exec2-1.1 "Quoting - Result" {
+ exec echo ${d}double quoted${d} ${s}single quoted${s} ${b}backslash quoted${b}
+} "\"double\ quoted\"\ 'single quoted'\ \\backslash\ quoted\\"
+
+test exec2-1.2 "Quoting - Word Grouping" {
+ string trim [exec echo ${d}double quoted${d} ${s}single quoted${s} ${b}backslash quoted${b} | wc -w]
+} {6}
+
+test exec2-2.1 "Add to exec environment" {
+ set env(testenv) "the value"
+ exec printenv | sed -n -e /^testenv=/p
+} {testenv=the value}
+
+test exec2-2.2 "Remove from exec environment" {
+ set env(testenv2) "new value"
+ unset env(testenv)
+ exec printenv | sed -n -e /^testenv=/p
+} {}
+
+
+test exec2-2.3 "Remove all exec environment" {
+ array unset env *
+ exec printenv | sed -n -e /^testenv2=/p
+} {}
+
+test exec2-2.4 "Remove all env var" {
+ unset -nocomplain env
+ exec printenv | sed -n -e /^testenv2=/p
+} {}