summaryrefslogtreecommitdiffstats
path: root/tests/source.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/source.test')
-rw-r--r--tests/source.test65
1 files changed, 40 insertions, 25 deletions
diff --git a/tests/source.test b/tests/source.test
index 1d64034..0235bd1 100644
--- a/tests/source.test
+++ b/tests/source.test
@@ -11,8 +11,6 @@
#
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-#
-# RCS: @(#) $Id: source.test,v 1.12 2004/03/17 18:14:18 das Exp $
if {[catch {package require tcltest 2.1}]} {
puts stderr "Skipping tests in [info script]. tcltest 2.1 required."
@@ -20,13 +18,8 @@ if {[catch {package require tcltest 2.1}]} {
}
namespace eval ::tcl::test::source {
- namespace import ::tcltest::test
- namespace import ::tcltest::testConstraint
- namespace import ::tcltest::cleanupTests
- namespace import ::tcltest::makeFile
- namespace import ::tcltest::removeFile
- namespace import ::tcltest::customMatch
-
+ namespace import ::tcltest::*
+
test source-1.1 {source command} -setup {
set x "old x value"
set y "old y value"
@@ -42,7 +35,6 @@ test source-1.1 {source command} -setup {
} -cleanup {
removeFile source.file
} -result {22 33 44}
-
test source-1.2 {source command} -setup {
set sourcefile [makeFile {list result} source.file]
} -body {
@@ -50,7 +42,6 @@ test source-1.2 {source command} -setup {
} -cleanup {
removeFile source.file
} -result result
-
test source-1.3 {source command} -setup {
set sourcefile [makeFile {} source.file]
set fd [open $sourcefile w]
@@ -94,7 +85,6 @@ test source-2.3 {source error conditions} -setup {
(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 {
@@ -102,7 +92,6 @@ test source-2.4 {source error conditions} -setup {
} -cleanup {
removeFile source.file
} -returnCodes break
-
test source-2.5 {source error conditions} -setup {
set sourcefile [makeFile {continue} source.file]
} -body {
@@ -110,7 +99,6 @@ test source-2.5 {source error conditions} -setup {
} -cleanup {
removeFile source.file
} -returnCodes continue
-
test source-2.6 {source error conditions} -setup {
set sourcefile [makeFile {} _non_existent_]
removeFile _non_existent_
@@ -119,7 +107,19 @@ test source-2.6 {source error conditions} -setup {
} -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 {
@@ -135,7 +135,6 @@ test source-3.1 {return in middle of source file} -setup {
} -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
@@ -147,7 +146,6 @@ test source-3.2 {return with special code etc.} -setup {
} -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
@@ -161,7 +159,6 @@ test source-3.3 {return with special code etc.} -setup {
} -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
@@ -175,7 +172,6 @@ test source-3.4 {return with special code etc.} -setup {
} -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
@@ -191,6 +187,15 @@ test source-3.5 {return with special code etc.} -setup {
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.
@@ -203,7 +208,6 @@ test source-6.1 {source is binary ok} -setup {
} -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 {
@@ -228,7 +232,6 @@ test source-7.1 {source -encoding test} -setup {
} -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
@@ -248,12 +251,10 @@ test source-7.2 {source -encoding test} -setup {
} -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 {
@@ -261,7 +262,6 @@ test source-7.4 {source -encoding: syntax} -setup {
} -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
@@ -276,7 +276,6 @@ test source-7.5 {source -encoding: correct operation} -setup {
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
@@ -291,7 +290,23 @@ test source-7.6 {source -encoding: mismatch encoding error} -setup {
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: