summaryrefslogtreecommitdiffstats
path: root/tests/source.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/source.test')
-rw-r--r--tests/source.test200
1 files changed, 75 insertions, 125 deletions
diff --git a/tests/source.test b/tests/source.test
index 06d6b51..641838c 100644
--- a/tests/source.test
+++ b/tests/source.test
@@ -18,12 +18,7 @@ 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"
@@ -40,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 {
@@ -48,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]
@@ -92,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 {
@@ -100,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 {
@@ -108,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_
@@ -117,21 +107,18 @@ 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]
- set saveencoding [encoding system]
} -body {
- encoding system utf-8
set out [open $sourcefile w]
+ fconfigure $out -encoding utf-8
puts $out "\ufeffset y new-y"
close $out
set y old-y
- source $sourcefile
+ source -encoding utf-8 $sourcefile
return $y
} -cleanup {
removeFile $sourcefile
- encoding system $saveencoding
} -result {new-y}
test source-3.1 {return in middle of source file} -setup {
@@ -148,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
@@ -160,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
@@ -174,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
@@ -188,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
@@ -204,110 +187,6 @@ test source-3.5 {return with special code etc.} -setup {
invoked from within
"source $sourcefile"} {a b c}}
-
-# Test for the Macintosh specfic features of the source command
-test source-4.1 {source error conditions} -constraints macOnly -body {
- source -rsrc _no_exist_
-} -result {The resource "_no_exist_" could not be loaded from application.} \
- -returnCodes error
-
-test source-4.2 {source error conditions} -constraints macOnly -body {
- source -rsrcid bad_id
-} -returnCodes error -result {expected integer but got "bad_id"}
-
-test source-4.3 {source error conditions} -constraints macOnly -body {
- source -rsrc rsrcName fileName extra
-} -returnCodes error -result {wrong # args: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
-
-test source-4.4 {source error conditions} -constraints macOnly -body {
- source non_switch rsrcName
-} -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
-
-test source-4.5 {source error conditions} -constraints macOnly -body {
- source -bad_switch argument
-} -returnCodes error -result {bad argument: should be "source fileName" or "source -rsrc name ?fileName?" or "source -rsrcid id ?fileName?" or "source -encoding name fileName"}
-
-
-testConstraint testWriteTextResource \
- [llength [info commands testWriteTextResource]]
-
-test source-5.1 {source resource files} -constraints macOnly -setup {
- set sourcefile [makeFile {} bad_file]
- removeFile bad_file
-} -body {
- source -rsrc rsrcName $sourcefile
-} -returnCodes error -match glob -result {Error finding the file: "*bad_file".}
-
-test source-5.2 {source resource files} -constraints macOnly -setup {
- set sourcefile [makeFile {return} source.file]
-} -body {
- source -rsrc rsrcName $sourcefile
-} -cleanup {
- removeFile source.file
-} -returnCodes error -match glob \
- -result {Error reading the file: "*source.file".}
-
-test source-5.3 {source resource files} -constraints {
- macOnly testWriteTextResource
-} -setup {
- set msg2 unset
- set rsrcFile [makeFile {} rsrc.file]
- removeFile rsrc.file
- testWriteTextResource -rsrc rsrcName -file $rsrc.file {set msg2 ok; return}
-} -body {
- set result [catch {source -rsrc rsrcName rsrc.file} msg]
- list $msg2 $result $msg
-} -cleanup {
- removeFile rsrc.file
-} -result [list ok 0 {}]
-
-test source-5.4 {source resource files} -constraints {
- macOnly testWriteTextResource
-} -setup {
- set msg2 unset
- set rsrsFile [makeFile {} rsrc.file]
- removeFile rsrc.file
- testWriteTextResource -rsrc fileRsrcName \
- -file $rsrcFile {set msg2 ok; return}
-} -body {
- source -rsrc fileRsrcName $rsrcFile
- set result [catch {source -rsrc fileRsrcName} msg]
- list $msg2 $result $msg
-} -cleanup {
- removeFile rsrc.file
-} -result [list ok 1 {The resource "fileRsrcName" could not be loaded from application.}]
-
-test source-5.5 {source resource files} -constraints {
- macOnly testWriteTextResource
-} -setup {
- set msg2 unset
- set rsrcFile [makeFile {} rsrc.file]
- removeFile rsrc.file
- testWriteTextResource -rsrcid 200 \
- -file $rsrcFile {set msg2 hello; set msg3 bye}
-} -body {
- set result [catch {source -rsrcid 200 $rsrcFile} msg]
- list $msg2 $result $msg
-} -cleanup {
- removeFile rsrc.file
-} -result [list hello 0 bye]
-
-test source-5.6 {source resource files} -constraints {
- macOnly testWriteTextResource
-} -setup {
- set msg2 unset
- set rsrcFile [makeFile {} rsrc.file]
- removeFile rsrc.file
- testWriteTextResource -rsrcid 200 \
- -file $rsrcFile {set msg2 hello; error bad; set msg3 bye}
-} -body {
- set result [catch {source -rsrcid 200 rsrc.file} msg]
- list $msg2 $result $msg
-} -cleanup {
- removeFile rsrc.file
-} -result [list hello 1 bad]
-
-
test source-6.1 {source is binary ok} -setup {
# Note [makeFile] writes in the system encoding.
# [source] defaults to reading in the system encoding.
@@ -319,7 +198,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 {
@@ -330,6 +208,78 @@ test source-6.2 {source skips everything after Ctrl-Z: Bug 2040} -setup {
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*}
+
cleanupTests
}
namespace delete ::tcl::test::source