summaryrefslogtreecommitdiffstats
path: root/tests/source.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/source.test')
-rw-r--r--tests/source.test41
1 files changed, 24 insertions, 17 deletions
diff --git a/tests/source.test b/tests/source.test
index 081a129..dc3c2d8 100644
--- a/tests/source.test
+++ b/tests/source.test
@@ -19,7 +19,7 @@ if {[catch {package require tcltest 2.1}]} {
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"
@@ -107,6 +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 {
@@ -174,6 +187,16 @@ 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.
# [source] defaults to reading in the system encoding.
@@ -267,23 +290,7 @@ 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: