Make sure @stream.each_line would tag Encoding.default_external
This commit is contained in:
parent
ee3b0c3a9a
commit
c26b126502
2 changed files with 16 additions and 4 deletions
|
@ -15,6 +15,8 @@ module Gitlab
|
||||||
def initialize
|
def initialize
|
||||||
@stream = yield
|
@stream = yield
|
||||||
@stream.binmode
|
@stream.binmode
|
||||||
|
# Ci::Ansi2html::Converter would read from @stream directly
|
||||||
|
@stream.set_encoding(Encoding.default_external)
|
||||||
end
|
end
|
||||||
|
|
||||||
def valid?
|
def valid?
|
||||||
|
|
|
@ -34,12 +34,12 @@ describe Gitlab::Ci::Trace::Stream do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when the trace contains ANSI sequence and Unicode' do
|
context 'when the trace contains ANSI sequence and Unicode' do
|
||||||
let(:stream) do
|
let(:io) do
|
||||||
described_class.new do
|
File.open(expand_fixture_path('trace/ansi-sequence-and-unicode'))
|
||||||
File.open(expand_fixture_path('trace/ansi-sequence-and-unicode'))
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:stream) { described_class.new { io } }
|
||||||
|
|
||||||
it 'forwards to the next linefeed, case 1' do
|
it 'forwards to the next linefeed, case 1' do
|
||||||
stream.limit(7)
|
stream.limit(7)
|
||||||
|
|
||||||
|
@ -57,6 +57,16 @@ describe Gitlab::Ci::Trace::Stream do
|
||||||
expect(result).to eq("\e[01;32m許功蓋\e[0m\n")
|
expect(result).to eq("\e[01;32m許功蓋\e[0m\n")
|
||||||
expect(result.encoding).to eq(Encoding.default_external)
|
expect(result.encoding).to eq(Encoding.default_external)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# See https://gitlab.com/gitlab-org/gitlab-ce/issues/30796
|
||||||
|
it 'reads in binary, output as Encoding.default_external' do
|
||||||
|
stream.limit(29)
|
||||||
|
|
||||||
|
result = io.read # Ci::Ansi2html::Converter would read with each_line
|
||||||
|
|
||||||
|
expect(result).to eq("\e[01;32m許功蓋\e[0m\n")
|
||||||
|
expect(result.encoding).to eq(Encoding.default_external)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue