File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 310310
311311function Base. seekend (stream:: TranscodingStream )
312312 mode = stream. state. mode
313- @checkmode (:idle , :read , :write )
314- if mode == :read || mode == :write
313+ @checkmode (:idle , :read )
314+ if mode == :read
315315 callstartproc (stream, mode)
316316 emptybuffer! (stream. buffer1)
317317 emptybuffer! (stream. buffer2)
Original file line number Diff line number Diff line change 142142 end
143143 end
144144
145+ @testset " seekend doesn't delete data" begin
146+ for n in 0 : 3
147+ sink = IOBuffer ()
148+ # wrap stream in NoopStream n times.
149+ stream = foldl (
150+ (s,_) -> NoopStream (s),
151+ 1 : n;
152+ init= TranscodingStream (QuadrupleCodec (), sink, bufsize= 16 )
153+ )
154+ write (stream, " x" )
155+ # seekend must not delete user data even if it errors.
156+ @test_throws Exception seekend (stream)
157+ write (stream, TranscodingStreams. TOKEN_END)
158+ flush (stream)
159+ @test take! (sink) == b " xxxx"
160+ close (stream)
161+ end
162+ end
163+
145164 @testset " eof is true after write" begin
146165 sink = IOBuffer ()
147166 stream = TranscodingStream (QuadrupleCodec (), sink, bufsize= 16 )
You can’t perform that action at this time.
0 commit comments