Diff
Not logged in

Differences From Artifact [bc01c37d44]:

To Artifact [c406003557]:


8948
8949
8950
8951
8952
8953
8954
8955
8956



8957
8958

8959
8960
8961
8962
8963
8964
8965
8966






8967
8968

8969
8970
8971


8972
8973
8974
8975
8976

8977
8978
8979
8980
8981
8982
8983
8984




8985
8986
8987


8988
8989
8990
8991
8992
8993
8994

8995
8996
8997
8998
8999
9000




9001
9002
9003
9004



9005
9006

9007
9008
9009
9010
9011
9012
9013
8948
8949
8950
8951
8952
8953
8954


8955
8956
8957
8958

8959
8960
8961






8962
8963
8964
8965
8966
8967
8968

8969
8970


8971
8972
8973

8974
8975

8976
8977
8978
8979





8980
8981
8982
8983
8984


8985
8986
8987
8988
8989
8990
8991
8992

8993
8994
8995




8996
8997
8998
8999
9000



9001
9002
9003
9004

9005
9006
9007
9008
9009
9010
9011
9012







-
-
+
+
+

-
+


-
-
-
-
-
-
+
+
+
+
+
+

-
+

-
-
+
+

-


-
+



-
-
-
-
-
+
+
+
+

-
-
+
+






-
+


-
-
-
-
+
+
+
+

-
-
-
+
+
+

-
+







    read [teststringobj get 2]
} -cleanup {
    interp delete child
    testobj freeallvars
    removeFile io-74.1
} -returnCodes error -match glob -result {can not find channel named "*"}

# Note: the following tests 75.1 to 75.3 are in preparation for TCL 9.0, where
# those should result in an error result
# The following tests 75.1 to 75.3 exercice strict or tolerant channel
# encoding.
# TCL 8.7 only offers tolerant channel encoding, what is tested here.
test io-75.1 {multibyte encoding error read results in raw bytes} -constraints deprecated -setup {
	set fn [makeFile {} io-75.1]
    set fn [makeFile {} io-75.1]
    set f [open $fn w+]
    fconfigure $f -encoding binary
	# In UTF-8, a byte 0xCx starts a multibyte sequence and must be followed
	# by a byte > 0x7F. This is violated to get an invalid sequence.
	puts -nonewline $f "A\xC0\x40"
	flush $f
	seek $f 0
	fconfigure $f -encoding utf-8 -buffering none
    # In UTF-8, a byte 0xCx starts a multibyte sequence and must be followed
    # by a byte > 0x7F. This is violated to get an invalid sequence.
    puts -nonewline $f "A\xC0\x40"
    flush $f
    seek $f 0
    fconfigure $f -encoding utf-8 -buffering none
} -body {
	read $f
    read $f
} -cleanup {
	close $f
	removeFile io-75.1
    close $f
    removeFile io-75.1
} -returnCodes ok -result "A\xC0\x40"
# for TCL 9.0, the result is error

test io-75.2 {unrepresentable character write passes and is replaced by ?} -constraints deprecated -setup {
	set fn [makeFile {} io-75.2]
    set fn [makeFile {} io-75.2]
    set f [open $fn w+]
    fconfigure $f -encoding iso8859-1
} -body {
	# the following command gets in result error in TCL 9.0
	puts -nonewline $f "A\u2022"
	flush $f
	seek $f 0
	read $f
    puts -nonewline $f "A\u2022"
    flush $f
    seek $f 0
    read $f
} -cleanup {
	close $f
	removeFile io-75.2
    close $f
    removeFile io-75.2
} -returnCodes ok -result "A?"

# Incomplete sequence test.
# This error may IMHO only be detected with the close.
# But the read already returns the incomplete sequence.
test io-75.3 {incomplete multibyte encoding read is ignored} -setup {
	set fn [makeFile {} io-75.3]
    set fn [makeFile {} io-75.3]
    set f [open $fn w+]
    fconfigure $f -encoding binary
	puts -nonewline $f "A\xC0"
	flush $f
	seek $f 0
	fconfigure $f -encoding utf-8 -buffering none
    puts -nonewline $f "A\xC0"
    flush $f
    seek $f 0
    fconfigure $f -encoding utf-8 -buffering none
} -body {
	set d [read $f]
	close $f
	set d
    set d [read $f]
    close $f
    set d
} -cleanup {
	removeFile io-75.3
    removeFile io-75.3
} -returnCodes ok -result "A\xC0"

# ### ### ### ######### ######### #########

# cleanup
foreach file [list fooBar longfile script script2 output test1 pipe my_script \
	test2 test3 cat stdout kyrillic.txt utf8-fcopy.txt utf8-rp.txt] {