1# This file tests the tclMacOSXFCmd.c file. 2# 3# This file contains a collection of tests for one or more of the Tcl 4# built-in commands. Sourcing this file into Tcl runs the tests and 5# generates output for errors. No output means no errors were found. 6# 7# Copyright © 2003 Tcl Core Team. 8# 9# See the file "license.terms" for information on usage and redistribution 10# of this file, and for a DISCLAIMER OF ALL WARRANTIES. 11 12if {"::tcltest" ni [namespace children]} { 13 package require tcltest 2.5 14 namespace import -force ::tcltest::* 15} 16 17# These tests really need to be run from a writable directory, which 18# it is assumed [temporaryDirectory] is. 19set oldcwd [pwd] 20cd [temporaryDirectory] 21 22# check whether macosx file attributes are supported 23testConstraint macosxFileAttr 0 24if {[testConstraint unix] && $tcl_platform(os) eq "Darwin"} { 25 catch {file delete -force -- foo.test} 26 close [open foo.test w] 27 catch { 28 file attributes foo.test -creator 29 testConstraint macosxFileAttr 1 30 } 31 file delete -force -- foo.test 32} 33 34test macOSXFCmd-1.1 {MacOSXGetFileAttribute - file not found} {macosxFileAttr notRoot} { 35 catch {file delete -force -- foo.test} 36 list [catch {file attributes foo.test -creator} msg] $msg 37} {1 {could not read "foo.test": no such file or directory}} 38test macOSXFCmd-1.2 {MacOSXGetFileAttribute - creator} {macosxFileAttr notRoot} { 39 catch {file delete -force -- foo.test} 40 close [open foo.test w] 41 list [catch {file attributes foo.test -creator} msg] $msg \ 42 [file delete -force -- foo.test] 43} {0 {} {}} 44test macOSXFCmd-1.3 {MacOSXGetFileAttribute - type} {macosxFileAttr notRoot} { 45 catch {file delete -force -- foo.test} 46 close [open foo.test w] 47 list [catch {file attributes foo.test -type} msg] $msg \ 48 [file delete -force -- foo.test] 49} {0 {} {}} 50test macOSXFCmd-1.4 {MacOSXGetFileAttribute - hidden} {macosxFileAttr notRoot} { 51 catch {file delete -force -- foo.test} 52 close [open foo.test w] 53 list [catch {file attributes foo.test -hidden} msg] $msg \ 54 [file delete -force -- foo.test] 55} {0 0 {}} 56test macOSXFCmd-1.5 {MacOSXGetFileAttribute - rsrclength} {macosxFileAttr notRoot} { 57 catch {file delete -force -- foo.test} 58 close [open foo.test w] 59 list [catch {file attributes foo.test -rsrclength} msg] $msg \ 60 [file delete -force -- foo.test] 61} {0 0 {}} 62 63test macOSXFCmd-2.1 {MacOSXSetFileAttribute - file not found} {macosxFileAttr notRoot} { 64 catch {file delete -force -- foo.test} 65 list [catch {file attributes foo.test -creator FOOC} msg] $msg 66} {1 {could not read "foo.test": no such file or directory}} 67test macOSXFCmd-2.2 {MacOSXSetFileAttribute - creator} {macosxFileAttr notRoot} { 68 catch {file delete -force -- foo.test} 69 close [open foo.test w] 70 list [catch {file attributes foo.test -creator FOOC} msg] $msg \ 71 [catch {file attributes foo.test -creator} msg] $msg \ 72 [file delete -force -- foo.test] 73} {0 {} 0 FOOC {}} 74test macOSXFCmd-2.3 {MacOSXSetFileAttribute - empty creator} {macosxFileAttr notRoot} { 75 catch {file delete -force -- foo.test} 76 close [open foo.test w] 77 list [catch {file attributes foo.test -creator {}} msg] $msg \ 78 [catch {file attributes foo.test -creator} msg] $msg \ 79 [file delete -force -- foo.test] 80} {0 {} 0 {} {}} 81test macOSXFCmd-2.4 {MacOSXSetFileAttribute - type} {macosxFileAttr notRoot} { 82 catch {file delete -force -- foo.test} 83 close [open foo.test w] 84 list [catch {file attributes foo.test -type FOOT} msg] $msg \ 85 [catch {file attributes foo.test -type} msg] $msg \ 86 [file delete -force -- foo.test] 87} {0 {} 0 FOOT {}} 88test macOSXFCmd-2.5 {MacOSXSetFileAttribute - empty type} {macosxFileAttr notRoot} { 89 catch {file delete -force -- foo.test} 90 close [open foo.test w] 91 list [catch {file attributes foo.test -type {}} msg] $msg \ 92 [catch {file attributes foo.test -type} msg] $msg \ 93 [file delete -force -- foo.test] 94} {0 {} 0 {} {}} 95test macOSXFCmd-2.6 {MacOSXSetFileAttribute - hidden} {macosxFileAttr notRoot} { 96 catch {file delete -force -- foo.test} 97 close [open foo.test w] 98 list [catch {file attributes foo.test -hidden 1} msg] $msg \ 99 [catch {file attributes foo.test -hidden} msg] $msg \ 100 [file delete -force -- foo.test] 101} {0 {} 0 1 {}} 102test macOSXFCmd-2.7 {MacOSXSetFileAttribute - rsrclength} {macosxFileAttr notRoot nonPortable} { 103 catch {file delete -force -- foo.test} 104 close [open foo.test w] 105 catch { 106 set f [open foo.test/..namedfork/rsrc w] 107 fconfigure $f -translation lf -eofchar {} 108 puts -nonewline $f "foo" 109 close $f 110 } 111 list [catch {file attributes foo.test -rsrclength} msg] $msg \ 112 [catch {file attributes foo.test -rsrclength 0} msg] $msg \ 113 [catch {file attributes foo.test -rsrclength} msg] $msg \ 114 [file delete -force -- foo.test] 115} {0 3 0 {} 0 0 {}} 116 117test macOSXFCmd-3.1 {MacOSXCopyFileAttributes} {macosxFileAttr notRoot} { 118 catch {file delete -force -- foo.test} 119 catch {file delete -force -- bar.test} 120 close [open foo.test w] 121 catch { 122 file attributes foo.test -creator FOOC -type FOOT -hidden 1 123 set f [open foo.test/..namedfork/rsrc w] 124 fconfigure $f -translation lf -eofchar {} 125 puts -nonewline $f "foo" 126 close $f 127 file copy foo.test bar.test 128 } 129 list [catch {file attributes bar.test -creator} msg] $msg \ 130 [catch {file attributes bar.test -type} msg] $msg \ 131 [catch {file attributes bar.test -hidden} msg] $msg \ 132 [catch {file attributes bar.test -rsrclength} msg] $msg \ 133 [file delete -force -- foo.test bar.test] 134} {0 FOOC 0 FOOT 0 1 0 3 {}} 135 136test macOSXFCmd-4.1 {TclMacOSXMatchType} {macosxFileAttr notRoot} { 137 file mkdir globtest 138 cd globtest 139 foreach f {bar baz foo inv inw .nv reg} { 140 catch {file delete -force -- $f.test} 141 close [open $f.test w] 142 } 143 catch {file delete -force -- dir.test} 144 file mkdir dir.test 145 catch { 146 file attributes bar.test -type FOOT 147 file attributes baz.test -creator FOOC -type FOOT 148 file attributes foo.test -creator FOOC 149 file attributes inv.test -hidden 1 150 file attributes inw.test -hidden 1 -type FOOT 151 file attributes dir.test -hidden 1 152 } 153 set res [list \ 154 [catch {lsort [glob *.test]} msg] $msg \ 155 [catch {lsort [glob -types FOOT *.test]} msg] $msg \ 156 [catch {lsort [glob -types {{macintosh type FOOT}} *.test]} msg] $msg \ 157 [catch {lsort [glob -types FOOTT *.test]} msg] $msg \ 158 [catch {lsort [glob -types {{macintosh type FOOTT}} *.test]} msg] $msg \ 159 [catch {lsort [glob -types {{macintosh type {}}} *.test]} msg] $msg \ 160 [catch {lsort [glob -types {{macintosh creator FOOC}} *.test]} msg] $msg \ 161 [catch {lsort [glob -types {{macintosh creator FOOC} {macintosh type FOOT}} *.test]} msg] $msg \ 162 [catch {lsort [glob -types hidden *.test]} msg] $msg \ 163 [catch {lsort [glob -types {hidden FOOT} *.test]} msg] $msg \ 164 ] 165 cd .. 166 file delete -force globtest 167 set res 168} [list \ 169 0 {bar.test baz.test dir.test foo.test inv.test inw.test reg.test} \ 170 0 {bar.test baz.test inw.test} 0 {bar.test baz.test inw.test} \ 171 1 {bad argument to "-types": FOOTT} \ 172 1 {expected Macintosh OS type but got "FOOTT": } \ 173 0 {foo.test inv.test reg.test} 0 {baz.test foo.test} \ 174 0 baz.test 0 {.nv.test dir.test inv.test inw.test} \ 175 0 inw.test 176] 177 178# cleanup 179cd $oldcwd 180::tcltest::cleanupTests 181return 182