summaryrefslogtreecommitdiffstats
path: root/tcl8.6/tests/source.test
diff options
context:
space:
mode:
Diffstat (limited to 'tcl8.6/tests/source.test')
-rw-r--r--tcl8.6/tests/source.test312
1 files changed, 0 insertions, 312 deletions
diff --git a/tcl8.6/tests/source.test b/tcl8.6/tests/source.test
deleted file mode 100644
index 0235bd1..0000000
--- a/tcl8.6/tests/source.test
+++ /dev/null
@@ -1,312 +0,0 @@
-# Commands covered: source
-#
-# 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) 1991-1993 The Regents of the University of California.
-# Copyright (c) 1994-1996 Sun Microsystems, Inc.
-# Copyright (c) 1998-2000 by Scriptics Corporation.
-# Contributions from Don Porter, NIST, 2003. (not subject to US copyright)
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-if {[catch {package require tcltest 2.1}]} {
- puts stderr "Skipping tests in [info script]. tcltest 2.1 required."
- return
-}
-
-namespace eval ::tcl::test::source {
- namespace import ::tcltest::*
-
-test source-1.1 {source command} -setup {
- set x "old x value"
- set y "old y value"
- set z "old z value"
- set sourcefile [makeFile {
- set x 22
- set y 33
- set z 44
- } source.file]
-} -body {
- source $sourcefile
- list $x $y $z
-} -cleanup {
- removeFile source.file
-} -result {22 33 44}
-test source-1.2 {source command} -setup {
- set sourcefile [makeFile {list result} source.file]
-} -body {
- source $sourcefile
-} -cleanup {
- removeFile source.file
-} -result result
-test source-1.3 {source command} -setup {
- set sourcefile [makeFile {} source.file]
- set fd [open $sourcefile w]
- fconfigure $fd -translation lf
- puts $fd "list a b c \\"
- puts $fd "d e f"
- close $fd
-} -body {
- source $sourcefile
-} -cleanup {
- removeFile source.file
-} -result {a b c d e f}
-
-proc ListGlobMatch {expected actual} {
- if {[llength $expected] != [llength $actual]} {
- return 0
- }
- foreach e $expected a $actual {
- if {![string match $e $a]} {
- return 0
- }
- }
- return 1
-}
-customMatch listGlob [namespace which ListGlobMatch]
-
-test source-2.3 {source error conditions} -setup {
- set sourcefile [makeFile {
- set x 146
- error "error in sourced file"
- set y $x
- } source.file]
-} -body {
- list [catch {source $sourcefile} msg] $msg $::errorInfo
-} -cleanup {
- removeFile source.file
-} -match listGlob -result [list 1 {error in sourced file} \
- {error in sourced file
- while executing
-"error "error in sourced file""
- (file "*source.file" line 3)
- invoked from within
-"source $sourcefile"}]
-test source-2.4 {source error conditions} -setup {
- set sourcefile [makeFile {break} source.file]
-} -body {
- source $sourcefile
-} -cleanup {
- removeFile source.file
-} -returnCodes break
-test source-2.5 {source error conditions} -setup {
- set sourcefile [makeFile {continue} source.file]
-} -body {
- source $sourcefile
-} -cleanup {
- removeFile source.file
-} -returnCodes continue
-test source-2.6 {source error conditions} -setup {
- set sourcefile [makeFile {} _non_existent_]
- removeFile _non_existent_
-} -body {
- list [catch {source $sourcefile} msg] $msg $::errorCode
-} -match listGlob -result [list 1 \
- {couldn't read file "*_non_existent_": no such file or directory} \
- {POSIX ENOENT {no such file or directory}}]
-test source-2.7 {utf-8 with BOM} -setup {
- set sourcefile [makeFile {} source.file]
-} -body {
- set out [open $sourcefile w]
- fconfigure $out -encoding utf-8
- puts $out "\ufeffset y new-y"
- close $out
- set y old-y
- source -encoding utf-8 $sourcefile
- return $y
-} -cleanup {
- removeFile $sourcefile
-} -result {new-y}
-
-test source-3.1 {return in middle of source file} -setup {
- set sourcefile [makeFile {
- set x new-x
- return allDone
- set y new-y
- } source.file]
-} -body {
- set x old-x
- set y old-y
- set z [source $sourcefile]
- list $x $y $z
-} -cleanup {
- removeFile source.file
-} -result {new-x old-y allDone}
-test source-3.2 {return with special code etc.} -setup {
- set sourcefile [makeFile {
- set x new-x
- return -code break "Silly result"
- set y new-y
- } source.file]
-} -body {
- source $sourcefile
-} -cleanup {
- removeFile source.file
-} -returnCodes break -result {Silly result}
-test source-3.3 {return with special code etc.} -setup {
- set sourcefile [makeFile {
- set x new-x
- return -code error "Simulated error"
- set y new-y
- } source.file]
-} -body {
- list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
-} -cleanup {
- removeFile source.file
-} -result {1 {Simulated error} {Simulated error
- while executing
-"source $sourcefile"} NONE}
-test source-3.4 {return with special code etc.} -setup {
- set sourcefile [makeFile {
- set x new-x
- return -code error -errorinfo "Simulated errorInfo stuff"
- set y new-y
- } source.file]
-} -body {
- list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
-} -cleanup {
- removeFile source.file
-} -result {1 {} {Simulated errorInfo stuff
- invoked from within
-"source $sourcefile"} NONE}
-test source-3.5 {return with special code etc.} -setup {
- set sourcefile [makeFile {
- set x new-x
- return -code error -errorinfo "Simulated errorInfo stuff" \
- -errorcode {a b c}
- set y new-y
- } source.file]
-} -body {
- list [catch {source $sourcefile} msg] $msg $::errorInfo $::errorCode
-} -cleanup {
- removeFile source.file
-} -result {1 {} {Simulated errorInfo stuff
- invoked from within
-"source $sourcefile"} {a b c}}
-
-test source-4.1 {continuation line parsing} -setup {
- set sourcefile [makeFile [string map {CL \\\n} {
- format %s "[dict get [info frame 0] type]:CL[dict get [info frame 0] line]CL[dict get [info frame 0] line]CL[dict get [info frame 0] line]"
- }] source.file]
-} -body {
- source $sourcefile
-} -cleanup {
- removeFile source.file
-} -result {source: 3 4 5}
-
-test source-6.1 {source is binary ok} -setup {
- # Note [makeFile] writes in the system encoding.
- # [source] defaults to reading in the system encoding.
- set sourcefile [makeFile [list set x "a b\0c"] source.file]
-} -body {
- set x {}
- source $sourcefile
- string length $x
-} -cleanup {
- removeFile source.file
-} -result 5
-test source-6.2 {source skips everything after Ctrl-Z: Bug 2040} -setup {
- set sourcefile [makeFile "set x ab\32c" source.file]
-} -body {
- set x {}
- source $sourcefile
- string length $x
-} -cleanup {
- removeFile source.file
-} -result 2
-
-test source-7.1 {source -encoding test} -setup {
- set sourcefile [makeFile {} source.file]
- file delete $sourcefile
- set f [open $sourcefile w]
- fconfigure $f -encoding utf-8
- puts $f "set symbol(square-root) \u221A; set x correct"
- close $f
-} -body {
- set x unset
- source -encoding utf-8 $sourcefile
- set x
-} -cleanup {
- removeFile source.file
-} -result correct
-test source-7.2 {source -encoding test} -setup {
- # This tests for bad interactions between [source -encoding]
- # and use of the Control-Z character (\u001A) as a cross-platform
- # EOF character by [source]. Here we write out and the [source] a
- # file that contains the byte \x1A, although not the character \u001A in
- # the indicated encoding.
- set sourcefile [makeFile {} source.file]
- file delete $sourcefile
- set f [open $sourcefile w]
- fconfigure $f -encoding unicode
- puts $f "set symbol(square-root) \u221A; set x correct"
- close $f
-} -body {
- set x unset
- source -encoding unicode $sourcefile
- set x
-} -cleanup {
- removeFile source.file
-} -result correct
-test source-7.3 {source -encoding: syntax} -body {
- # Have to spell out the -encoding option
- source -e utf-8 no_file
-} -returnCodes 1 -match glob -result {bad option*}
-test source-7.4 {source -encoding: syntax} -setup {
- set sourcefile [makeFile {} source.file]
-} -body {
- source -encoding no-such-encoding $sourcefile
-} -cleanup {
- removeFile source.file
-} -returnCodes 1 -match glob -result {unknown encoding*}
-test source-7.5 {source -encoding: correct operation} -setup {
- set sourcefile [makeFile {} source.file]
- file delete $sourcefile
- set f [open $sourcefile w]
- fconfigure $f -encoding utf-8
- puts $f "proc \u20ac {} {return foo}"
- close $f
-} -body {
- source -encoding utf-8 $sourcefile
- \u20ac
-} -cleanup {
- removeFile source.file
- rename \u20ac {}
-} -result foo
-test source-7.6 {source -encoding: mismatch encoding error} -setup {
- set sourcefile [makeFile {} source.file]
- file delete $sourcefile
- set f [open $sourcefile w]
- fconfigure $f -encoding utf-8
- puts $f "proc \u20ac {} {return foo}"
- close $f
-} -body {
- source -encoding ascii $sourcefile
- \u20ac
-} -cleanup {
- removeFile source.file
-} -returnCodes error -match glob -result {invalid command name*}
-
-test source-8.1 {source and coroutine/yield} -setup {
- set sourcefile [makeFile {} source.file]
- file delete $sourcefile
-} -body {
- makeFile {yield 1; yield 2; return 3;} $sourcefile
- coroutine coro apply {f {yield;source $f}} $sourcefile
- list [coro] [coro] [coro] [info exist coro]
-} -cleanup {
- catch {rename coro {}}
- removeFile source.file
-} -result {1 2 3 0}
-
-cleanupTests
-}
-namespace delete ::tcl::test::source
-return
-
-# Local Variables:
-# mode: tcl
-# End: