diff options
Diffstat (limited to 'tests/env.test')
| -rw-r--r-- | tests/env.test | 213 |
1 files changed, 87 insertions, 126 deletions
diff --git a/tests/env.test b/tests/env.test index 9010f52..ee13b7f 100644 --- a/tests/env.test +++ b/tests/env.test @@ -24,42 +24,39 @@ testConstraint exec [llength [info commands exec]] # These tests will run on any platform (and indeed crashed on the Mac). So put # them before you test for the existance of exec. # -test env-1.1 {propagation of env values to child interpreters} -setup { +test env-1.1 {propagation of env values to child interpreters} { catch {interp delete child} catch {unset env(test)} -} -body { interp create child set env(test) garbage - child eval {set env(test)} -} -cleanup { + set return [child eval {set env(test)}] interp delete child unset env(test) -} -result {garbage} + set return +} {garbage} # # This one crashed on Solaris under Tcl8.0, so we only want to make sure it # runs. # -test env-1.2 {lappend to env value} -setup { +test env-1.2 {lappend to env value} { catch {unset env(test)} -} -body { set env(test) aaaaaaaaaaaaaaaa append env(test) bbbbbbbbbbbbbb unset env(test) -} -test env-1.3 {reflection of env by "array names"} -setup { +} {} +test env-1.3 {reflection of env by "array names"} { catch {interp delete child} catch {unset env(test)} -} -body { interp create child child eval {set env(test) garbage} - expr {"test" in [array names env]} -} -cleanup { + set names [array names env] interp delete child + set ix [lsearch $names test] catch {unset env(test)} -} -result {1} + expr {$ix >= 0} +} {1} set printenvScript [makeFile { - encoding system iso8859-1 proc lrem {listname name} { upvar $listname list set i [lsearch -nocase $list $name] @@ -78,7 +75,7 @@ set printenvScript [makeFile { } set names [lsort [array names env]] - if {$tcl_platform(platform) eq "windows"} { + if {$tcl_platform(platform) == "windows"} { lrem names HOME lrem names COMSPEC lrem names ComSpec @@ -89,7 +86,7 @@ set printenvScript [makeFile { SHLIB_PATH SYSTEMDRIVE SYSTEMROOT DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH DYLD_NEW_LOCAL_SHARED_REGIONS DYLD_NO_FIX_PREBINDING __CF_USER_TEXT_ENCODING SECURITYSESSIONID LANG WINDIR TERM - CommonProgramFiles ProgramFiles + CommonProgramFiles ProgramFiles CommonProgramW6432 ProgramW6432 } { lrem names $name } @@ -99,12 +96,12 @@ set printenvScript [makeFile { exit } printenv] -# [exec] is required here to see the actual environment received by child -# processes. +# [exec] is required here to see the actual environment received +# by child processes. proc getenv {} { global printenvScript tcltest catch {exec [interpreter] $printenvScript} out - if {$out eq "child process exited abnormally"} { + if {$out == "child process exited abnormally"} { set out {} } return $out @@ -121,163 +118,127 @@ foreach name [array names env] { SYSTEMDRIVE SYSTEMROOT DYLD_LIBRARY_PATH DYLD_FRAMEWORK_PATH DYLD_NEW_LOCAL_SHARED_REGIONS DYLD_NO_FIX_PREBINDING SECURITYSESSIONID LANG WINDIR TERM - CommonProgramFiles ProgramFiles + CONNOMPROGRAMFILES PROGRAMFILES COMMONPROGRAMW6432 PROGRAMW6432 }} { unset env($name) } } -# Need to run 'getenv' in known encoding, so save the current one here... -set sysenc [encoding system] - -test env-2.1 {adding environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { +test env-2.1 {adding environment variables} {exec} { getenv -} -cleanup { - encoding system $sysenc -} -result {} -test env-2.2 {adding environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { - set env(NAME1) "test string" +} {} + +set env(NAME1) "test string" +test env-2.2 {adding environment variables} {exec} { getenv -} -cleanup { - encoding system $sysenc -} -result {NAME1=test string} -test env-2.3 {adding environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { - set env(NAME2) "more" +} {NAME1=test string} + +set env(NAME2) "more" +test env-2.3 {adding environment variables} {exec} { getenv -} -cleanup { - encoding system $sysenc -} -result {NAME1=test string +} {NAME1=test string NAME2=more} -test env-2.4 {adding environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { - set env(XYZZY) "garbage" + +set env(XYZZY) "garbage" +test env-2.4 {adding environment variables} {exec} { getenv -} -cleanup { - encoding system $sysenc -} -result {NAME1=test string +} {NAME1=test string NAME2=more XYZZY=garbage} set env(NAME2) "new value" -test env-3.1 {changing environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { +test env-3.1 {changing environment variables} {exec} { set result [getenv] unset env(NAME2) set result -} -cleanup { - encoding system $sysenc -} -result {NAME1=test string +} {NAME1=test string NAME2=new value XYZZY=garbage} -test env-4.1 {unsetting environment variables: default} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { - getenv -} -cleanup { - encoding system $sysenc -} -result {NAME1=test string -XYZZY=garbage} -test env-4.2 {unsetting environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { +test env-4.1 {unsetting environment variables} {exec} { + set result [getenv] unset env(NAME1) - getenv -} -cleanup { + set result +} {NAME1=test string +XYZZY=garbage} + +test env-4.2 {unsetting environment variables} {exec} { + set result [getenv] unset env(XYZZY) - encoding system $sysenc -} -result {XYZZY=garbage} -test env-4.3 {setting international environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { + set result +} {XYZZY=garbage} + +test env-4.3 {setting international environment variables} {exec} { set env(\ua7) \ub6 getenv -} -cleanup { - encoding system $sysenc -} -result {\u00a7=\u00b6} -test env-4.4 {changing international environment variables} -setup { - encoding system iso8859-1 -} -constraints {exec} -body { +} {\u00a7=\u00b6} +test env-4.4 {changing international environment variables} {exec} { set env(\ua7) \ua7 getenv -} -cleanup { - encoding system $sysenc -} -result {\u00a7=\u00a7} -test env-4.5 {unsetting international environment variables} -setup { - encoding system iso8859-1 -} -body { +} {\u00a7=\u00a7} +test env-4.5 {unsetting international environment variables} {exec} { set env(\ub6) \ua7 unset env(\ua7) - getenv -} -constraints {exec} -cleanup { - encoding system $sysenc + set result [getenv] unset env(\ub6) -} -result {\u00b6=\u00a7} + set result +} {\u00b6=\u00a7} -test env-5.0 {corner cases - set a value, it should exist} -body { +test env-5.0 {corner cases - set a value, it should exist} {} { set env(temp) a - set env(temp) -} -cleanup { + set result [set env(temp)] unset env(temp) -} -result {a} -test env-5.1 {corner cases - remove one elem at a time} -setup { + set result +} {a} +test env-5.1 {corner cases - remove one elem at a time} {} { + # When no environment variables exist, the env var will + # contain no entries. The "array names" call synchs up + # the C-level environ array with the Tcl level env array. + # Make sure an empty Tcl array is created. + set x [array get env] -} -body { - # When no environment variables exist, the env var will contain no - # entries. The "array names" call synchs up the C-level environ array with - # the Tcl level env array. Make sure an empty Tcl array is created. foreach e [array names env] { unset env($e) } - array size env -} -cleanup { + set result [catch {array names env}] array set env $x -} -result {0} -test env-5.2 {corner cases - unset the env array} -setup { - interp create i -} -body { - # Unsetting a variable in an interp detaches the C-level traces from the - # Tcl "env" variable. - i eval { - unset env - set env(THIS_SHOULDNT_EXIST) a - } - info exists env(THIS_SHOULDNT_EXIST) -} -cleanup { + set result +} {0} +test env-5.2 {corner cases - unset the env array} {} { + # Unsetting a variable in an interp detaches the C-level + # traces from the Tcl "env" variable. + + interp create i + i eval { unset env } + i eval { set env(THIS_SHOULDNT_EXIST) a} + set result [info exists env(THIS_SHOULDNT_EXIST)] interp delete i -} -result {0} -test env-5.3 {corner cases: unset the env in master should unset child} -setup { - interp create i -} -body { - # Variables deleted in a master interp should be deleted in child interp - # too. + set result +} {0} +test env-5.3 {corner cases - unset the env in master should unset child} {} { + # Variables deleted in a master interp should be deleted in + # child interp too. + + interp create i i eval { set env(THIS_SHOULD_EXIST) a} set result [set env(THIS_SHOULD_EXIST)] unset env(THIS_SHOULD_EXIST) lappend result [i eval {catch {set env(THIS_SHOULD_EXIST)}}] -} -cleanup { interp delete i -} -result {a 1} -test env-5.4 {corner cases - unset the env array} -setup { - interp create i -} -body { + set result +} {a 1} +test env-5.4 {corner cases - unset the env array} {} { # The info exists command should be in synch with the env array. # Know Bug: 1737 + + interp create i i eval { set env(THIS_SHOULD_EXIST) a} set result [info exists env(THIS_SHOULD_EXIST)] lappend result [set env(THIS_SHOULD_EXIST)] lappend result [info exists env(THIS_SHOULD_EXIST)] -} -cleanup { interp delete i -} -result {1 a 1} + set result +} {1 a 1} test env-5.5 {corner cases - cannot have null entries on Windows} {win} { set env() a catch {set env()} |
