diff options
author | vincentdarley <vincentdarley> | 2002-03-24 11:41:48 (GMT) |
---|---|---|
committer | vincentdarley <vincentdarley> | 2002-03-24 11:41:48 (GMT) |
commit | d7fcb90540b8bbb6b22dd2ddbddcd14abc8d382c (patch) | |
tree | 9e9a209ca39c12dd8d45b40c876c1478bd022c1a /tests/fileSystem.test | |
parent | 6b2f093c42f3559f40f1c82297d09f5388d596f6 (diff) | |
download | tcl-d7fcb90540b8bbb6b22dd2ddbddcd14abc8d382c.zip tcl-d7fcb90540b8bbb6b22dd2ddbddcd14abc8d382c.tar.gz tcl-d7fcb90540b8bbb6b22dd2ddbddcd14abc8d382c.tar.bz2 |
4 fs fixes
Diffstat (limited to 'tests/fileSystem.test')
-rw-r--r-- | tests/fileSystem.test | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/tests/fileSystem.test b/tests/fileSystem.test new file mode 100644 index 0000000..180482b --- /dev/null +++ b/tests/fileSystem.test @@ -0,0 +1,157 @@ +# This file tests the filesystem and vfs internals. +# +# This file contains a collection of tests for one or more of the Tcl +# built-in commands. Sourcing this file into Tcl runs the tests and +# generates output for errors. No output means no errors were found. +# +# Copyright (c) 2002 Vincent Darley. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. + +if {[lsearch [namespace children] ::tcltest] == -1} { + package require tcltest + namespace import -force ::tcltest::* +} + +makeFile "test file" gorp.file +makeDirectory dir.file +makeFile "test file in directory" [file join dir.file inside.file] + +# It would be good to be able to make these work on MacOS too. +# If we added 'file link from to' we could easily do that. +catch {exec ln -s gorp.file link.file} +catch {exec ln -s inside.file dir.file/linkinside.file} +catch {exec ln -s dir.file dir.link} + +test filesystem-1.0 {link normalisation} {unixOnly} { + string equal [file normalize gorp.file] [file normalize link.file] +} {0} + +test filesystem-1.1 {link normalisation} {unixOnly} { + string equal [file normalize dir.file] [file normalize dir.link] +} {0} + +test filesystem-1.2 {link normalisation} {unixOnly} { + string equal [file normalize gorp.file/foo] [file normalize link.file/foo] +} {1} + +test filesystem-1.3 {link normalisation} {unixOnly} { + string equal [file normalize dir.file/foo] [file normalize dir.link/foo] +} {1} + +test filesystem-1.4 {link normalisation} {unixOnly} { + string equal [file normalize dir.file/inside.file] [file normalize dir.link/inside.file] +} {1} + +test filesystem-1.5 {link normalisation} {unixOnly} { + string equal [file normalize dir.file/linkinside.file] [file normalize dir.file/linkinside.file] +} {1} + +test filesystem-1.6 {link normalisation} {unixOnly} { + string equal [file normalize dir.file/linkinside.file] [file normalize dir.link/inside.file] +} {0} + +test filesystem-1.7 {link normalisation} {unixOnly} { + string equal [file normalize dir.link/linkinside.file/foo] [file normalize dir.file/inside.file/foo] +} {1} + +test filesystem-1.8 {link normalisation} {unixOnly} { + string equal [file normalize dir.file/linkinside.filefoo] [file normalize dir.link/inside.filefoo] +} {0} + +file delete -force gorp.file link.file dir.file dir.link + +test filesystem-2.0 {new native path} {unixOnly} { + foreach f [lsort [glob -nocomplain /usr/bin/c*]] { + catch {file readlink $f} + } + # If we reach here we've succeeded. We used to crash above. + expr 1 +} {1} + +# Make sure the testfilesystem hasn't been registered. +while {![catch {testfilesystem 0}]} {} + +test filesystem-3.0 {Tcl_FSRegister} { + testfilesystem 1 +} {registered} + +test filesystem-3.1 {Tcl_FSUnregister} { + testfilesystem 0 +} {unregistered} + +test filesystem-3.2 {Tcl_FSUnregister} { + list [catch {testfilesystem 0} err] $err +} {1 failed} + +test filesystem-3.3 {Tcl_FSRegister} { + testfilesystem 1 + testfilesystem 1 + testfilesystem 0 + testfilesystem 0 +} {unregistered} + +test filesystem-3.4 {Tcl_FSRegister} { + testfilesystem 1 + file system bar +} {reporting} + +test filesystem-3.5 {Tcl_FSUnregister} { + testfilesystem 0 + file system bar +} {native} + +test filesystem-4.0 {testfilesystem} { + -match glob + -body { + testfilesystem 1 + set filesystemReport {} + file exists foo + testfilesystem 0 + set filesystemReport + } + -result {* {access foo}} +} + +test filesystem-4.1 {testfilesystem} { + -match glob + -body { + testfilesystem 1 + set filesystemReport {} + catch {file stat foo bar} + testfilesystem 0 + set filesystemReport + } + -result {* {stat foo}} +} + +test filesystem-4.2 {testfilesystem} { + -match glob + -body { + testfilesystem 1 + set filesystemReport {} + catch {file lstat foo bar} + testfilesystem 0 + set filesystemReport + } + -result {* {lstat foo}} +} + +test filesystem-4.3 {testfilesystem} { + -match glob + -body { + testfilesystem 1 + set filesystemReport {} + catch {glob *} + testfilesystem 0 + set filesystemReport + } + -result {* {matchindirectory */tests/} *} +} + +catch {unset filesystemReport} +# Make sure the testfilesystem hasn't been registered. +while {![catch {testfilesystem 0}]} {} + + |