os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/source.test
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/source.test Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,323 @@
1.4 +# Commands covered: source
1.5 +#
1.6 +# This file contains a collection of tests for one or more of the Tcl
1.7 +# built-in commands. Sourcing this file into Tcl runs the tests and
1.8 +# generates output for errors. No output means no errors were found.
1.9 +#
1.10 +# Copyright (c) 1991-1993 The Regents of the University of California.
1.11 +# Copyright (c) 1994-1996 Sun Microsystems, Inc.
1.12 +# Copyright (c) 1998-2000 by Scriptics Corporation.
1.13 +# Contributions from Don Porter, NIST, 2003. (not subject to US copyright)
1.14 +#
1.15 +# See the file "license.terms" for information on usage and redistribution
1.16 +# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
1.17 +#
1.18 +# RCS: @(#) $Id: source.test,v 1.8.2.2 2004/02/25 23:38:17 dgp Exp $
1.19 +
1.20 +if {[catch {package require tcltest 2.1}]} {
1.21 + puts stderr "Skipping tests in [info script]. tcltest 2.1 required."
1.22 + return
1.23 +}
1.24 +
1.25 +namespace eval ::tcl::test::source {
1.26 + namespace import ::tcltest::test
1.27 + namespace import ::tcltest::testConstraint
1.28 + namespace import ::tcltest::cleanupTests
1.29 + namespace import ::tcltest::makeFile
1.30 + namespace import ::tcltest::removeFile
1.31 + namespace import ::tcltest::customMatch
1.32 +
1.33 +test source-1.1 {source command} -setup {
1.34 + set x "old x value"
1.35 + set y "old y value"
1.36 + set z "old z value"
1.37 + set sourcefile [makeFile {
1.38 + set x 22
1.39 + set y 33
1.40 + set z 44
1.41 + } source.file]
1.42 +} -body {
1.43 + source $sourcefile
1.44 + list $x $y $z
1.45 +} -cleanup {
1.46 + removeFile source.file
1.47 +} -result {22 33 44}
1.48 +
1.49 +test source-1.2 {source command} -setup {
1.50 + set sourcefile [makeFile {list result} source.file]
1.51 +} -body {
1.52 + source $sourcefile
1.53 +} -cleanup {
1.54 + removeFile source.file
1.55 +} -result result
1.56 +
1.57 +test source-1.3 {source command} -setup {
1.58 + set sourcefile [makeFile {} source.file]
1.59 + set fd [open $sourcefile w]
1.60 + fconfigure $fd -translation lf
1.61 + puts $fd "list a b c \\"
1.62 + puts $fd "d e f"
1.63 + close $fd
1.64 +} -body {
1.65 + source $sourcefile
1.66 +} -cleanup {
1.67 + removeFile source.file
1.68 +} -result {a b c d e f}
1.69 +
1.70 +proc ListGlobMatch {expected actual} {
1.71 + if {[llength $expected] != [llength $actual]} {
1.72 + return 0
1.73 + }
1.74 + foreach e $expected a $actual {
1.75 + if {![string match $e $a]} {
1.76 + return 0
1.77 + }
1.78 + }
1.79 + return 1
1.80 +}
1.81 +customMatch listGlob [namespace which ListGlobMatch]
1.82 +
1.83 +test source-2.3 {source error conditions} -setup {
1.84 + set sourcefile [makeFile {
1.85 + set x 146
1.86 + error "error in sourced file"
1.87 + set y $x
1.88 + } source.file]
1.89 +} -body {
1.90 + list [catch {source $sourcefile} msg] $msg $::errorInfo
1.91 +} -cleanup {
1.92 + removeFile source.file
1.93 +} -match listGlob -result [list 1 {error in sourced file} \
1.94 + {error in sourced file
1.95 + while executing
1.96 +"error "error in sourced file""
1.97 + (file "*source.file" line 3)
1.98 + invoked from within
1.99 +"source $sourcefile"}]
1.100 +
1.101 +test source-2.4 {source error conditions} -setup {
1.102 + set sourcefile [makeFile {break} source.file]
1.103 +} -body {
1.104 + source $sourcefile
1.105 +} -cleanup {
1.106 + removeFile source.file
1.107 +} -returnCodes break
1.108 +
1.109 +test source-2.5 {source error conditions} -setup {
1.110 + set sourcefile [makeFile {continue} source.file]
1.111 +} -body {
1.112 + source $sourcefile
1.113 +} -cleanup {
1.114 + removeFile source.file
1.115 +} -returnCodes continue
1.116 +
1.117 +test source-2.6 {source error conditions} -setup {
1.118 + set sourcefile [makeFile {} _non_existent_]
1.119 + removeFile _non_existent_
1.120 +} -body {
1.121 + list [catch {source $sourcefile} msg] $msg $::errorCode
1.122 +} -match listGlob -result [list 1 \
1.123 + {couldn't read file "*_non_existent_": no such file or directory} \
1.124 + {POSIX ENOENT {no such file or directory}}]
1.125 +
1.126 +
1.127 +test source-3.1 {return in middle of source file} -setup {
1.128 + set sourcefile [makeFile {
1.129 + set x new-x
1.130 + return allDone
1.131 + set y new-y
1.132 + } source.file]
1.133 +} -body {
1.134 + set x old-x
1.135 + set y old-y
1.136 + set z [source $sourcefile]
1.137 + list $x $y $z
1.138 +} -cleanup {
1.139 + removeFile source.file
1.140 +} -result {new-x old-y allDone}
1.141 +
1.142 +test source-3.2 {return with special code etc.} -setup {
1.143 + set sourcefile [makeFile {
1.144 + set x new-x
1.145 + return -code break "Silly result"
1.146 + set y new-y
1.147 + } source.file]
1.148 +} -body {
1.149 + source $sourcefile
1.150 +} -cleanup {
1.151 + removeFile source.file
1.152 +} -returnCodes break -result {Silly result}
1.153 +
1.154 +test source-3.3 {return with special code etc.} -setup {
1.155 + set sourcefile [makeFile {
1.156 + set x new-x
1.157 + return -code error "Simulated error"
1.158 + set y new-y
1.159 + } source.file]
1.160 +} -body {
1.161 + list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
1.162 +} -cleanup {
1.163 + removeFile source.file
1.164 +} -result {1 {Simulated error} {Simulated error
1.165 + while executing
1.166 +"source $sourcefile"} NONE}
1.167 +
1.168 +test source-3.4 {return with special code etc.} -setup {
1.169 + set sourcefile [makeFile {
1.170 + set x new-x
1.171 + return -code error -errorinfo "Simulated errorInfo stuff"
1.172 + set y new-y
1.173 + } source.file]
1.174 +} -body {
1.175 + list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
1.176 +} -cleanup {
1.177 + removeFile source.file
1.178 +} -result {1 {} {Simulated errorInfo stuff
1.179 + invoked from within
1.180 +"source $sourcefile"} NONE}
1.181 +
1.182 +test source-3.5 {return with special code etc.} -setup {
1.183 + set sourcefile [makeFile {
1.184 + set x new-x
1.185 + return -code error -errorinfo "Simulated errorInfo stuff" \
1.186 + -errorcode {a b c}
1.187 + set y new-y
1.188 + } source.file]
1.189 +} -body {
1.190 + list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
1.191 +} -cleanup {
1.192 + removeFile source.file
1.193 +} -result {1 {} {Simulated errorInfo stuff
1.194 + invoked from within
1.195 +"source $sourcefile"} {a b c}}
1.196 +
1.197 +
1.198 +# Test for the Macintosh specfic features of the source command
1.199 +test source-4.1 {source error conditions} -constraints macOnly -body {
1.200 + source -rsrc _no_exist_
1.201 +} -result {The resource "_no_exist_" could not be loaded from application.} \
1.202 + -returnCodes error
1.203 +
1.204 +test source-4.2 {source error conditions} -constraints macOnly -body {
1.205 + source -rsrcid bad_id
1.206 +} -returnCodes error -result {expected integer but got "bad_id"}
1.207 +
1.208 +test source-4.3 {source error conditions} -constraints macOnly -body {
1.209 + source -rsrc rsrcName fileName extra
1.210 +} -returnCodes error -result {wrong # args: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
1.211 +
1.212 +test source-4.4 {source error conditions} -constraints macOnly -body {
1.213 + source non_switch rsrcName
1.214 +} -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
1.215 +
1.216 +test source-4.5 {source error conditions} -constraints macOnly -body {
1.217 + source -bad_switch argument
1.218 +} -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
1.219 +
1.220 +
1.221 +testConstraint testWriteTextResource \
1.222 + [llength [info commands testWriteTextResource]]
1.223 +
1.224 +test source-5.1 {source resource files} -constraints macOnly -setup {
1.225 + set sourcefile [makeFile {} bad_file]
1.226 + removeFile bad_file
1.227 +} -body {
1.228 + source -rsrc rsrcName $sourcefile
1.229 +} -returnCodes error -match glob -result {Error finding the file: "*bad_file".}
1.230 +
1.231 +test source-5.2 {source resource files} -constraints macOnly -setup {
1.232 + set sourcefile [makeFile {return} source.file]
1.233 +} -body {
1.234 + source -rsrc rsrcName $sourcefile
1.235 +} -cleanup {
1.236 + removeFile source.file
1.237 +} -returnCodes error -match glob \
1.238 + -result {Error reading the file: "*source.file".}
1.239 +
1.240 +test source-5.3 {source resource files} -constraints {
1.241 + macOnly testWriteTextResource
1.242 +} -setup {
1.243 + set msg2 unset
1.244 + set rsrcFile [makeFile {} rsrc.file]
1.245 + removeFile rsrc.file
1.246 + testWriteTextResource -rsrc rsrcName -file $rsrc.file {set msg2 ok; return}
1.247 +} -body {
1.248 + set result [catch {source -rsrc rsrcName rsrc.file} msg]
1.249 + list $msg2 $result $msg
1.250 +} -cleanup {
1.251 + removeFile rsrc.file
1.252 +} -result [list ok 0 {}]
1.253 +
1.254 +test source-5.4 {source resource files} -constraints {
1.255 + macOnly testWriteTextResource
1.256 +} -setup {
1.257 + set msg2 unset
1.258 + set rsrsFile [makeFile {} rsrc.file]
1.259 + removeFile rsrc.file
1.260 + testWriteTextResource -rsrc fileRsrcName \
1.261 + -file $rsrcFile {set msg2 ok; return}
1.262 +} -body {
1.263 + source -rsrc fileRsrcName $rsrcFile
1.264 + set result [catch {source -rsrc fileRsrcName} msg]
1.265 + list $msg2 $result $msg
1.266 +} -cleanup {
1.267 + removeFile rsrc.file
1.268 +} -result [list ok 1 {The resource "fileRsrcName" could not be loaded from application.}]
1.269 +
1.270 +test source-5.5 {source resource files} -constraints {
1.271 + macOnly testWriteTextResource
1.272 +} -setup {
1.273 + set msg2 unset
1.274 + set rsrcFile [makeFile {} rsrc.file]
1.275 + removeFile rsrc.file
1.276 + testWriteTextResource -rsrcid 200 \
1.277 + -file $rsrcFile {set msg2 hello; set msg3 bye}
1.278 +} -body {
1.279 + set result [catch {source -rsrcid 200 $rsrcFile} msg]
1.280 + list $msg2 $result $msg
1.281 +} -cleanup {
1.282 + removeFile rsrc.file
1.283 +} -result [list hello 0 bye]
1.284 +
1.285 +test source-5.6 {source resource files} -constraints {
1.286 + macOnly testWriteTextResource
1.287 +} -setup {
1.288 + set msg2 unset
1.289 + set rsrcFile [makeFile {} rsrc.file]
1.290 + removeFile rsrc.file
1.291 + testWriteTextResource -rsrcid 200 \
1.292 + -file $rsrcFile {set msg2 hello; error bad; set msg3 bye}
1.293 +} -body {
1.294 + set result [catch {source -rsrcid 200 rsrc.file} msg]
1.295 + list $msg2 $result $msg
1.296 +} -cleanup {
1.297 + removeFile rsrc.file
1.298 +} -result [list hello 1 bad]
1.299 +
1.300 +
1.301 +test source-6.1 {source is binary ok} -setup {
1.302 + # Note [makeFile] writes in the system encoding.
1.303 + # [source] defaults to reading in the system encoding.
1.304 + set sourcefile [makeFile [list set x "a b\0c"] source.file]
1.305 +} -body {
1.306 + set x {}
1.307 + source $sourcefile
1.308 + string length $x
1.309 +} -cleanup {
1.310 + removeFile source.file
1.311 +} -result 5
1.312 +
1.313 +test source-6.2 {source skips everything after Ctrl-Z: Bug 2040} -setup {
1.314 + set sourcefile [makeFile "set x ab\32c" source.file]
1.315 +} -body {
1.316 + set x {}
1.317 + source $sourcefile
1.318 + string length $x
1.319 +} -cleanup {
1.320 + removeFile source.file
1.321 +} -result 2
1.322 +
1.323 +cleanupTests
1.324 +}
1.325 +namespace delete ::tcl::test::source
1.326 +return