summaryrefslogtreecommitdiffstats
path: root/tests/safe.test
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2012-05-28 13:17:59 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2012-05-28 13:17:59 (GMT)
commitd2671297206026b44157d1a47ba3720c8159d508 (patch)
treee5911d1d60c84659ed8bad2d8eb634050e556e0c /tests/safe.test
parent27312fa939f40f22a19c293959bfdced6ba15730 (diff)
downloadtcl-d2671297206026b44157d1a47ba3720c8159d508.zip
tcl-d2671297206026b44157d1a47ba3720c8159d508.tar.gz
tcl-d2671297206026b44157d1a47ba3720c8159d508.tar.bz2
[Bug 3529949]: Defang 'file dirname ~' etc in safe interps
Diffstat (limited to 'tests/safe.test')
-rw-r--r--tests/safe.test44
1 files changed, 22 insertions, 22 deletions
diff --git a/tests/safe.test b/tests/safe.test
index ae78da9..f270248 100644
--- a/tests/safe.test
+++ b/tests/safe.test
@@ -27,7 +27,7 @@ set ::auto_path [info library]
# Force actual loading of the safe package because we use un exported (and
# thus un-autoindexed) APIs in this test result arguments:
catch {safe::interpConfigure}
-
+
# testing that nested and statics do what is advertised (we use a static
# package - Tcltest - but it might be absent if we're in standard tclsh)
@@ -700,50 +700,50 @@ test safe-15.1 {safe file ensemble does not surprise code} -setup {
} -result {1 {a b c} 1 {a b c} 1 {invalid command name "file"} 1 0 {a b c} 1 {not allowed to invoke subcommand isdirectory of file}}
### ~ should have no special meaning in paths in safe interpreters
-test safe-16.1 {Bug 2913625: defang ~ in paths} -setup {
+test safe-16.1 {Bug 3529949: defang ~ in paths} -setup {
set savedHOME $env(HOME)
set env(HOME) /foo/bar
set i [safe::interpCreate]
-} -constraints knownBug -body {
+} -body {
$i eval {
set d [format %c 126]
- list [file dirname $d] [file tail $d] \
- [file join [file dirname $d] [file tail $d]]
+ list [file join [file dirname $d] [file tail $d]]
}
} -cleanup {
safe::interpDelete $i
set env(HOME) $savedHOME
-} -result {~}
-test safe-16.2 {Bug 2913625: defang ~user in paths} -setup {
+} -result {./~}
+test safe-16.2 {Bug 3529949: defang ~user in paths} -setup {
set i [safe::interpCreate]
set user $tcl_platform(user)
-} -constraints knownBug -body {
+} -body {
string map [list $user USER] [$i eval \
"file join \[file dirname ~$user\] \[file tail ~$user\]"]
} -cleanup {
safe::interpDelete $i
-} -result {~USER}
-test safe-16.3 {Bug 2913625: defang ~ in globs} -setup {
+} -result {./~USER}
+test safe-16.3 {Bug 3529949: defang ~ in globs} -setup {
+ set syntheticHOME [makeDirectory foo]
+ makeFile {} bar $syntheticHOME
set savedHOME $env(HOME)
- set env(HOME) /
+ set env(HOME) $syntheticHOME
set i [safe::interpCreate]
-} -constraints knownBug -body {
- $i expose glob realglob
- $i eval {realglob -nocomplain [join {~ / *} ""]}
+} -body {
+ ::safe::interpAddToAccessPath $i $syntheticHOME
+ $i eval {glob -nocomplain ~/*}
} -cleanup {
safe::interpDelete $i
set env(HOME) $savedHOME
-} -result {~}
-test safe-16.4 {Bug 2913625: defang ~user in globs} -setup {
+ removeDirectory $syntheticHOME
+} -result {}
+test safe-16.4 {Bug 3529949: defang ~user in globs} -setup {
set i [safe::interpCreate]
- set user $tcl_platform(user)
-} -constraints knownBug -body {
- $i expose glob realglob
- string map [list $user USER] [$i eval [list\
- realglob -directory ~$user *]]
+} -body {
+ ::safe::interpAddToAccessPath $i $~$tcl_platform(user)
+ $i eval [list glob -nocomplain ~$tcl_platform(user)/*]
} -cleanup {
safe::interpDelete $i
-} -result {~USER}
+} -result {}
set ::auto_path $saveAutoPath
# cleanup