Make sure @stream.each_line would tag Encoding.default_external

This commit is contained in:
Lin Jen-Shin 2017-04-17 15:53:09 +08:00
parent ee3b0c3a9a
commit c26b126502
2 changed files with 16 additions and 4 deletions

View file

@ -15,6 +15,8 @@ module Gitlab
def initialize
@stream = yield
@stream.binmode
# Ci::Ansi2html::Converter would read from @stream directly
@stream.set_encoding(Encoding.default_external)
end
def valid?

View file

@ -34,11 +34,11 @@ describe Gitlab::Ci::Trace::Stream do
end
context 'when the trace contains ANSI sequence and Unicode' do
let(:stream) do
described_class.new do
let(:io) do
File.open(expand_fixture_path('trace/ansi-sequence-and-unicode'))
end
end
let(:stream) { described_class.new { io } }
it 'forwards to the next linefeed, case 1' do
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.encoding).to eq(Encoding.default_external)
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