diff options
Diffstat (limited to 'tests/winFCmd.test')
-rw-r--r-- | tests/winFCmd.test | 594 |
1 files changed, 354 insertions, 240 deletions
diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 34a9b16..ef1c4e7 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -15,14 +15,8 @@ if {[lsearch [namespace children] ::tcltest] == -1} { namespace import -force ::tcltest::* } -::tcltest::loadTestedCommands -catch [list package require -exact Tcltest [info patchlevel]] - # Initialise the test constraints -testConstraint winVista 0 -testConstraint win2000orXP 0 -testConstraint winOlderThan2000 0 testConstraint testvolumetype [llength [info commands testvolumetype]] testConstraint testfile [llength [info commands testfile]] testConstraint testchmod [llength [info commands testchmod]] @@ -51,42 +45,20 @@ proc cleanup {args} { set x [glob -directory $p tf* td*] } if {$x != ""} { - catch {eval file delete -force -- $x} - } - } -} - -if {[testConstraint winOnly]} { - set major [string index $tcl_platform(osVersion) 0] - if {[testConstraint nt] && $major > 4} { - if {$major > 5} { - testConstraint winVista 1 - } elseif {$major == 5} { - testConstraint win2000orXP 1 + catch {file delete -force -- {*}$x} } - } else { - testConstraint winOlderThan2000 1 } } # find a CD-ROM so we can test read-only filesystems. -set cdrom {} -if { [info commands ::testvolumetype] ne {} } { - foreach p {d e f g h i j k l m n o p q r s t u v w x y z} { - if { ! [catch { testvolumetype ${p}: } result] && $result eq {CDFS} } { - set cdrom ${p}: - } - } -} - proc findfile {dir} { - foreach p [glob $dir/*] { + foreach p [glob -directory $dir *] { if {[file type $p] == "file"} { return $p } } - foreach p [glob $dir/*] { + foreach p [glob -directory $dir *] { if {[file type $p] == "directory"} { set f [findfile $p] if {$f != ""} { @@ -97,26 +69,30 @@ proc findfile {dir} { return "" } -if {$cdrom != ""} { - set ::tcltest::testConstraints(cdrom) 1 - set cdfile [findfile $cdrom] +if {[testConstraint testvolumetype]} { + foreach p {d e f g h i j k l m n o p q r s t u v w x y z} { + if {![catch {testvolumetype ${p}:} result] && $result eq "CDFS"} { + set cdrom ${p}: + set cdfile [findfile $cdrom] + testConstraint cdrom 1 + break + } + } } +# NB: filename is chosen to be short but unlikely to clash with other apps if {[file exists c:/] && [file exists d:/]} { - catch {file delete d:/tf1} - if {[catch {close [open d:/tf1 w]}] == 0} { - file delete d:/tf1 - set ::tcltest::testConstraints(exdev) 1 + catch {file delete d:/TclTmpF.1} + if {[catch {close [open d:/TclTmpF.1 w]}] == 0} { + file delete d:/TclTmpF.1 + testConstraint exdev 1 } } file delete -force -- td1 -set foo [catch {open td1 w} testfile] -if {$foo} { - set ::tcltest::testConstraints(longFileNames) 0 -} else { +if {![catch {open td1 w} testfile]} { close $testfile - set ::tcltest::testConstraints(longFileNames) 1 + testConstraint longFileNames 1 file delete -force -- td1 } @@ -136,64 +112,64 @@ append longname $longname # it can be difficult to actually forward "insane" arguments to the # low-level posix emulation layer. -test winFCmd-1.1 {TclpRenameFile: errno: EACCES} {pcOnly cdrom} { +test winFCmd-1.1 {TclpRenameFile: errno: EACCES} {win cdrom testfile} { list [catch {testfile mv $cdfile $cdrom/dummy~~.fil} msg] $msg } {1 EACCES} -test winFCmd-1.2 {TclpRenameFile: errno: EEXIST} {pcOnly} { +test winFCmd-1.2 {TclpRenameFile: errno: EEXIST} {win testfile} { cleanup file mkdir td1/td2/td3 file mkdir td2 list [catch {testfile mv td2 td1/td2} msg] $msg } {1 EEXIST} -test winFCmd-1.3 {TclpRenameFile: errno: EINVAL} {pcOnly} { +test winFCmd-1.3 {TclpRenameFile: errno: EINVAL} {win testfile} { cleanup list [catch {testfile mv / td1} msg] $msg } {1 EINVAL} -test winFCmd-1.4 {TclpRenameFile: errno: EINVAL} {pcOnly} { +test winFCmd-1.4 {TclpRenameFile: errno: EINVAL} {win testfile} { cleanup file mkdir td1 list [catch {testfile mv td1 td1/td2} msg] $msg } {1 EINVAL} -test winFCmd-1.5 {TclpRenameFile: errno: EISDIR} {pcOnly} { +test winFCmd-1.5 {TclpRenameFile: errno: EISDIR} {win testfile} { cleanup file mkdir td1 createfile tf1 list [catch {testfile mv tf1 td1} msg] $msg } {1 EISDIR} -test winFCmd-1.6 {TclpRenameFile: errno: ENOENT} {pcOnly} { +test winFCmd-1.6 {TclpRenameFile: errno: ENOENT} {win testfile} { cleanup list [catch {testfile mv tf1 tf2} msg] $msg } {1 ENOENT} -test winFCmd-1.7 {TclpRenameFile: errno: ENOENT} {pcOnly} { +test winFCmd-1.7 {TclpRenameFile: errno: ENOENT} {win testfile} { cleanup list [catch {testfile mv "" tf2} msg] $msg } {1 ENOENT} -test winFCmd-1.8 {TclpRenameFile: errno: ENOENT} {pcOnly} { +test winFCmd-1.8 {TclpRenameFile: errno: ENOENT} {win testfile} { cleanup createfile tf1 list [catch {testfile mv tf1 ""} msg] $msg } {1 ENOENT} -test winFCmd-1.9 {TclpRenameFile: errno: ENOTDIR} {pcOnly} { +test winFCmd-1.9 {TclpRenameFile: errno: ENOTDIR} {win testfile} { cleanup file mkdir td1 createfile tf1 list [catch {testfile mv td1 tf1} msg] $msg } {1 ENOTDIR} -test winFCmd-1.10 {TclpRenameFile: errno: EXDEV} {pcOnly exdev} { +test winFCmd-1.10 {TclpRenameFile: errno: EXDEV} {win exdev testfile} { file delete -force d:/tf1 file mkdir c:/tf1 set msg [list [catch {testfile mv c:/tf1 d:/tf1} msg] $msg] file delete -force c:/tf1 set msg } {1 EXDEV} -test winFCmd-1.11 {TclpRenameFile: errno: EACCES} {pcOnly} { +test winFCmd-1.11 {TclpRenameFile: errno: EACCES} {win testfile} { cleanup set fd [open tf1 w] set msg [list [catch {testfile mv tf1 tf2} msg] $msg] close $fd set msg } {1 EACCES} -test winFCmd-1.12 {TclpRenameFile: errno: EACCES} {pcOnly} { +test winFCmd-1.12 {TclpRenameFile: errno: EACCES} {win testfile} { cleanup createfile tf1 set fd [open tf2 w] @@ -201,113 +177,105 @@ test winFCmd-1.12 {TclpRenameFile: errno: EACCES} {pcOnly} { close $fd set msg } {1 EACCES} -test winFCmd-1.13 {TclpRenameFile: errno: EACCES} {pcOnly win2000orXP} { - cleanup - list [catch {testfile mv nul tf1} msg] $msg -} {1 EINVAL} -test winFCmd-1.13.1 {TclpRenameFile: errno: EACCES} {pcOnly winOlderThan2000} { +test winFCmd-1.13 {TclpRenameFile: errno: EINVAL|EACCES|ENOENT} -constraints {win testfile} -body { cleanup list [catch {testfile mv nul tf1} msg] $msg -} {1 EACCES} -test winFCmd-1.14 {TclpRenameFile: errno: EACCES} {pcOnly 95} { +} -match regexp -result {1 (EINVAL|EACCES|ENOENT)} +test winFCmd-1.14 {TclpRenameFile: errno: EACCES} {win 95 testfile} { cleanup createfile tf1 list [catch {testfile mv tf1 nul} msg] $msg } {1 EACCES} -test winFCmd-1.15 {TclpRenameFile: errno: EEXIST} {pcOnly nt} { +test winFCmd-1.15 {TclpRenameFile: errno: EEXIST} {win nt testfile} { cleanup createfile tf1 list [catch {testfile mv tf1 nul} msg] $msg } {1 EEXIST} -test winFCmd-1.16 {TclpRenameFile: MoveFile() != FALSE} {pcOnly} { +test winFCmd-1.16 {TclpRenameFile: MoveFile() != FALSE} {win testfile} { cleanup createfile tf1 tf1 testfile mv tf1 tf2 list [file exists tf1] [contents tf2] } {0 tf1} -test winFCmd-1.17 {TclpRenameFile: MoveFile() == FALSE} {pcOnly} { +test winFCmd-1.17 {TclpRenameFile: MoveFile() == FALSE} {win testfile} { cleanup list [catch {testfile mv tf1 tf2} msg] $msg } {1 ENOENT} -test winFCmd-1.18 {TclpRenameFile: srcAttr == -1} {pcOnly} { +test winFCmd-1.18 {TclpRenameFile: srcAttr == -1} {win testfile} { cleanup list [catch {testfile mv tf1 tf2} msg] $msg } {1 ENOENT} -test winFCmd-1.19 {TclpRenameFile: errno == EACCES} {pcOnly win2000orXP} { +test winFCmd-1.19 {TclpRenameFile: errno == EINVAL|EACCES|ENOENT} -constraints {win testfile} -body { cleanup list [catch {testfile mv nul tf1} msg] $msg -} {1 EINVAL} -test winFCmd-1.19.1 {TclpRenameFile: errno == EACCES} {pcOnly winOlderThan2000} { - cleanup - list [catch {testfile mv nul tf1} msg] $msg -} {1 EACCES} -test winFCmd-1.20 {TclpRenameFile: src is dir} {pcOnly nt} { +} -match regexp -result {1 (EINVAL|EACCES|ENOENT)} +test winFCmd-1.20 {TclpRenameFile: src is dir} {win nt testfile} { # under 95, this would actually succeed and move the current dir out from # under the current process! cleanup file delete /tf1 list [catch {testfile mv [pwd] /tf1} msg] $msg } {1 EACCES} -test winFCmd-1.21 {TclpRenameFile: long src} {pcOnly} { +test winFCmd-1.21 {TclpRenameFile: long src} {win testfile} { cleanup list [catch {testfile mv $longname tf1} msg] $msg } {1 ENAMETOOLONG} -test winFCmd-1.22 {TclpRenameFile: long dst} {pcOnly} { +test winFCmd-1.22 {TclpRenameFile: long dst} {win testfile} { cleanup createfile tf1 list [catch {testfile mv tf1 $longname} msg] $msg } {1 ENAMETOOLONG} -test winFCmd-1.23 {TclpRenameFile: move dir into self} {pcOnly} { +test winFCmd-1.23 {TclpRenameFile: move dir into self} {win testfile} { cleanup file mkdir td1 list [catch {testfile mv [pwd]/td1 td1/td2} msg] $msg } {1 EINVAL} -test winFCmd-1.24 {TclpRenameFile: move a root dir} {pcOnly} { +test winFCmd-1.24 {TclpRenameFile: move a root dir} {win testfile} { cleanup list [catch {testfile mv / c:/} msg] $msg } {1 EINVAL} -test winFCmd-1.25 {TclpRenameFile: cross file systems} {pcOnly cdrom} { +test winFCmd-1.25 {TclpRenameFile: cross file systems} {win cdrom testfile} { cleanup file mkdir td1 list [catch {testfile mv td1 $cdrom/td1} msg] $msg } {1 EXDEV} -test winFCmd-1.26 {TclpRenameFile: readonly fs} {pcOnly cdrom} { +test winFCmd-1.26 {TclpRenameFile: readonly fs} {win cdrom testfile} { cleanup list [catch {testfile mv $cdfile $cdrom/dummy~~.fil} msg] $msg } {1 EACCES} -test winFCmd-1.27 {TclpRenameFile: open file} {pcOnly} { +test winFCmd-1.27 {TclpRenameFile: open file} {win testfile} { cleanup set fd [open tf1 w] set msg [list [catch {testfile mv tf1 tf2} msg] $msg] close $fd set msg } {1 EACCES} -test winFCmd-1.28 {TclpRenameFile: errno == EEXIST} {pcOnly} { +test winFCmd-1.28 {TclpRenameFile: errno == EEXIST} {win testfile} { cleanup createfile tf1 createfile tf2 testfile mv tf1 tf2 list [file exists tf1] [file exists tf2] } {0 1} -test winFCmd-1.29 {TclpRenameFile: src is dir} {pcOnly} { +test winFCmd-1.29 {TclpRenameFile: src is dir} {win testfile} { cleanup file mkdir td1 createfile tf1 list [catch {testfile mv td1 tf1} msg] $msg } {1 ENOTDIR} -test winFCmd-1.30 {TclpRenameFile: dst is dir} {pcOnly} { +test winFCmd-1.30 {TclpRenameFile: dst is dir} {win testfile} { cleanup file mkdir td1 file mkdir td2/td2 list [catch {testfile mv td1 td2} msg] $msg } {1 EEXIST} -test winFCmd-1.31 {TclpRenameFile: TclpRemoveDirectory fails} {pcOnly} { +test winFCmd-1.31 {TclpRenameFile: TclpRemoveDirectory fails} {win testfile} { cleanup file mkdir td1 file mkdir td2/td2 list [catch {testfile mv td1 td2} msg] $msg } {1 EEXIST} -test winFCmd-1.32 {TclpRenameFile: TclpRemoveDirectory succeeds} {pcOnly} { +test winFCmd-1.32 {TclpRenameFile: TclpRemoveDirectory succeeds} {win testfile} { cleanup file mkdir td1/td2 file mkdir td2 @@ -315,7 +283,7 @@ test winFCmd-1.32 {TclpRenameFile: TclpRemoveDirectory succeeds} {pcOnly} { list [file exists td1] [file exists td2] [file exists td2/td2] } {0 1 1} test winFCmd-1.33 {TclpRenameFile: After removing dst dir, MoveFile fails} \ - {pcOnly exdev} { + {win exdev testfile testchmod} { file mkdir d:/td1 testchmod 000 d:/td1 file mkdir c:/tf1 @@ -325,56 +293,56 @@ test winFCmd-1.33 {TclpRenameFile: After removing dst dir, MoveFile fails} \ file delete -force c:/tf1 set msg } {1 EXDEV 0} -test winFCmd-1.34 {TclpRenameFile: src is dir, dst is not} {pcOnly} { +test winFCmd-1.34 {TclpRenameFile: src is dir, dst is not} {win testfile} { file mkdir td1 createfile tf1 list [catch {testfile mv td1 tf1} msg] $msg } {1 ENOTDIR} -test winFCmd-1.35 {TclpRenameFile: src is not dir, dst is} {pcOnly} { +test winFCmd-1.35 {TclpRenameFile: src is not dir, dst is} {win testfile} { file mkdir td1 createfile tf1 list [catch {testfile mv tf1 td1} msg] $msg } {1 EISDIR} -test winFCmd-1.36 {TclpRenameFile: src and dst not dir} {pcOnly} { +test winFCmd-1.36 {TclpRenameFile: src and dst not dir} {win testfile} { createfile tf1 tf1 createfile tf2 tf2 testfile mv tf1 tf2 contents tf2 } {tf1} -test winFCmd-1.37 {TclpRenameFile: need to restore temp file} {pcOnly} { +test winFCmd-1.37 {TclpRenameFile: need to restore temp file} {win emptyTest} { # Can't figure out how to cause this. # Need a file that can't be copied. } {} -test winFCmd-2.1 {TclpCopyFile: errno: EACCES} {pcOnly cdrom} { +test winFCmd-2.1 {TclpCopyFile: errno: EACCES} {win cdrom testfile} { cleanup list [catch {testfile cp $cdfile $cdrom/dummy~~.fil} msg] $msg } {1 EACCES} -test winFCmd-2.2 {TclpCopyFile: errno: EISDIR} {pcOnly} { +test winFCmd-2.2 {TclpCopyFile: errno: EISDIR} {win testfile} { cleanup file mkdir td1 list [catch {testfile cp td1 tf1} msg] $msg } {1 EISDIR} -test winFCmd-2.3 {TclpCopyFile: errno: EISDIR} {pcOnly} { +test winFCmd-2.3 {TclpCopyFile: errno: EISDIR} {win testfile} { cleanup createfile tf1 file mkdir td1 list [catch {testfile cp tf1 td1} msg] $msg } {1 EISDIR} -test winFCmd-2.4 {TclpCopyFile: errno: ENOENT} {pcOnly} { +test winFCmd-2.4 {TclpCopyFile: errno: ENOENT} {win testfile} { cleanup list [catch {testfile cp tf1 tf2} msg] $msg } {1 ENOENT} -test winFCmd-2.5 {TclpCopyFile: errno: ENOENT} {pcOnly} { +test winFCmd-2.5 {TclpCopyFile: errno: ENOENT} {win testfile} { cleanup list [catch {testfile cp "" tf2} msg] $msg } {1 ENOENT} -test winFCmd-2.6 {TclpCopyFile: errno: ENOENT} {pcOnly} { +test winFCmd-2.6 {TclpCopyFile: errno: ENOENT} {win testfile} { cleanup createfile tf1 list [catch {testfile cp tf1 ""} msg] $msg } {1 ENOENT} -test winFCmd-2.7 {TclpCopyFile: errno: EACCES} {pcOnly 95} { +test winFCmd-2.7 {TclpCopyFile: errno: EACCES} {win 95 testfile} { cleanup createfile tf1 set fd [open tf2 w] @@ -382,61 +350,53 @@ test winFCmd-2.7 {TclpCopyFile: errno: EACCES} {pcOnly 95} { close $fd set msg } {1 EACCES} -test winFCmd-2.8 {TclpCopyFile: errno: EACCES} {pcOnly win2000orXP} { +test winFCmd-2.8 {TclpCopyFile: errno: EINVAL|EACCES|ENOENT} -constraints {win testfile} -body { cleanup list [catch {testfile cp nul tf1} msg] $msg -} {1 EINVAL} -test winFCmd-2.8.1 {TclpCopyFile: errno: EACCES} {pcOnly nt winOlderThan2000} { - cleanup - list [catch {testfile cp nul tf1} msg] $msg -} {1 EACCES} -test winFCmd-2.9 {TclpCopyFile: errno: ENOENT} {pcOnly 95} { - cleanup - list [catch {testfile cp nul tf1} msg] $msg -} {1 ENOENT} -test winFCmd-2.10 {TclpCopyFile: CopyFile succeeds} {pcOnly} { +} -match regexp -result {1 (EINVAL|EACCES|ENOENT)} +test winFCmd-2.10 {TclpCopyFile: CopyFile succeeds} {win testfile} { cleanup createfile tf1 tf1 testfile cp tf1 tf2 list [contents tf1] [contents tf2] } {tf1 tf1} -test winFCmd-2.11 {TclpCopyFile: CopyFile succeeds} {pcOnly} { +test winFCmd-2.11 {TclpCopyFile: CopyFile succeeds} {win testfile} { cleanup createfile tf1 tf1 createfile tf2 tf2 testfile cp tf1 tf2 list [contents tf1] [contents tf2] } {tf1 tf1} -test winFCmd-2.12 {TclpCopyFile: CopyFile succeeds} {pcOnly} { +test winFCmd-2.12 {TclpCopyFile: CopyFile succeeds} {win testfile} { cleanup createfile tf1 tf1 testchmod 000 tf1 testfile cp tf1 tf2 list [contents tf2] [file writable tf2] } {tf1 0} -test winFCmd-2.13 {TclpCopyFile: CopyFile fails} {pcOnly} { +test winFCmd-2.13 {TclpCopyFile: CopyFile fails} {win testfile} { cleanup createfile tf1 file mkdir td1 list [catch {testfile cp tf1 td1} msg] $msg } {1 EISDIR} -test winFCmd-2.14 {TclpCopyFile: errno == EACCES} {pcOnly} { +test winFCmd-2.14 {TclpCopyFile: errno == EACCES} {win testfile} { cleanup file mkdir td1 list [catch {testfile cp td1 tf1} msg] $msg } {1 EISDIR} -test winFCmd-2.15 {TclpCopyFile: src is directory} {pcOnly} { +test winFCmd-2.15 {TclpCopyFile: src is directory} {win testfile} { cleanup file mkdir td1 list [catch {testfile cp td1 tf1} msg] $msg } {1 EISDIR} -test winFCmd-2.16 {TclpCopyFile: dst is directory} {pcOnly} { +test winFCmd-2.16 {TclpCopyFile: dst is directory} {win testfile} { cleanup createfile tf1 file mkdir td1 list [catch {testfile cp tf1 td1} msg] $msg } {1 EISDIR} -test winFCmd-2.17 {TclpCopyFile: dst is readonly} {pcOnly} { +test winFCmd-2.17 {TclpCopyFile: dst is readonly} {win testfile testchmod} { cleanup createfile tf1 tf1 createfile tf2 tf2 @@ -444,7 +404,7 @@ test winFCmd-2.17 {TclpCopyFile: dst is readonly} {pcOnly} { testfile cp tf1 tf2 list [file writable tf2] [contents tf2] } {1 tf1} -test winFCmd-2.18 {TclpCopyFile: still can't copy onto dst} {pcOnly 95} { +test winFCmd-2.18 {TclpCopyFile: still can't copy onto dst} {win 95 testfile testchmod} { cleanup createfile tf1 createfile tf2 @@ -455,59 +415,59 @@ test winFCmd-2.18 {TclpCopyFile: still can't copy onto dst} {pcOnly 95} { set msg "$msg [file writable tf2]" } {1 EACCES 0} -test winFCmd-3.1 {TclpDeleteFile: errno: EACCES} {pcOnly cdrom} { +test winFCmd-3.1 {TclpDeleteFile: errno: EACCES} {win cdrom testfile} { list [catch {testfile rm $cdfile $cdrom/dummy~~.fil} msg] $msg } {1 EACCES} -test winFCmd-3.2 {TclpDeleteFile: errno: EISDIR} {pcOnly} { +test winFCmd-3.2 {TclpDeleteFile: errno: EISDIR} {win testfile} { cleanup file mkdir td1 list [catch {testfile rm td1} msg] $msg } {1 EISDIR} -test winFCmd-3.3 {TclpDeleteFile: errno: ENOENT} {pcOnly} { +test winFCmd-3.3 {TclpDeleteFile: errno: ENOENT} {win testfile} { cleanup list [catch {testfile rm tf1} msg] $msg } {1 ENOENT} -test winFCmd-3.4 {TclpDeleteFile: errno: ENOENT} {pcOnly} { +test winFCmd-3.4 {TclpDeleteFile: errno: ENOENT} {win testfile} { cleanup list [catch {testfile rm ""} msg] $msg } {1 ENOENT} -test winFCmd-3.5 {TclpDeleteFile: errno: EACCES} {pcOnly} { +test winFCmd-3.5 {TclpDeleteFile: errno: EACCES} {win testfile} { cleanup set fd [open tf1 w] set msg [list [catch {testfile rm tf1} msg] $msg] close $fd set msg } {1 EACCES} -test winFCmd-3.6 {TclpDeleteFile: errno: EACCES} {pcOnly} { +test winFCmd-3.6 {TclpDeleteFile: errno: EACCES} {win testfile} { cleanup list [catch {testfile rm nul} msg] $msg } {1 EACCES} -test winFCmd-3.7 {TclpDeleteFile: DeleteFile succeeds} {pcOnly} { +test winFCmd-3.7 {TclpDeleteFile: DeleteFile succeeds} {win testfile} { cleanup createfile tf1 testfile rm tf1 file exists tf1 } {0} -test winFCmd-3.8 {TclpDeleteFile: DeleteFile fails} {pcOnly} { +test winFCmd-3.8 {TclpDeleteFile: DeleteFile fails} {win testfile} { cleanup file mkdir td1 list [catch {testfile rm td1} msg] $msg } {1 EISDIR} -test winFCmd-3.9 {TclpDeleteFile: errno == EACCES} {pcOnly} { +test winFCmd-3.9 {TclpDeleteFile: errno == EACCES} {win testfile} { cleanup set fd [open tf1 w] set msg [list [catch {testfile rm tf1} msg] $msg] close $fd set msg } {1 EACCES} -test winFCmd-3.10 {TclpDeleteFile: path is readonly} {pcOnly} { +test winFCmd-3.10 {TclpDeleteFile: path is readonly} {win testfile testchmod} { cleanup createfile tf1 testchmod 000 tf1 testfile rm tf1 file exists tf1 } {0} -test winFCmd-3.11 {TclpDeleteFile: still can't remove path} {pcOnly} { +test winFCmd-3.11 {TclpDeleteFile: still can't remove path} {win testfile testchmod} { cleanup set fd [open tf1 w] testchmod 000 tf1 @@ -516,35 +476,35 @@ test winFCmd-3.11 {TclpDeleteFile: still can't remove path} {pcOnly} { set msg } {1 EACCES} -test winFCmd-4.1 {TclpCreateDirectory: errno: EACCES} {pcOnly nt cdrom} { +test winFCmd-4.1 {TclpCreateDirectory: errno: EACCES} {win nt cdrom testfile} { list [catch {testfile mkdir $cdrom/dummy~~.dir} msg] $msg } {1 EACCES} -test winFCmd-4.2 {TclpCreateDirectory: errno: EACCES} {pcOnly 95 cdrom} { +test winFCmd-4.2 {TclpCreateDirectory: errno: EACCES} {win 95 cdrom testfile} { list [catch {testfile mkdir $cdrom/dummy~~.dir} msg] $msg } {1 ENOSPC} -test winFCmd-4.3 {TclpCreateDirectory: errno: EEXIST} {pcOnly} { +test winFCmd-4.3 {TclpCreateDirectory: errno: EEXIST} {win testfile} { cleanup file mkdir td1 list [catch {testfile mkdir td1} msg] $msg } {1 EEXIST} -test winFCmd-4.4 {TclpCreateDirectory: errno: ENOENT} {pcOnly} { +test winFCmd-4.4 {TclpCreateDirectory: errno: ENOENT} {win testfile} { cleanup list [catch {testfile mkdir td1/td2} msg] $msg } {1 ENOENT} -test winFCmd-4.5 {TclpCreateDirectory: CreateDirectory succeeds} {pcOnly} { +test winFCmd-4.5 {TclpCreateDirectory: CreateDirectory succeeds} {win testfile} { cleanup testfile mkdir td1 file type td1 } {directory} -test winFCmd-5.1 {TclpCopyDirectory: calls TraverseWinTree} {pcOnly} { +test winFCmd-5.1 {TclpCopyDirectory: calls TraverseWinTree} {win testfile} { cleanup file mkdir td1 testfile cpdir td1 td2 list [file type td1] [file type td2] } {directory directory} -test winFCmd-6.1 {TclpRemoveDirectory: errno: EACCES} {pcOnly} { +test winFCmd-6.1 {TclpRemoveDirectory: errno: EACCES} {win testfile testchmod} { cleanup file mkdir td1 testchmod 000 td1 @@ -558,40 +518,40 @@ test winFCmd-6.1 {TclpRemoveDirectory: errno: EACCES} {pcOnly} { } set r } {0} -test winFCmd-6.2 {TclpRemoveDirectory: errno: EEXIST} {pcOnly} { +test winFCmd-6.2 {TclpRemoveDirectory: errno: EEXIST} {win testfile} { cleanup file mkdir td1/td2 list [catch {testfile rmdir td1} msg] [file tail $msg] } {1 {td1 EEXIST}} -test winFCmd-6.3 {TclpRemoveDirectory: errno: EACCES} {pcOnly} { +test winFCmd-6.3 {TclpRemoveDirectory: errno: EACCES} {win emptyTest} { # can't test this w/o removing everything on your hard disk first! # testfile rmdir / } {} -test winFCmd-6.4 {TclpRemoveDirectory: errno: ENOENT} {pcOnly} { +test winFCmd-6.4 {TclpRemoveDirectory: errno: ENOENT} {win testfile} { cleanup list [catch {testfile rmdir td1} msg] [file tail $msg] } {1 {td1 ENOENT}} -test winFCmd-6.5 {TclpRemoveDirectory: errno: ENOENT} {pcOnly} { +test winFCmd-6.5 {TclpRemoveDirectory: errno: ENOENT} {win testfile} { cleanup list [catch {testfile rmdir ""} msg] $msg } {1 ENOENT} -test winFCmd-6.6 {TclpRemoveDirectory: errno: ENOTDIR} {pcOnly} { +test winFCmd-6.6 {TclpRemoveDirectory: errno: ENOTDIR} {win testfile} { cleanup createfile tf1 list [catch {testfile rmdir tf1} msg] [file tail $msg] } {1 {tf1 ENOTDIR}} -test winFCmd-6.7 {TclpRemoveDirectory: RemoveDirectory succeeds} {pcOnly} { +test winFCmd-6.7 {TclpRemoveDirectory: RemoveDirectory succeeds} {win testfile} { cleanup file mkdir td1 testfile rmdir td1 file exists td1 } {0} -test winFCmd-6.8 {TclpRemoveDirectory: RemoveDirectory fails} {pcOnly} { +test winFCmd-6.8 {TclpRemoveDirectory: RemoveDirectory fails} {win testfile} { cleanup createfile tf1 list [catch {testfile rmdir tf1} msg] [file tail $msg] } {1 {tf1 ENOTDIR}} -test winFCmd-6.9 {TclpRemoveDirectory: errno == EACCES} {pcOnly} { +test winFCmd-6.9 {TclpRemoveDirectory: errno == EACCES} {win testfile testchmod} { cleanup file mkdir td1 testchmod 000 td1 @@ -605,25 +565,26 @@ test winFCmd-6.9 {TclpRemoveDirectory: errno == EACCES} {pcOnly} { } set r } {0} -test winFCmd-6.10 {TclpRemoveDirectory: attr == -1} {pcOnly 95} { +test winFCmd-6.10 {TclpRemoveDirectory: attr == -1} {win 95 testfile} { cleanup list [catch {testfile rmdir nul} msg] $msg } {1 {nul EACCES}} -test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} {pcOnly nt} { +test winFCmd-6.11 {TclpRemoveDirectory: attr == -1} {win nt testfile} { cleanup set res [list [catch {testfile rmdir /} msg] $msg] # WinXP returns EEXIST, WinNT seems to return EACCES. No policy # decision has been made as to which is correct. - regsub {E(ACCES|EXIST)} $res "EACCES or EEXIST" res - # Don't mind which drive we're on - regsub {[A-Z]:} $res "" -} {1 {/ EACCES or EEXIST}} -test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {pcOnly 95} { + regsub {E(ACCES|EXIST)} $res "EACCES or EEXIST" +} [list 1 [list / EACCES or EEXIST]] +test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {win 95 testfile} { cleanup createfile tf1 - list [catch {testfile rmdir tf1} msg] $msg + set res [catch {testfile rmdir tf1} msg] + # get rid of path + set msg [list [file tail [lindex $msg 0]] [lindex $msg 1]] + list $res $msg } {1 {tf1 ENOTDIR}} -test winFCmd-6.13 {TclpRemoveDirectory: write-protected} {pcOnly} { +test winFCmd-6.13 {TclpRemoveDirectory: write-protected} {win testfile testchmod} { cleanup file mkdir td1 testchmod 000 td1 @@ -637,84 +598,87 @@ test winFCmd-6.13 {TclpRemoveDirectory: write-protected} {pcOnly} { } set r } {0} -test winFCmd-6.14 {TclpRemoveDirectory: check if empty dir} {pcOnly 95} { +test winFCmd-6.14 {TclpRemoveDirectory: check if empty dir} {win 95 testfile} { cleanup file mkdir td1/td2 - list [catch {testfile rmdir td1} msg] $msg + set res [catch {testfile rmdir td1} msg] + # get rid of path + set msg [list [file tail [lindex $msg 0]] [lindex $msg 1]] + list $res $msg } {1 {td1 EEXIST}} -test winFCmd-6.15 {TclpRemoveDirectory: !recursive} {pcOnly} { +test winFCmd-6.15 {TclpRemoveDirectory: !recursive} {win testfile} { cleanup file mkdir td1/td2 list [catch {testfile rmdir td1} msg] [file tail $msg] } {1 {td1 EEXIST}} -test winFCmd-6.16 {TclpRemoveDirectory: recursive, but errno != EEXIST} {pcOnly} { +test winFCmd-6.16 {TclpRemoveDirectory: recursive, but errno != EEXIST} {win testfile} { cleanup createfile tf1 list [catch {testfile rmdir -force tf1} msg] $msg } {1 {tf1 ENOTDIR}} -test winFCmd-6.17 {TclpRemoveDirectory: calls TraverseWinTree} {pcOnly} { +test winFCmd-6.17 {TclpRemoveDirectory: calls TraverseWinTree} {win testfile} { cleanup file mkdir td1/td2 testfile rmdir -force td1 file exists td1 } {0} -test winFCmd-7.1 {TraverseWinTree: targetPtr == NULL} {pcOnly} { +test winFCmd-7.1 {TraverseWinTree: targetPtr == NULL} {win testfile} { cleanup file mkdir td1/td2/td3 testfile rmdir -force td1 file exists td1 } {0} -test winFCmd-7.2 {TraverseWinTree: targetPtr != NULL} {pcOnly} { +test winFCmd-7.2 {TraverseWinTree: targetPtr != NULL} {win testfile} { cleanup file mkdir td1/td2/td3 testfile cpdir td1 td2 list [file exists td1] [file exists td2] } {1 1} -test winFCmd-7.3 {TraverseWinTree: sourceAttr == -1} {pcOnly} { +test winFCmd-7.3 {TraverseWinTree: sourceAttr == -1} {win testfile} { cleanup list [catch {testfile cpdir td1 td2} msg] $msg } {1 {td1 ENOENT}} -test winFCmd-7.4 {TraverseWinTree: source isn't directory} {pcOnly} { +test winFCmd-7.4 {TraverseWinTree: source isn't directory} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile cpdir td1 td2 contents td2/tf1 } {tf1} -test winFCmd-7.5 {TraverseWinTree: call TraversalCopy: DOTREE_F} {pcOnly} { +test winFCmd-7.5 {TraverseWinTree: call TraversalCopy: DOTREE_F} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile cpdir td1 td2 contents td2/tf1 } {tf1} -test winFCmd-7.6 {TraverseWinTree: call TraversalDelete: DOTREE_F} {pcOnly} { +test winFCmd-7.6 {TraverseWinTree: call TraversalDelete: DOTREE_F} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile rmdir -force td1 file exists td1 } {0} -test winFCmd-7.7 {TraverseWinTree: append \ to source if necessary} {pcOnly} { +test winFCmd-7.7 {TraverseWinTree: append \ to source if necessary} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile cpdir td1 td2 contents td2/tf1 } {tf1} -test winFCmd-7.8 {TraverseWinTree: append \ to source if necessary} {pcOnly 95 cdrom} { +test winFCmd-7.8 {TraverseWinTree: append \ to source if necessary} {win 95 cdrom testfile} { # cdrom can return either d:\ or D:/, but we only care about the errcode list [catch {testfile rmdir $cdrom/} msg] [lindex $msg 1] -} {1 EEXIST} -test winFCmd-7.9 {TraverseWinTree: append \ to source if necessary} {pcOnly nt cdrom} { +} {1 EACCES} ; # was EEXIST, but changed for win98. +test winFCmd-7.9 {TraverseWinTree: append \ to source if necessary} {win nt cdrom testfile} { list [catch {testfile rmdir $cdrom/} msg] [lindex $msg 1] } {1 EACCES} test winFCmd-7.10 {TraverseWinTree: can't read directory: handle == INVALID} \ - {pcOnly} { + {win emptyTest} { # can't make it happen } {} -test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {pcOnly} { +test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {win testfile testchmod} { cleanup file mkdir td1 createfile td1/tf1 tf1 @@ -729,40 +693,31 @@ test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {pcOnly} { } set r } {1 1} -test winFCmd-7.12 {TraverseWinTree: call TraversalDelete: DOTREE_PRED} {pcOnly} { +test winFCmd-7.12 {TraverseWinTree: call TraversalDelete: DOTREE_PRED} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile rmdir -force td1 file exists td1 } {0} -test winFCmd-7.13 {TraverseWinTree: append \ to target if necessary} {pcOnly} { +test winFCmd-7.13 {TraverseWinTree: append \ to target if necessary} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile cpdir td1 td2 contents td2/tf1 -} {tf1} -test winFCmd-7.14 {TraverseWinTree: append \ to target if necessary} {pcOnly 95} { +} {tf1} +test winFCmd-7.14 {TraverseWinTree: append \ to target if necessary} -constraints {win testfile} -body { cleanup file mkdir td1 list [catch {testfile cpdir td1 /} msg] $msg -} {1 {/ EEXIST}} -test winFCmd-7.15 {TraverseWinTree: append \ to target if necessary} -setup { - cleanup -} -constraints {pcOnly nt} -body { - file mkdir td1 - testfile cpdir td1 / -} -cleanup { - cleanup - # Windows7 returns EEXIST, XP returns EACCES -} -returnCodes error -match regexp -result {^/ E(ACCES|EXIST)$} -test winFCmd-7.16 {TraverseWinTree: recurse on files: no files} {pcOnly} { +} -match regexp -result {1 \{/ (EEXIST|EACCES)\}} +test winFCmd-7.16 {TraverseWinTree: recurse on files: no files} {win testfile} { cleanup file mkdir td1 testfile cpdir td1 td2 } {} -test winFCmd-7.17 {TraverseWinTree: recurse on files: one file} {pcOnly} { +test winFCmd-7.17 {TraverseWinTree: recurse on files: one file} {win testfile} { cleanup file mkdir td1 createfile td1/td2 @@ -770,7 +725,7 @@ test winFCmd-7.17 {TraverseWinTree: recurse on files: one file} {pcOnly} { glob td2/* } {td2/td2} test winFCmd-7.18 {TraverseWinTree: recurse on files: several files and dir} \ - {pcOnly} { + {win testfile} { cleanup file mkdir td1 createfile td1/tf1 @@ -781,7 +736,7 @@ test winFCmd-7.18 {TraverseWinTree: recurse on files: several files and dir} \ testfile cpdir td1 td2 lsort [glob td2/*] } {td2/td2 td2/tf1 td2/tf2 td2/tf3 td2/tf4} -test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} {pcOnly} { +test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} {win testfile testchmod} { cleanup file mkdir td1 createfile td1/tf1 tf1 @@ -797,24 +752,24 @@ test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} {pcOnly} { set r } {1 1} test winFCmd-7.20 {TraverseWinTree: call TraversalDelete: DOTREE_POSTD} \ - {pcOnly} { + {win testfile} { cleanup file mkdir td1 createfile td1/tf1 tf1 testfile rmdir -force td1 file exists td1 } {0} -test winFCmd-7.21 {TraverseWinTree: fill errorPtr} {pcOnly} { +test winFCmd-7.21 {TraverseWinTree: fill errorPtr} {win testfile} { cleanup list [catch {testfile cpdir td1 td2} msg] $msg } {1 {td1 ENOENT}} -test winFCmd-8.1 {TraversalCopy: DOTREE_F} {pcOnly} { +test winFCmd-8.1 {TraversalCopy: DOTREE_F} {win testfile} { cleanup file mkdir td1 list [catch {testfile cpdir td1 td1} msg] $msg } {1 {td1 EEXIST}} -test winFCmd-8.2 {TraversalCopy: DOTREE_PRED} {pcOnly} { +test winFCmd-8.2 {TraversalCopy: DOTREE_PRED} {win testfile testchmod} { cleanup file mkdir td1/td2 testchmod 000 td1 @@ -828,19 +783,19 @@ test winFCmd-8.2 {TraversalCopy: DOTREE_PRED} {pcOnly} { } set r } {0 1} -test winFCmd-8.3 {TraversalCopy: DOTREE_POSTD} {pcOnly} { +test winFCmd-8.3 {TraversalCopy: DOTREE_POSTD} {win testfile} { cleanup file mkdir td1 testfile cpdir td1 td2 } {} -test winFCmd-9.1 {TraversalDelete: DOTREE_F} {pcOnly} { +test winFCmd-9.1 {TraversalDelete: DOTREE_F} {win testfile} { cleanup file mkdir td1 createfile td1/tf1 testfile rmdir -force td1 } {} -test winFCmd-9.2 {TraversalDelete: DOTREE_F} {pcOnly 95} { +test winFCmd-9.2 {TraversalDelete: DOTREE_F} {win 95 testfile} { cleanup file mkdir td1 set fd [open td1/tf1 w] @@ -848,7 +803,7 @@ test winFCmd-9.2 {TraversalDelete: DOTREE_F} {pcOnly 95} { close $fd set msg } {1 {td1\tf1 EACCES}} -test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} {pcOnly} { +test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} {win testfile testchmod} { cleanup file mkdir td1/td2 testchmod 000 td1 @@ -862,42 +817,42 @@ test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} {pcOnly} { } set r } {0} -test winFCmd-9.4 {TraversalDelete: DOTREE_POSTD} {pcOnly} { +test winFCmd-9.4 {TraversalDelete: DOTREE_POSTD} {win testfile} { cleanup file mkdir td1/td1/td3/td4/td5 testfile rmdir -force td1 } {} -test winFCmd-10.1 {AttributesPosixError - get} {pcOnly} { +test winFCmd-10.1 {AttributesPosixError - get} {win} { cleanup list [catch {file attributes td1 -archive} msg] $msg } {1 {could not read "td1": no such file or directory}} -test winFCmd-10.2 {AttributesPosixError - set} {pcOnly} { +test winFCmd-10.2 {AttributesPosixError - set} {win} { cleanup list [catch {file attributes td1 -archive 0} msg] $msg } {1 {could not read "td1": no such file or directory}} -test winFCmd-11.1 {GetWinFileAttributes} {pcOnly} { +test winFCmd-11.1 {GetWinFileAttributes} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -archive} msg] $msg [cleanup] } {0 1 {}} -test winFCmd-11.2 {GetWinFileAttributes} {pcOnly} { +test winFCmd-11.2 {GetWinFileAttributes} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -readonly} msg] $msg [cleanup] } {0 0 {}} -test winFCmd-11.3 {GetWinFileAttributes} {pcOnly} { +test winFCmd-11.3 {GetWinFileAttributes} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -hidden} msg] $msg [cleanup] } {0 0 {}} -test winFCmd-11.4 {GetWinFileAttributes} {pcOnly} { +test winFCmd-11.4 {GetWinFileAttributes} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -system} msg] $msg [cleanup] } {0 0 {}} -test winFCmd-11.5 {GetWinFileAttributes} {pcOnly} { +test winFCmd-11.5 {GetWinFileAttributes} {win} { # attr of relative paths that resolve to root was failing # don't care about answer, just that test runs. @@ -908,124 +863,124 @@ test winFCmd-11.5 {GetWinFileAttributes} {pcOnly} { file attr . cd $old } {} -test winFCmd-11.6 {GetWinFileAttributes} {pcOnly} { +test winFCmd-11.6 {GetWinFileAttributes} {win} { file attr c:/ -hidden } {0} -test winFCmd-12.1 {ConvertFileNameFormat} {pcOnly} { +test winFCmd-12.1 {ConvertFileNameFormat} {win} { cleanup close [open td1 w] list [catch {string tolower [file attributes td1 -longname]} msg] $msg [cleanup] } {0 td1 {}} -test winFCmd-12.2 {ConvertFileNameFormat} {pcOnly} { +test winFCmd-12.2 {ConvertFileNameFormat} {win} { cleanup file mkdir td1 close [open td1/td1 w] list [catch {string tolower [file attributes td1/td1 -longname]} msg] $msg [cleanup] } {0 td1/td1 {}} -test winFCmd-12.3 {ConvertFileNameFormat} {pcOnly} { +test winFCmd-12.3 {ConvertFileNameFormat} {win} { cleanup file mkdir td1 file mkdir td1/td2 close [open td1/td3 w] list [catch {string tolower [file attributes td1/td2/../td3 -longname]} msg] $msg [cleanup] } {0 td1/td2/../td3 {}} -test winFCmd-12.4 {ConvertFileNameFormat} {pcOnly} { +test winFCmd-12.4 {ConvertFileNameFormat} {win} { cleanup close [open td1 w] list [catch {string tolower [file attributes ./td1 -longname]} msg] $msg [cleanup] } {0 ./td1 {}} -test winFCmd-12.5 {ConvertFileNameFormat: absolute path} {pcOnly} { +test winFCmd-12.5 {ConvertFileNameFormat: absolute path} {win} { list [file attributes / -longname] [file attributes \\ -longname] } {/ /} -test winFCmd-12.6 {ConvertFileNameFormat: absolute path with drive} {pcOnly} { +test winFCmd-12.6 {ConvertFileNameFormat: absolute path with drive} {win} { catch {file delete -force -- c:/td1} close [open c:/td1 w] list [catch {string tolower [file attributes c:/td1 -longname]} msg] $msg [file delete -force -- c:/td1] } {0 c:/td1 {}} -test winFCmd-12.7 {ConvertFileNameFormat} {nonPortable pcOnly} { +test winFCmd-12.7 {ConvertFileNameFormat} {nonPortable win} { string tolower [file attributes //bisque/tcl/ws -longname] } {//bisque/tcl/ws} -test winFCmd-12.8 {ConvertFileNameFormat} {pcOnly longFileNames} { +test winFCmd-12.8 {ConvertFileNameFormat} {win longFileNames} { cleanup close [open td1 w] list [catch {string tolower [file attributes td1 -longname]} msg] $msg [cleanup] } {0 td1 {}} -test winFCmd-12.10 {ConvertFileNameFormat} {longFileNames pcOnly} { +test winFCmd-12.10 {ConvertFileNameFormat} {longFileNames win} { cleanup close [open td1td1td1 w] list [catch {file attributes td1td1td1 -shortname}] [cleanup] } {0 {}} -test winFCmd-12.11 {ConvertFileNameFormat} {longFileNames pcOnly} { +test winFCmd-12.11 {ConvertFileNameFormat} {longFileNames win} { cleanup close [open td1 w] list [catch {string tolower [file attributes td1 -shortname]} msg] $msg [cleanup] } {0 td1 {}} -test winFCmd-13.1 {GetWinFileLongName} {pcOnly} { +test winFCmd-13.1 {GetWinFileLongName} {win} { cleanup close [open td1 w] list [catch {string tolower [file attributes td1 -longname]} msg] $msg [cleanup] } {0 td1 {}} -test winFCmd-14.1 {GetWinFileShortName} {pcOnly} { +test winFCmd-14.1 {GetWinFileShortName} {win} { cleanup close [open td1 w] list [catch {string tolower [file attributes td1 -shortname]} msg] $msg [cleanup] } {0 td1 {}} -test winFCmd-15.1 {SetWinFileAttributes} {pcOnly} { +test winFCmd-15.1 {SetWinFileAttributes} {win} { cleanup list [catch {file attributes td1 -archive 0} msg] $msg } {1 {could not read "td1": no such file or directory}} -test winFCmd-15.2 {SetWinFileAttributes - archive} {pcOnly} { +test winFCmd-15.2 {SetWinFileAttributes - archive} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -archive 1} msg] $msg [file attributes td1 -archive] [cleanup] } {0 {} 1 {}} -test winFCmd-15.3 {SetWinFileAttributes - archive} {pcOnly} { +test winFCmd-15.3 {SetWinFileAttributes - archive} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -archive 0} msg] $msg [file attributes td1 -archive] [cleanup] } {0 {} 0 {}} -test winFCmd-15.4 {SetWinFileAttributes - hidden} {pcOnly} { +test winFCmd-15.4 {SetWinFileAttributes - hidden} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -hidden 1} msg] $msg [file attributes td1 -hidden] [file attributes td1 -hidden 0] [cleanup] } {0 {} 1 {} {}} -test winFCmd-15.5 {SetWinFileAttributes - hidden} {pcOnly} { +test winFCmd-15.5 {SetWinFileAttributes - hidden} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -hidden 0} msg] $msg [file attributes td1 -hidden] [cleanup] } {0 {} 0 {}} -test winFCmd-15.6 {SetWinFileAttributes - readonly} {pcOnly} { +test winFCmd-15.6 {SetWinFileAttributes - readonly} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -readonly 1} msg] $msg [file attributes td1 -readonly] [cleanup] } {0 {} 1 {}} -test winFCmd-15.7 {SetWinFileAttributes - readonly} {pcOnly} { +test winFCmd-15.7 {SetWinFileAttributes - readonly} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -readonly 0} msg] $msg [file attributes td1 -readonly] [cleanup] } {0 {} 0 {}} -test winFCmd-15.8 {SetWinFileAttributes - system} {pcOnly} { +test winFCmd-15.8 {SetWinFileAttributes - system} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -system 1} msg] $msg [file attributes td1 -system] [cleanup] } {0 {} 1 {}} -test winFCmd-15.9 {SetWinFileAttributes - system} {pcOnly} { +test winFCmd-15.9 {SetWinFileAttributes - system} {win} { cleanup close [open td1 w] list [catch {file attributes td1 -system 0} msg] $msg [file attributes td1 -system] [cleanup] } {0 {} 0 {}} -test winFCmd-15.10 {SetWinFileAttributes - failing} {pcOnly cdrom} { +test winFCmd-15.10 {SetWinFileAttributes - failing} {win cdrom} { cleanup catch {file attributes $cdfile -archive 1} } {1} -test winFCmd-16.1 {Windows file normalization} {pcOnly} { +test winFCmd-16.1 {Windows file normalization} {win} { list [file normalize c:/] [file normalize C:/] } {C:/ C:/} -test winFCmd-16.2 {Windows file normalization} {pcOnly} { +test winFCmd-16.2 {Windows file normalization} {win} { close [open td1... w] set res [file tail [file normalize td1]] file delete td1... @@ -1035,48 +990,113 @@ test winFCmd-16.2 {Windows file normalization} {pcOnly} { set pwd [pwd] set d [string index $pwd 0] -test winFCmd-16.3 {Windows file normalization} {pcOnly} { +test winFCmd-16.3 {Windows file normalization} {win} { file norm ${d}:foo } [file join $pwd foo] -test winFCmd-16.4 {Windows file normalization} {pcOnly} { +test winFCmd-16.4 {Windows file normalization} {win} { file norm [string tolower ${d}]:foo } [file join $pwd foo] -test winFCmd-16.5 {Windows file normalization} {pcOnly} { +test winFCmd-16.5 {Windows file normalization} {win} { file norm ${d}:foo/bar } [file join $pwd foo/bar] -test winFCmd-16.6 {Windows file normalization} {pcOnly} { +test winFCmd-16.6 {Windows file normalization} {win} { file norm ${d}:foo\\bar } [file join $pwd foo/bar] -test winFCmd-16.7 {Windows file normalization} {pcOnly} { +test winFCmd-16.7 {Windows file normalization} {win} { file norm /bar } "${d}:/bar" -test winFCmd-16.8 {Windows file normalization} {pcOnly} { +test winFCmd-16.8 {Windows file normalization} {win} { file norm ///bar } "${d}:/bar" -test winFCmd-16.9 {Windows file normalization} {pcOnly} { +test winFCmd-16.9 {Windows file normalization} {win} { file norm /bar/foo } "${d}:/bar/foo" if {$d eq "C"} { set dd "D" } else { set dd "C" } -test winFCmd-16.10 {Windows file normalization} {pcOnly} { +test winFCmd-16.10 {Windows file normalization} {win} { file norm ${dd}:foo } "${dd}:/foo" -test winFCmd-16.11 {Windows file normalization} {pcOnly cdrom} { +test winFCmd-16.11 {Windows file normalization} -constraints {win cdrom} \ +-body { cd ${d}: cd $cdrom cd ${d}: cd $cdrom # Must not crash set result "no crash" -} {no crash} -test winFCmd-16.12 {Windows file normalization} {pcOnly} { +} -cleanup { + cd $pwd +} -result {no crash} + +test winFCmd-16.12 {Windows file normalization - no crash} \ + -constraints win -setup { set oldhome "" catch {set oldhome $::env(HOME)} +} -body { + set expectedResult [file normalize ${d}:] set ::env(HOME) ${d}: cd + # At one point this led to an infinite recursion in Tcl set result [pwd]; # <- Must not crash + set result "no crash" +} -cleanup { set ::env(HOME) $oldhome - set result -} ${d}:/ + cd $pwd +} -result {no crash} + +test winFCmd-16.13 {Windows file normalization} -constraints win -setup { + set oldhome "" + catch {set oldhome $::env(HOME)} +} -body { + # Test 'cd' normalization when HOME is absolute + set expectedResult [file normalize ${d}:/] + set ::env(HOME) ${d}:/ + cd + set result [pwd] + if { [string equal $result $expectedResult] } { + concat ok + } else { + list $result != $expectedResult + } +} -cleanup { + set ::env(HOME) $oldhome + cd $pwd +} -result ok + +test winFCmd-16.14 {Windows file normalization} -constraints win -setup { + set oldhome "" + catch {set oldhome $::env(HOME)} +} -body { + # Test 'cd' normalization when HOME is relative + set ::env(HOME) ${d}: + cd + set result [pwd] + if { [string equal $result $pwd] } { + concat ok + } else { + list $result != $pwd + } +} -cleanup { + set ::env(HOME) $oldhome + cd $pwd +} -result ok + +test winFCmd-17.1 {Windows bad permissions cd} -constraints win -body { + set d {} + foreach dd {c:/ d:/ e:/} { + eval lappend d [glob -nocomplain \ + -types hidden -dir $dd "System Volume Information"] + } + # Old versions of Tcl gave a misleading error that the + # directory in question didn't exist. + if {[llength $d] && [catch {cd [lindex $d 0]} err]} { + regsub ".*: " $err "" err + set err + } else { + set err "permission denied" + } +} -cleanup { + cd $pwd +} -result "permission denied" cd $pwd unset d dd pwd @@ -1084,46 +1104,140 @@ unset d dd pwd test winFCmd-18.1 {Windows reserved path names} -constraints win -body { file pathtype com1 } -result "absolute" + test winFCmd-18.1.2 {Windows reserved path names} -constraints win -body { file pathtype com4 } -result "absolute" + test winFCmd-18.1.3 {Windows reserved path names} -constraints win -body { file pathtype com5 } -result "relative" + test winFCmd-18.1.4 {Windows reserved path names} -constraints win -body { file pathtype lpt3 } -result "absolute" + test winFCmd-18.1.5 {Windows reserved path names} -constraints win -body { file pathtype lpt4 } -result "relative" + test winFCmd-18.1.6 {Windows reserved path names} -constraints win -body { file pathtype nul } -result "absolute" + test winFCmd-18.1.7 {Windows reserved path names} -constraints win -body { file pathtype null } -result "relative" + test winFCmd-18.2 {Windows reserved path names} -constraints win -body { file pathtype com1: } -result "absolute" + test winFCmd-18.3 {Windows reserved path names} -constraints win -body { file pathtype COM1 } -result "absolute" + test winFCmd-18.4 {Windows reserved path names} -constraints win -body { file pathtype CoM1: } -result "absolute" + test winFCmd-18.5 {Windows reserved path names} -constraints win -body { file normalize com1: } -result COM1 + test winFCmd-18.6 {Windows reserved path names} -constraints win -body { file normalize COM1: } -result COM1 + test winFCmd-18.7 {Windows reserved path names} -constraints win -body { file normalize cOm1 } -result COM1 + test winFCmd-18.8 {Windows reserved path names} -constraints win -body { file normalize cOm1: } -result COM1 + +test winFCmd-19.1 {Windows extended path names} -constraints nt -body { + file normalize //?/c:/windows/win.ini +} -result //?/c:/windows/win.ini + +test winFCmd-19.2 {Windows extended path names} -constraints nt -body { + file normalize //?/c:/windows/../windows/win.ini +} -result //?/c:/windows/win.ini + +test winFCmd-19.3 {Windows extended path names} -constraints nt -setup { + set tmpfile [file join $::env(TEMP) tcl[string repeat x 20].tmp] + set tmpfile [file normalize $tmpfile] +} -body { + list [catch { + set f [open $tmpfile [list WRONLY CREAT]] + close $f + } res] $res +} -cleanup { + catch {file delete $tmpfile} +} -result [list 0 {}] + +test winFCmd-19.4 {Windows extended path names} -constraints nt -setup { + set tmpfile [file join $::env(TEMP) tcl[string repeat x 20].tmp] + set tmpfile //?/[file normalize $tmpfile] +} -body { + list [catch { + set f [open $tmpfile [list WRONLY CREAT]] + close $f + } res] $res +} -cleanup { + catch {file delete $tmpfile} +} -result [list 0 {}] + +test winFCmd-19.5 {Windows extended path names} -constraints nt -setup { + set tmpfile [file join $::env(TEMP) tcl[string repeat x 248].tmp] + set tmpfile [file normalize $tmpfile] +} -body { + list [catch { + set f [open $tmpfile [list WRONLY CREAT]] + close $f + } res] errormsg ;#$res +} -cleanup { + catch {file delete $tmpfile} +} -result [list 1 errormsg] + +test winFCmd-19.6 {Windows extended path names} -constraints nt -setup { + set tmpfile [file join $::env(TEMP) tcl[string repeat x 248].tmp] + set tmpfile //?/[file normalize $tmpfile] +} -body { + list [catch { + set f [open $tmpfile [list WRONLY CREAT]] + close $f + } res] $res +} -cleanup { + catch {file delete $tmpfile} +} -result [list 0 {}] + +test winFCmd-19.7 {Windows extended path names} -constraints nt -setup { + set tmpfile [file join $::env(TEMP) "tcl[pid].tmp "] + set tmpfile [file normalize $tmpfile] +} -body { + list [catch { + set f [open $tmpfile [list WRONLY CREAT]] + close $f + } res] $res [glob -directory $::env(TEMP) -tails tcl[pid].*] +} -cleanup { + catch {file delete $tmpfile} +} -result [list 0 {} [list tcl[pid].tmp]] + +test winFCmd-19.8 {Windows extended path names} -constraints nt -setup { + set tmpfile [file join $::env(TEMP) "tcl[pid].tmp "] + set tmpfile //?/[file normalize $tmpfile] +} -body { + list [catch { + set f [open $tmpfile [list WRONLY CREAT]] + close $f + } res] $res [glob -directory $::env(TEMP) -tails tcl[pid].*] +} -cleanup { + catch {file delete $tmpfile} +} -result [list 0 {} [list "tcl[pid].tmp "]] + # This block of code used to occur after the "return" call, so I'm # commenting it out and assuming that this code is still under construction. #foreach source {tef ted tnf tnd "" nul com1} { |