Commit c26b1265 authored by Lin Jen-Shin's avatar Lin Jen-Shin

Make sure @stream.each_line would tag Encoding.default_external

parent ee3b0c3a
...@@ -15,6 +15,8 @@ module Gitlab ...@@ -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,11 +34,11 @@ describe Gitlab::Ci::Trace::Stream do ...@@ -34,11 +34,11 @@ 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 ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment