os/persistentdata/persistentstorage/sqlite3api/TEST/TCL/tcldistribution/tests/source.test
First public contribution.
1 # Commands covered: source
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.
7 # Copyright (c) 1991-1993 The Regents of the University of California.
8 # Copyright (c) 1994-1996 Sun Microsystems, Inc.
9 # Copyright (c) 1998-2000 by Scriptics Corporation.
10 # Contributions from Don Porter, NIST, 2003. (not subject to US copyright)
12 # See the file "license.terms" for information on usage and redistribution
13 # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
15 # RCS: @(#) $Id: source.test,v 1.8.2.2 2004/02/25 23:38:17 dgp Exp $
17 if {[catch {package require tcltest 2.1}]} {
18 puts stderr "Skipping tests in [info script]. tcltest 2.1 required."
22 namespace eval ::tcl::test::source {
23 namespace import ::tcltest::test
24 namespace import ::tcltest::testConstraint
25 namespace import ::tcltest::cleanupTests
26 namespace import ::tcltest::makeFile
27 namespace import ::tcltest::removeFile
28 namespace import ::tcltest::customMatch
30 test source-1.1 {source command} -setup {
34 set sourcefile [makeFile {
43 removeFile source.file
46 test source-1.2 {source command} -setup {
47 set sourcefile [makeFile {list result} source.file]
51 removeFile source.file
54 test source-1.3 {source command} -setup {
55 set sourcefile [makeFile {} source.file]
56 set fd [open $sourcefile w]
57 fconfigure $fd -translation lf
58 puts $fd "list a b c \\"
64 removeFile source.file
65 } -result {a b c d e f}
67 proc ListGlobMatch {expected actual} {
68 if {[llength $expected] != [llength $actual]} {
71 foreach e $expected a $actual {
72 if {![string match $e $a]} {
78 customMatch listGlob [namespace which ListGlobMatch]
80 test source-2.3 {source error conditions} -setup {
81 set sourcefile [makeFile {
83 error "error in sourced file"
87 list [catch {source $sourcefile} msg] $msg $::errorInfo
89 removeFile source.file
90 } -match listGlob -result [list 1 {error in sourced file} \
91 {error in sourced file
93 "error "error in sourced file""
94 (file "*source.file" line 3)
96 "source $sourcefile"}]
98 test source-2.4 {source error conditions} -setup {
99 set sourcefile [makeFile {break} source.file]
103 removeFile source.file
106 test source-2.5 {source error conditions} -setup {
107 set sourcefile [makeFile {continue} source.file]
111 removeFile source.file
112 } -returnCodes continue
114 test source-2.6 {source error conditions} -setup {
115 set sourcefile [makeFile {} _non_existent_]
116 removeFile _non_existent_
118 list [catch {source $sourcefile} msg] $msg $::errorCode
119 } -match listGlob -result [list 1 \
120 {couldn't read file "*_non_existent_": no such file or directory} \
121 {POSIX ENOENT {no such file or directory}}]
124 test source-3.1 {return in middle of source file} -setup {
125 set sourcefile [makeFile {
133 set z [source $sourcefile]
136 removeFile source.file
137 } -result {new-x old-y allDone}
139 test source-3.2 {return with special code etc.} -setup {
140 set sourcefile [makeFile {
142 return -code break "Silly result"
148 removeFile source.file
149 } -returnCodes break -result {Silly result}
151 test source-3.3 {return with special code etc.} -setup {
152 set sourcefile [makeFile {
154 return -code error "Simulated error"
158 list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
160 removeFile source.file
161 } -result {1 {Simulated error} {Simulated error
163 "source $sourcefile"} NONE}
165 test source-3.4 {return with special code etc.} -setup {
166 set sourcefile [makeFile {
168 return -code error -errorinfo "Simulated errorInfo stuff"
172 list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
174 removeFile source.file
175 } -result {1 {} {Simulated errorInfo stuff
177 "source $sourcefile"} NONE}
179 test source-3.5 {return with special code etc.} -setup {
180 set sourcefile [makeFile {
182 return -code error -errorinfo "Simulated errorInfo stuff" \
187 list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
189 removeFile source.file
190 } -result {1 {} {Simulated errorInfo stuff
192 "source $sourcefile"} {a b c}}
195 # Test for the Macintosh specfic features of the source command
196 test source-4.1 {source error conditions} -constraints macOnly -body {
197 source -rsrc _no_exist_
198 } -result {The resource "_no_exist_" could not be loaded from application.} \
201 test source-4.2 {source error conditions} -constraints macOnly -body {
202 source -rsrcid bad_id
203 } -returnCodes error -result {expected integer but got "bad_id"}
205 test source-4.3 {source error conditions} -constraints macOnly -body {
206 source -rsrc rsrcName fileName extra
207 } -returnCodes error -result {wrong # args: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
209 test source-4.4 {source error conditions} -constraints macOnly -body {
210 source non_switch rsrcName
211 } -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
213 test source-4.5 {source error conditions} -constraints macOnly -body {
214 source -bad_switch argument
215 } -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
218 testConstraint testWriteTextResource \
219 [llength [info commands testWriteTextResource]]
221 test source-5.1 {source resource files} -constraints macOnly -setup {
222 set sourcefile [makeFile {} bad_file]
225 source -rsrc rsrcName $sourcefile
226 } -returnCodes error -match glob -result {Error finding the file: "*bad_file".}
228 test source-5.2 {source resource files} -constraints macOnly -setup {
229 set sourcefile [makeFile {return} source.file]
231 source -rsrc rsrcName $sourcefile
233 removeFile source.file
234 } -returnCodes error -match glob \
235 -result {Error reading the file: "*source.file".}
237 test source-5.3 {source resource files} -constraints {
238 macOnly testWriteTextResource
241 set rsrcFile [makeFile {} rsrc.file]
243 testWriteTextResource -rsrc rsrcName -file $rsrc.file {set msg2 ok; return}
245 set result [catch {source -rsrc rsrcName rsrc.file} msg]
246 list $msg2 $result $msg
249 } -result [list ok 0 {}]
251 test source-5.4 {source resource files} -constraints {
252 macOnly testWriteTextResource
255 set rsrsFile [makeFile {} rsrc.file]
257 testWriteTextResource -rsrc fileRsrcName \
258 -file $rsrcFile {set msg2 ok; return}
260 source -rsrc fileRsrcName $rsrcFile
261 set result [catch {source -rsrc fileRsrcName} msg]
262 list $msg2 $result $msg
265 } -result [list ok 1 {The resource "fileRsrcName" could not be loaded from application.}]
267 test source-5.5 {source resource files} -constraints {
268 macOnly testWriteTextResource
271 set rsrcFile [makeFile {} rsrc.file]
273 testWriteTextResource -rsrcid 200 \
274 -file $rsrcFile {set msg2 hello; set msg3 bye}
276 set result [catch {source -rsrcid 200 $rsrcFile} msg]
277 list $msg2 $result $msg
280 } -result [list hello 0 bye]
282 test source-5.6 {source resource files} -constraints {
283 macOnly testWriteTextResource
286 set rsrcFile [makeFile {} rsrc.file]
288 testWriteTextResource -rsrcid 200 \
289 -file $rsrcFile {set msg2 hello; error bad; set msg3 bye}
291 set result [catch {source -rsrcid 200 rsrc.file} msg]
292 list $msg2 $result $msg
295 } -result [list hello 1 bad]
298 test source-6.1 {source is binary ok} -setup {
299 # Note [makeFile] writes in the system encoding.
300 # [source] defaults to reading in the system encoding.
301 set sourcefile [makeFile [list set x "a b\0c"] source.file]
307 removeFile source.file
310 test source-6.2 {source skips everything after Ctrl-Z: Bug 2040} -setup {
311 set sourcefile [makeFile "set x ab\32c" source.file]
317 removeFile source.file
322 namespace delete ::tcl::test::source