diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2018-12-25 19:55:50 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2018-12-25 19:55:50 (GMT) |
commit | ff51550ee89b473c63df78de6b2a413f21105687 (patch) | |
tree | bcdca927ed2a7b05c647b9a6bfdfd4a7ca5c730e /tcl8.6/tests/env.test | |
parent | 01cbf5b15ea760408c24288ccb5cf8e0af9aa299 (diff) | |
download | blt-ff51550ee89b473c63df78de6b2a413f21105687.zip blt-ff51550ee89b473c63df78de6b2a413f21105687.tar.gz blt-ff51550ee89b473c63df78de6b2a413f21105687.tar.bz2 |
update tcl/tk
Diffstat (limited to 'tcl8.6/tests/env.test')
-rw-r--r-- | tcl8.6/tests/env.test | 414 |
1 files changed, 0 insertions, 414 deletions
diff --git a/tcl8.6/tests/env.test b/tcl8.6/tests/env.test deleted file mode 100644 index e6ce44d..0000000 --- a/tcl8.6/tests/env.test +++ /dev/null @@ -1,414 +0,0 @@ -# Commands covered: none (tests environment variable implementation) -# -# This file contains a collection of tests for one or more of the Tcl built-in -# commands. Sourcing this file into Tcl runs the tests and generates output -# for errors. No output means no errors were found. -# -# Copyright (c) 1991-1993 The Regents of the University of California. -# Copyright (c) 1994 Sun Microsystems, Inc. -# Copyright (c) 1998-1999 by Scriptics Corporation. -# -# See the file "license.terms" for information on usage and redistribution of -# this file, and for a DISCLAIMER OF ALL WARRANTIES. - -if {[lsearch [namespace children] ::tcltest] == -1} { - package require tcltest 2 - namespace import -force ::tcltest::* -} - -package require tcltests - -# [exec] is required here to see the actual environment received by child -# processes. -proc getenv {} { - global printenvScript - catch {exec [interpreter] $printenvScript} out - if {$out eq "child process exited abnormally"} { - set out {} - } - return $out -} - - -proc envrestore {} { - # Restore the environment variables at the end of the test. - global env - variable env2 - - foreach name [array names env] { - unset env($name) - } - array set env $env2 - return -} - - -proc envprep {} { - # Save the current environment variables at the start of the test. - global env - variable keep - variable env2 - - set env2 [array get env] - foreach name [array names env] { - # Keep some environment variables that support operation of the tcltest - # package. - if {[string toupper $name] ni [string toupper $keep]} { - unset env($name) - } - } - return -} - - -proc encodingrestore {} { - variable sysenc - encoding system $sysenc - return -} - - -proc encodingswitch encoding { - variable sysenc - # Need to run [getenv] in known encoding, so save the current one here... - set sysenc [encoding system] - encoding system $encoding - return -} - - -proc setup1 {} { - global env - envprep - encodingswitch iso8859-1 -} - -proc setup2 {} { - global env - setup1 - set env(NAME1) {test string} - set env(NAME2) {new value} - set env(XYZZY) {garbage} -} - - -proc cleanup1 {} { - encodingrestore - envrestore -} - -variable keep { - TCL_LIBRARY PATH LD_LIBRARY_PATH LIBPATH PURE_PROG_NAME DISPLAY - 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 CommonProgramW6432 ProgramW6432 -} - -variable printenvScript [makeFile [string map [list @keep@ [list $keep]] { - encoding system iso8859-1 - proc lrem {listname name} { - upvar $listname list - set i [lsearch -nocase $list $name] - if {$i >= 0} { - set list [lreplace $list $i $i] - } - return $list - } - proc mangle s { - regsub -all {\[|\\|\]} $s {\\&} s - regsub -all "\[\u0000-\u001f\u007f-\uffff\]" $s {[manglechar {&}]} s - return [subst -novariables $s] - } - proc manglechar c { - return [format {\u%04x} [scan $c %c]] - } - - set names [lsort [array names env]] - if {$tcl_platform(platform) eq "windows"} { - lrem names HOME - lrem names COMSPEC - lrem names ComSpec - lrem names "" - } - foreach name @keep@ { - lrem names $name - } - foreach p $names { - puts [mangle $p]=[mangle $env($p)] - } - exit -}] printenv] - - -test env-1.1 {propagation of env values to child interpreters} -setup { - catch {interp delete child} - catch {unset env(test)} -} -body { - interp create child - set env(test) garbage - child eval {set env(test)} -} -cleanup { - interp delete child - unset env(test) -} -result {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 { - 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 { - 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 { - interp delete child - catch {unset env(test)} -} -result 1 - - -test env-2.1 { - adding environment variables -} -constraints exec -setup setup1 -body { - getenv -} -cleanup cleanup1 -result {} - - -test env-2.2 { - adding environment variables -} -constraints exec -setup setup1 -body { - set env(NAME1) "test string" - getenv -} -cleanup cleanup1 -result {NAME1=test string} - - -test env-2.3 {adding environment variables} -constraints exec -setup { - setup1 - set env(NAME1) "test string" -} -body { - set env(NAME2) "more" - getenv -} -cleanup cleanup1 -result {NAME1=test string -NAME2=more} - - -test env-2.4 { - adding environment variables -} -constraints exec -setup { - setup1 - set env(NAME1) "test string" - set env(NAME2) "more" -} -body { - set env(XYZZY) "garbage" - getenv -} -cleanup { cleanup1 -} -result {NAME1=test string -NAME2=more -XYZZY=garbage} - - -test env-3.1 { - changing environment variables -} -constraints exec -setup setup2 -body { - set result [getenv] - unset env(NAME2) - set result -} -cleanup { - cleanup1 -} -result {NAME1=test string -NAME2=new value -XYZZY=garbage} - - -test env-4.1 { - unsetting environment variables -} -constraints exec -setup setup2 -body { - unset -nocomplain env(NAME2) - getenv -} -cleanup cleanup1 -result {NAME1=test string -XYZZY=garbage} - -# env-4.2 is deleted - -test env-4.3 { - setting international environment variables -} -constraints exec -setup setup1 -body { - set env(\ua7) \ub6 - getenv -} -cleanup cleanup1 -result {\u00a7=\u00b6} - - -test env-4.4 { - changing international environment variables -} -constraints exec -setup setup1 -body { - set env(\ua7) \ua7 - getenv -} -cleanup cleanup1 -result {\u00a7=\u00a7} - - -test env-4.5 { - unsetting international environment variables -} -constraints exec -setup { - setup1 - set env(\ua7) \ua7 -} -body { - set env(\ub6) \ua7 - unset env(\ua7) - getenv -} -cleanup cleanup1 -result {\u00b6=\u00a7} - -test env-5.0 { - corner cases - set a value, it should exist -} -setup setup1 -body { - set env(temp) a - set env(temp) -} -cleanup cleanup1 -result a - - -test env-5.1 { - corner cases - remove one elem at a time -} -setup setup1 -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 cleanup1 -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 { - interp delete i -} -result {0} - - -test env-5.3 {corner cases: unset the env in master should unset child} -setup { - setup1 - interp create i -} -body { - # Variables deleted in a master interp should be deleted in child interp - # too. - 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 { - cleanup1 - interp delete i -} -result {a 1} - - -test env-5.4 {corner cases - unset the env array} -setup { - setup1 - interp create i -} -body { - # The info exists command should be in synch with the env array. - # Know Bug: 1737 - 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 { - cleanup1 - interp delete i -} -result {1 a 1} - - -test env-5.5 { - corner cases - cannot have null entries on Windows -} -constraints win -body { - set env() a - catch {set env()} -} -cleanup cleanup1 -result 1 - -test env-6.1 {corner cases - add lots of env variables} -setup setup1 -body { - set size [array size env] - for {set i 0} {$i < 100} {incr i} { - set env(BOGUS$i) $i - } - expr {[array size env] - $size} -} -cleanup cleanup1 -result 100 - -test env-7.1 {[219226]: whole env array should not be unset by read} -body { - set n [array size env] - set s [array startsearch env] - while {[array anymore env $s]} { - array nextelement env $s - incr n -1 - } - array donesearch env $s - return $n -} -result 0 - -test env-7.2 { - [219226]: links to env elements should not be removed by read -} -setup setup1 -body { - apply {{} { - set ::env(test7_2) ok - upvar env(test7_2) elem - set ::env(PATH) - return $elem - }} -} -cleanup cleanup1 -result ok - -test env-7.3 { - [9b4702]: testing existence of env(some_thing) should not destroy trace -} -setup setup1 -body { - apply {{} { - catch {unset ::env(test7_3)} - proc foo args { - set ::env(test7_3) ok - } - trace add variable ::env(not_yet_existent) write foo - info exists ::env(not_yet_existent) - set ::env(not_yet_existent) "Now I'm here"; - return [info exists ::env(test7_3)] - }} -} -cleanup cleanup1 -result 1 - -test env-8.0 { - memory usage - valgrind does not report reachable memory -} -body { - set res [set env(__DUMMY__) {i'm with dummy}] - unset env(__DUMMY__) - return $res -} -result {i'm with dummy} - - - -# cleanup -rename getenv {} -rename envrestore {} -rename envprep {} -rename encodingrestore {} -rename encodingswitch {} - -removeFile $printenvScript -::tcltest::cleanupTests -return - -# Local Variables: -# mode: tcl -# End: |