diff options
Diffstat (limited to 'tests/source.test')
| -rw-r--r-- | tests/source.test | 43 | 
1 files changed, 40 insertions, 3 deletions
| diff --git a/tests/source.test b/tests/source.test index 29d3f2f..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.13 2006/03/21 11:12:29 dkf Exp $  if {[catch {package require tcltest 2.1}]} {      puts stderr "Skipping tests in [info script]. tcltest 2.1 required." @@ -21,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" @@ -109,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 { @@ -176,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. @@ -269,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: | 
