diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/cmdAH.test | 19 | ||||
-rw-r--r-- | tests/fCmd.test | 7 | ||||
-rw-r--r-- | tests/unixFCmd.test | 30 | ||||
-rw-r--r-- | tests/winFCmd.test | 315 |
4 files changed, 187 insertions, 184 deletions
diff --git a/tests/cmdAH.test b/tests/cmdAH.test index 95b9f5a..9185aff 100644 --- a/tests/cmdAH.test +++ b/tests/cmdAH.test @@ -10,19 +10,18 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: cmdAH.test,v 1.51 2006/02/08 21:41:28 dgp Exp $ +# RCS: @(#) $Id: cmdAH.test,v 1.52 2006/03/20 11:39:03 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2.1 namespace import -force ::tcltest::* } -tcltest::testConstraint testchmod \ - [string equal testchmod [info commands testchmod]] +tcltest::testConstraint testchmod [llength [info commands testchmod]] tcltest::testConstraint testsetplatform \ - [string equal testsetplatform [info commands testsetplatform]] + [llength [info commands testsetplatform]] tcltest::testConstraint testvolumetype \ - [string equal testvolumetype [info commands testvolumetype]] + [llength [info commands testvolumetype]] tcltest::testConstraint linkDirectory [expr \ {$tcl_platform(platform) ne "windows" || \ ([string index $tcl_platform(osVersion) 0] >= 5 \ @@ -847,10 +846,10 @@ removeDirectory $dirfile set dirfile [makeDirectory dir.file] set gorpfile [makeFile abcde gorp.file] -test cmdAH-18.1 {Tcl_FileObjCmd: executable} {testchmod} { +test cmdAH-18.1 {Tcl_FileObjCmd: executable} {} { list [catch {file executable a b} msg] $msg } {1 {wrong # args: should be "file executable name"}} -test cmdAH-18.2 {Tcl_FileObjCmd: executable} {testchmod notRoot} { +test cmdAH-18.2 {Tcl_FileObjCmd: executable} {notRoot} { file executable $gorpfile } 0 test cmdAH-18.3 {Tcl_FileObjCmd: executable} {unix testchmod} { @@ -861,7 +860,7 @@ test cmdAH-18.3 {Tcl_FileObjCmd: executable} {unix testchmod} { file exe $gorpfile } 1 -test cmdAH-18.5 {Tcl_FileObjCmd: executable} {win testchmod} { +test cmdAH-18.5 {Tcl_FileObjCmd: executable} {win} { # On pc, must be a .exe, .com, etc. set x [file exe $gorpfile] @@ -870,7 +869,7 @@ test cmdAH-18.5 {Tcl_FileObjCmd: executable} {win testchmod} { removeFile $gorpexe set x } {0 1} -test cmdAH-18.5.1 {Tcl_FileObjCmd: executable} {win testchmod} { +test cmdAH-18.5.1 {Tcl_FileObjCmd: executable} {win} { # On pc, must be a .exe, .com, etc. set x [file exe $gorpfile] @@ -879,7 +878,7 @@ test cmdAH-18.5.1 {Tcl_FileObjCmd: executable} {win testchmod} { removeFile $gorpexe set x } {0 1} -test cmdAH-18.6 {Tcl_FileObjCmd: executable} {testchmod} { +test cmdAH-18.6 {Tcl_FileObjCmd: executable} {} { # Directories are always executable. file exe $dirfile diff --git a/tests/fCmd.test b/tests/fCmd.test index e33d678..6d2abc0 100644 --- a/tests/fCmd.test +++ b/tests/fCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: fCmd.test,v 1.51 2006/03/18 18:15:13 vincentdarley Exp $ +# RCS: @(#) $Id: fCmd.test,v 1.52 2006/03/20 11:39:03 dkf Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -80,7 +80,10 @@ proc cleanup {args} { set x [glob -directory $p tf* td*] } foreach file $x { - if {[catch {file delete -force -- $file}]} { + if { + [catch {file delete -force -- $file}] + && [testConstraint testchmod] + } then { catch {openup $file} catch {file delete -force -- $file} } diff --git a/tests/unixFCmd.test b/tests/unixFCmd.test index bdead08..0d77153 100644 --- a/tests/unixFCmd.test +++ b/tests/unixFCmd.test @@ -9,13 +9,15 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: unixFCmd.test,v 1.21 2004/06/23 15:36:58 dkf Exp $ +# RCS: @(#) $Id: unixFCmd.test,v 1.22 2006/03/20 11:39:03 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import -force ::tcltest::* } +testConstraint testchmod [llength [info commands testchmod]] + # These tests really need to be run from a writable directory, which # it is assumed [temporaryDirectory] is. set oldcwd [pwd] @@ -51,7 +53,10 @@ proc cleanup {args} { set x [glob -directory $p tf* td*] } foreach file $x { - if {[catch {file delete -force -- $file}]} { + if { + [catch {file delete -force -- $file}] + && [testConstraint testchmod] + } then { openup $file file delete -force -- $file } @@ -229,15 +234,14 @@ test unixFCmd-14.2 {GetPermissionsAttribute} {unix notRoot} { # Find a group that exists on this system, or else skip tests that require # groups -set foundgroup 0 +testConstraint foundGroup 0 if {$tcl_platform(platform) == "unix"} { catch { set groupList [exec groups] set group [lindex $groupList 0] - set foundgroup 1 + testConstraint foundGroup 1 } } -testConstraint foundGroup $foundgroup #groups hard to test test unixFCmd-15.1 {SetGroupAttribute - invalid group} {unix notRoot} { @@ -327,17 +331,15 @@ test unixFCmd-18.1 {Unix pwd} {nonPortable unix notRoot} { } {1 {error getting working directory name:}} # check whether -readonly attribute is supported -set roattr 0 +testConstraint readonlyAttr 0 if {$tcl_platform(platform) == "unix"} { - catch {file delete -force -- foo.test} - close [open foo.test w] + set f [makeFile "whatever"] catch { - file attributes foo.test -readonly - set roattr 1 + file attributes $f -readonly + testConstraint readonlyAttr 1 } - file delete -force -- foo.test + removeFile $f } -testConstraint readonlyAttr $roattr test unixFCmd-19.1 {GetReadOnlyAttribute - file not found} {unix notRoot readonlyAttr} { catch {file delete -force -- foo.test} @@ -370,3 +372,7 @@ cleanup cd $oldcwd ::tcltest::cleanupTests return + +# Local Variables: +# mode: tcl +# End: diff --git a/tests/winFCmd.test b/tests/winFCmd.test index 3ffaed2..8c95a4c 100644 --- a/tests/winFCmd.test +++ b/tests/winFCmd.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: winFCmd.test,v 1.39 2006/03/18 18:15:13 vincentdarley Exp $ +# RCS: @(#) $Id: winFCmd.test,v 1.40 2006/03/20 11:39:03 dkf Exp $ # if {[lsearch [namespace children] ::tcltest] == -1} { @@ -18,6 +18,17 @@ if {[lsearch [namespace children] ::tcltest] == -1} { namespace import -force ::tcltest::* } +# Initialise the test constraints + +testConstraint win2000orXP 0 +testConstraint winOlderThan2000 0 +testConstraint testvolumetype [llength [info commands testvolumetype]] +testConstraint testfile [llength [info commands testfile]] +testConstraint testchmod [llength [info commands testchmod]] +testConstraint cdrom 0 +testConstraint exdev 0 +testConstraint longFileNames 0 + proc createfile {file {string a}} { set f [open $file w] puts -nonewline $f $string @@ -44,38 +55,24 @@ proc cleanup {args} { } } -if {[string equal $tcl_platform(platform) "windows"]} { - if {[string equal $tcl_platform(os) "Windows NT"] \ - && [string equal [string index $tcl_platform(osVersion) 0] "5"]} { - tcltest::testConstraint win2000orXP 1 - tcltest::testConstraint winOlderThan2000 0 +if {[testConstraint winOnly]} { + if {[testConstraint nt] && [string index $tcl_platform(osVersion) 0]==5} { + # Warning: Win 6 will break this! + testConstraint win2000orXP 1 } else { - tcltest::testConstraint win2000orXP 0 - tcltest::testConstraint winOlderThan2000 1 + testConstraint winOlderThan2000 1 } -} else { - tcltest::testConstraint win2000orXP 0 - tcltest::testConstraint winOlderThan2000 0 } # 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 != ""} { @@ -86,30 +83,28 @@ proc findfile {dir} { return "" } -if {$cdrom != ""} { - testConstraint cdrom 1 - set cdfile [findfile $cdrom] -} else { - testConstraint cdrom 0 +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 + catch {file delete d:/TclTmpF.1} + if {[catch {close [open d:/TclTmpF.1 w]}] == 0} { + file delete d:/TclTmpF.1 testConstraint exdev 1 - } else { - testConstraint exdev 0 } -} else { - testConstraint exdev 0 } file delete -force -- td1 -set foo [catch {open td1 w} testfile] -if {$foo} { - testConstraint longFileNames 0 -} else { +if {![catch {open td1 w} testfile]} { close $testfile testConstraint longFileNames 1 file delete -force -- td1 @@ -131,64 +126,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} {win 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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win 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} {win} { +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} {win} { +test winFCmd-1.12 {TclpRenameFile: errno: EACCES} {win testfile} { cleanup createfile tf1 set fd [open tf2 w] @@ -196,121 +191,121 @@ test winFCmd-1.12 {TclpRenameFile: errno: EACCES} {win} { close $fd set msg } {1 EACCES} -test winFCmd-1.13 {TclpRenameFile: errno: EACCES} {win win2000orXP} { +test winFCmd-1.13 {TclpRenameFile: errno: EACCES} {win win2000orXP testfile} { cleanup list [catch {testfile mv nul tf1} msg] $msg } {1 EINVAL} -test winFCmd-1.13.1 {TclpRenameFile: errno: EACCES} {win nt winOlderThan2000} { +test winFCmd-1.13.1 {TclpRenameFile: errno: EACCES} {win nt winOlderThan2000 testfile} { cleanup list [catch {testfile mv nul tf1} msg] $msg } {1 EACCES} -test winFCmd-1.13.2 {TclpRenameFile: errno: ENOENT} {win 95} { +test winFCmd-1.13.2 {TclpRenameFile: errno: ENOENT} {win 95 testfile} { cleanup list [catch {testfile mv nul tf1} msg] $msg } {1 ENOENT} -test winFCmd-1.14 {TclpRenameFile: errno: EACCES} {win 95} { +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} {win 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} {win} { +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} {win} { +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} {win} { +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} {win win2000orXP} { +test winFCmd-1.19 {TclpRenameFile: errno == EACCES} {win win2000orXP testfile} { cleanup list [catch {testfile mv nul tf1} msg] $msg } {1 EINVAL} -test winFCmd-1.19.1 {TclpRenameFile: errno == EACCES} {win nt winOlderThan2000} { +test winFCmd-1.19.1 {TclpRenameFile: errno == EACCES} {win nt winOlderThan2000 testfile} { cleanup list [catch {testfile mv nul tf1} msg] $msg } {1 EACCES} -test winFCmd-1.19.2 {TclpRenameFile: errno == ENOENT} {win 95} { +test winFCmd-1.19.2 {TclpRenameFile: errno == ENOENT} {win 95 testfile} { cleanup list [catch {testfile mv nul tf1} msg] $msg } {1 ENOENT} -test winFCmd-1.20 {TclpRenameFile: src is dir} {win nt} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win 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} {win 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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +test winFCmd-1.32 {TclpRenameFile: TclpRemoveDirectory succeeds} {win testfile} { cleanup file mkdir td1/td2 file mkdir td2 @@ -318,7 +313,7 @@ test winFCmd-1.32 {TclpRenameFile: TclpRemoveDirectory succeeds} {win} { 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} \ - {win exdev} { + {win exdev testfile testchmod} { file mkdir d:/td1 testchmod 000 d:/td1 file mkdir c:/tf1 @@ -328,56 +323,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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win 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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win 95} { +test winFCmd-2.7 {TclpCopyFile: errno: EACCES} {win 95 testfile} { cleanup createfile tf1 set fd [open tf2 w] @@ -385,61 +380,61 @@ test winFCmd-2.7 {TclpCopyFile: errno: EACCES} {win 95} { close $fd set msg } {1 EACCES} -test winFCmd-2.8 {TclpCopyFile: errno: EACCES} {win win2000orXP} { +test winFCmd-2.8 {TclpCopyFile: errno: EACCES} {win win2000orXP testfile} { cleanup list [catch {testfile cp nul tf1} msg] $msg } {1 EINVAL} -test winFCmd-2.8.1 {TclpCopyFile: errno: EACCES} {win nt winOlderThan2000} { +test winFCmd-2.8.1 {TclpCopyFile: errno: EACCES} {win nt winOlderThan2000 testfile} { cleanup list [catch {testfile cp nul tf1} msg] $msg } {1 EACCES} -test winFCmd-2.9 {TclpCopyFile: errno: ENOENT} {win 95} { +test winFCmd-2.9 {TclpCopyFile: errno: ENOENT} {win 95 testfile} { cleanup list [catch {testfile cp nul tf1} msg] $msg } {1 ENOENT} -test winFCmd-2.10 {TclpCopyFile: CopyFile succeeds} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +test winFCmd-2.17 {TclpCopyFile: dst is readonly} {win testfile testchmod} { cleanup createfile tf1 tf1 createfile tf2 tf2 @@ -447,7 +442,7 @@ test winFCmd-2.17 {TclpCopyFile: dst is readonly} {win} { testfile cp tf1 tf2 list [file writable tf2] [contents tf2] } {1 tf1} -test winFCmd-2.18 {TclpCopyFile: still can't copy onto dst} {win 95} { +test winFCmd-2.18 {TclpCopyFile: still can't copy onto dst} {win 95 testfile testchmod} { cleanup createfile tf1 createfile tf2 @@ -458,59 +453,59 @@ test winFCmd-2.18 {TclpCopyFile: still can't copy onto dst} {win 95} { set msg "$msg [file writable tf2]" } {1 EACCES 0} -test winFCmd-3.1 {TclpDeleteFile: errno: EACCES} {win 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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +test winFCmd-3.11 {TclpDeleteFile: still can't remove path} {win testfile testchmod} { cleanup set fd [open tf1 w] testchmod 000 tf1 @@ -519,93 +514,93 @@ test winFCmd-3.11 {TclpDeleteFile: still can't remove path} {win} { set msg } {1 EACCES} -test winFCmd-4.1 {TclpCreateDirectory: errno: EACCES} {win 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} {win 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} {win} { +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} {win} { +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} {win} { +test winFCmd-4.5 {TclpCreateDirectory: CreateDirectory succeeds} {win testfile} { cleanup testfile mkdir td1 file type td1 } {directory} -test winFCmd-5.1 {TclpCopyDirectory: calls TraverseWinTree} {win} { +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} {win} { +test winFCmd-6.1 {TclpRemoveDirectory: errno: EACCES} {win testfile testchmod} { cleanup file mkdir td1 testchmod 000 td1 testfile rmdir td1 file exists td1 } {0} -test winFCmd-6.2 {TclpRemoveDirectory: errno: EEXIST} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +test winFCmd-6.9 {TclpRemoveDirectory: errno == EACCES} {win testfile testchmod} { cleanup file mkdir td1 testchmod 000 td1 testfile rmdir td1 file exists td1 } {0} -test winFCmd-6.10 {TclpRemoveDirectory: attr == -1} {win 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} {win 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" } [list 1 [list / EACCES or EEXIST]] -test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {win 95} { +test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {win 95 testfile} { cleanup createfile tf1 set res [catch {testfile rmdir tf1} msg] @@ -613,14 +608,14 @@ test winFCmd-6.12 {TclpRemoveDirectory: errno == EACCES} {win 95} { set msg [list [file tail [lindex $msg 0]] [lindex $msg 1]] list $res $msg } {1 {tf1 ENOTDIR}} -test winFCmd-6.13 {TclpRemoveDirectory: write-protected} {win} { +test winFCmd-6.13 {TclpRemoveDirectory: write-protected} {win testfile testchmod} { cleanup file mkdir td1 testchmod 000 td1 testfile rmdir td1 file exists td1 } {0} -test winFCmd-6.14 {TclpRemoveDirectory: check if empty dir} {win 95} { +test winFCmd-6.14 {TclpRemoveDirectory: check if empty dir} {win 95 testfile} { cleanup file mkdir td1/td2 set res [catch {testfile rmdir td1} msg] @@ -628,79 +623,79 @@ test winFCmd-6.14 {TclpRemoveDirectory: check if empty dir} {win 95} { set msg [list [file tail [lindex $msg 0]] [lindex $msg 1]] list $res $msg } {1 {td1 EEXIST}} -test winFCmd-6.15 {TclpRemoveDirectory: !recursive} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win} { +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} {win 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 EACCES} ; # was EEXIST, but changed for win98. -test winFCmd-7.9 {TraverseWinTree: append \ to source if necessary} {win nt cdrom} { +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} \ - {win} { + {win emptyTest} { # can't make it happen } {} -test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {win} { +test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {win testfile testchmod} { cleanup file mkdir td1 createfile td1/tf1 tf1 @@ -708,36 +703,36 @@ test winFCmd-7.11 {TraverseWinTree: call TraversalCopy: DOTREE_PRED} {win} { testfile cpdir td1 td2 list [file exists td2] [file writable td2] } {1 1} -test winFCmd-7.12 {TraverseWinTree: call TraversalDelete: DOTREE_PRED} {win} { +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} {win} { +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} {win 95} { +test winFCmd-7.14 {TraverseWinTree: append \ to target if necessary} {win 95 testfile} { cleanup file mkdir td1 list [catch {testfile cpdir td1 /} msg] $msg } {1 {/ EEXIST}} -test winFCmd-7.15 {TraverseWinTree: append \ to target if necessary} {win nt} { +test winFCmd-7.15 {TraverseWinTree: append \ to target if necessary} {win nt testfile} { cleanup file mkdir td1 list [catch {testfile cpdir td1 /} msg] $msg } {1 {/ EACCES}} -test winFCmd-7.16 {TraverseWinTree: recurse on files: no files} {win} { +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} {win} { +test winFCmd-7.17 {TraverseWinTree: recurse on files: one file} {win testfile} { cleanup file mkdir td1 createfile td1/td2 @@ -745,7 +740,7 @@ test winFCmd-7.17 {TraverseWinTree: recurse on files: one file} {win} { glob td2/* } {td2/td2} test winFCmd-7.18 {TraverseWinTree: recurse on files: several files and dir} \ - {win} { + {win testfile} { cleanup file mkdir td1 createfile td1/tf1 @@ -756,7 +751,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} {win} { +test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} {win testfile testchmod} { cleanup file mkdir td1 createfile td1/tf1 tf1 @@ -765,43 +760,43 @@ test winFCmd-7.19 {TraverseWinTree: call TraversalCopy: DOTREE_POSTD} {win} { list [file exists td2] [file writable td2] } {1 1} test winFCmd-7.20 {TraverseWinTree: call TraversalDelete: DOTREE_POSTD} \ - {win} { + {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} {win} { +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} {win} { +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} {win} { +test winFCmd-8.2 {TraversalCopy: DOTREE_PRED} {win testfile testchmod} { cleanup file mkdir td1/td2 testchmod 000 td1 testfile cpdir td1 td2 list [file writable td1] [file writable td1/td2] } {0 1} -test winFCmd-8.3 {TraversalCopy: DOTREE_POSTD} {win} { +test winFCmd-8.3 {TraversalCopy: DOTREE_POSTD} {win testfile} { cleanup file mkdir td1 testfile cpdir td1 td2 } {} -test winFCmd-9.1 {TraversalDelete: DOTREE_F} {win} { +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} {win 95} { +test winFCmd-9.2 {TraversalDelete: DOTREE_F} {win 95 testfile} { cleanup file mkdir td1 set fd [open td1/tf1 w] @@ -809,14 +804,14 @@ test winFCmd-9.2 {TraversalDelete: DOTREE_F} {win 95} { close $fd set msg } {1 {td1\tf1 EACCES}} -test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} {win} { +test winFCmd-9.3 {TraversalDelete: DOTREE_PRED} {win testfile testchmod} { cleanup file mkdir td1/td2 testchmod 000 td1 testfile rmdir -force td1 file exists td1 } {0} -test winFCmd-9.4 {TraversalDelete: DOTREE_POSTD} {win} { +test winFCmd-9.4 {TraversalDelete: DOTREE_POSTD} {win testfile} { cleanup file mkdir td1/td1/td3/td4/td5 testfile rmdir -force td1 |