Skip to content

Commit 9393f35

Browse files
authored
fix readuntil (close #78) (#79)
1 parent d013a5e commit 9393f35

File tree

2 files changed

+22
-4
lines changed

2 files changed

+22
-4
lines changed

src/stream.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,10 @@ function Base.readuntil(stream::TranscodingStream, delim::UInt8; keep::Bool=fals
334334
copydata!(pointer(ret, filled+1), buffer1, sz)
335335
filled += sz
336336
if found
337+
if !keep
338+
# skip the delimiter
339+
skipbuffer!(buffer1, 1)
340+
end
337341
break
338342
end
339343
end

test/codecnoop.jl

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -260,10 +260,24 @@
260260
close(stream)
261261
@test eof(stream) # close
262262

263-
stream = NoopStream(IOBuffer(""))
264-
data = readuntil(stream, 0x00)
265-
@test data isa Vector{UInt8}
266-
@test isempty(data)
263+
@testset "readuntil" begin
264+
stream = NoopStream(IOBuffer(""))
265+
data = readuntil(stream, 0x00)
266+
@test data isa Vector{UInt8}
267+
@test isempty(data)
268+
269+
stream = NoopStream(IOBuffer("foo,bar"))
270+
@test readuntil(stream, UInt8(',')) == b"foo"
271+
@test read(stream) == b"bar"
272+
273+
stream = NoopStream(IOBuffer("foo,bar"))
274+
@test readuntil(stream, UInt8(','), keep = false) == b"foo"
275+
@test read(stream) == b"bar"
276+
277+
stream = NoopStream(IOBuffer("foo,bar"))
278+
@test readuntil(stream, UInt8(','), keep = true) == b"foo,"
279+
@test read(stream) == b"bar"
280+
end
267281

268282
@test_throws ArgumentError NoopStream(IOBuffer(), bufsize=0)
269283
@test_throws ArgumentError NoopStream(let s = IOBuffer(); close(s); s; end)

0 commit comments

Comments
 (0)