summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2020-12-01 15:43:42 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2020-12-01 15:43:42 (GMT)
commit922d2fbda5d4b6529afa0c1a2c961cbf6f7d5eeb (patch)
tree5749eb741d308d4ffe7f178044a5a6ee70c0f8ff
parent510be8916301c834024c2643180be264a91f27cb (diff)
parent7c3b884ac2d10d1ca50e15b96506b6eda5e04442 (diff)
downloadtcl-922d2fbda5d4b6529afa0c1a2c961cbf6f7d5eeb.zip
tcl-922d2fbda5d4b6529afa0c1a2c961cbf6f7d5eeb.tar.gz
tcl-922d2fbda5d4b6529afa0c1a2c961cbf6f7d5eeb.tar.bz2
Merge 8.7
-rw-r--r--library/tcltest/tcltest.tcl23
-rw-r--r--tests/encoding.test24
2 files changed, 30 insertions, 17 deletions
diff --git a/library/tcltest/tcltest.tcl b/library/tcltest/tcltest.tcl
index 285a33d..33ad322 100644
--- a/library/tcltest/tcltest.tcl
+++ b/library/tcltest/tcltest.tcl
@@ -41,7 +41,9 @@ namespace eval tcltest {
outputChannel testConstraint
# Export commands that are duplication (candidates for deprecation)
- namespace export bytestring ;# dups [encoding convertfrom identity]
+ if {![package vsatisfies [package provide Tcl] 8.7-]} {
+ namespace export bytestring ;# dups [encoding convertfrom identity]
+ }
namespace export debug ;# [configure -debug]
namespace export errorFile ;# [configure -errfile]
namespace export limitConstraints ;# [configure -limitconstraints]
@@ -1269,7 +1271,7 @@ proc tcltest::DefineConstraintInitializers {} {
ConstraintInitializer nonBlockFiles {
set code [expr {[catch {set f [open defs r]}]
- || [catch {chan configure $f -blocking off}]}]
+ || [catch {fconfigure $f -blocking off}]}]
catch {close $f}
set code
}
@@ -3079,7 +3081,10 @@ proc tcltest::makeFile {contents name {directory ""}} {
putting ``$contents'' into $fullName"
set fd [open $fullName w]
- chan configure $fd -translation lf
+ fconfigure $fd -translation lf
+ if {[package vsatisfies [package provide Tcl] 8.7-]} {
+ fconfigure $fd -encoding utf-8
+ }
if {[string index $contents end] eq "\n"} {
puts -nonewline $fd $contents
} else {
@@ -3228,6 +3233,9 @@ proc tcltest::viewFile {name {directory ""}} {
}
set fullName [file join $directory $name]
set f [open $fullName]
+ if {[package vsatisfies [package provide Tcl] 8.7-]} {
+ fconfigure $f -encoding utf-8
+ }
set data [read -nonewline $f]
close $f
return $data
@@ -3249,6 +3257,9 @@ proc tcltest::viewFile {name {directory ""}} {
# construct improperly formed strings in this manner, because it involves
# exposing that Tcl uses UTF-8 internally.
#
+# This function doesn't work any more in Tcl 8.7, since the 'identity'
+# is gone (TIP #345)
+#
# Arguments:
# string being converted
#
@@ -3258,8 +3269,10 @@ proc tcltest::viewFile {name {directory ""}} {
# Side effects:
# None
-proc tcltest::bytestring {string} {
- return [encoding convertfrom identity $string]
+if {![package vsatisfies [package provide Tcl] 8.7-]} {
+ proc tcltest::bytestring {string} {
+ return [encoding convertfrom identity $string]
+ }
}
# tcltest::OpenFiles --
diff --git a/tests/encoding.test b/tests/encoding.test
index f569b69..e2a1348 100644
--- a/tests/encoding.test
+++ b/tests/encoding.test
@@ -535,17 +535,17 @@ test encoding-24.2 {EscapeFreeProc on open channels} {exec} {
viewable [runInSubprocess {
encoding system cp1252; # Bug #2891556 crash revelator
fconfigure stdout -encoding iso2022-jp
- puts ab乎\u68d9g
+ puts ab乎棙g
set env(TCL_FINALIZE_ON_EXIT) 1
exit
}]
-} "ab\x1b\$B8C\x1b\$(DD%\x1b(Bg (ab\\u001b\$B8C\\u001b\$(DD%\\u001b(Bg)"
+} "ab\x1B\$B8C\x1B\$(DD%\x1B(Bg (ab\\u001b\$B8C\\u001b\$(DD%\\u001b(Bg)"
test encoding-24.3 {EscapeFreeProc on open channels} {stdio} {
# Bug #219314 - if we don't free escape encodings correctly on channel
# closure, we go boom
set file [makeFile {
encoding system iso2022-jp
- set a "乎\u4e5e\u4e5f"; # 3 Japanese Kanji letters
+ set a "乎乞也"; # 3 Japanese Kanji letters
puts $a
} iso2022.tcl]
set f [open "|[list [interpreter] $file]"]
@@ -554,31 +554,31 @@ test encoding-24.3 {EscapeFreeProc on open channels} {stdio} {
close $f
removeFile iso2022.tcl
list $count [viewable $line]
-} [list 3 "乎\u4e5e\u4e5f (\\u4e4e\\u4e5e\\u4e5f)"]
+} [list 3 "乎乞也 (\\u4e4e\\u4e5e\\u4e5f)"]
test encoding-24.4 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xc0\x80"]
+ string length [encoding convertfrom utf-8 "\xC0\x80"]
} 1
test encoding-24.5 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xc0\x81"]
+ string length [encoding convertfrom utf-8 "\xC0\x81"]
} 2
test encoding-24.6 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xc1\xbf"]
+ string length [encoding convertfrom utf-8 "\xC1\xBF"]
} 2
test encoding-24.7 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xc2\x80"]
+ string length [encoding convertfrom utf-8 "\xC2\x80"]
} 1
test encoding-24.8 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xe0\x80\x80"]
+ string length [encoding convertfrom utf-8 "\xE0\x80\x80"]
} 3
test encoding-24.9 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xe0\x9f\xbf"]
+ string length [encoding convertfrom utf-8 "\xE0\x9F\xBF"]
} 3
test encoding-24.10 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xe0\xa0\x80"]
+ string length [encoding convertfrom utf-8 "\xE0\xA0\x80"]
} 1
test encoding-24.11 {Parse valid or invalid utf-8} {
- string length [encoding convertfrom utf-8 "\xef\xbf\xbf"]
+ string length [encoding convertfrom utf-8 "\xEF\xBF\xBF"]
} 1
file delete [file join [temporaryDirectory] iso2022.txt]