Commit 970f9624 authored by Sean McGivern's avatar Sean McGivern

Merge branch 'fix-trace-encoding' into 'master'

Explicitly give Encoding.default_external for trace

Closes #30796

See merge request !10728
parents eeaeb275 9350b906
---
title: Fix another case where trace does not have proper encoding set
merge_request: 10728
author:
......@@ -14,6 +14,14 @@ module Gitlab
def initialize
@stream = yield
if @stream
@stream.binmode
# Ci::Ansi2html::Converter would read from @stream directly,
# using @stream.each_line to be specific. It's safe to set
# the encoding here because IO#seek(bytes) and IO#read(bytes)
# are not characters based, so encoding doesn't matter to them.
@stream.set_encoding(Encoding.default_external)
end
end
def valid?
......@@ -51,7 +59,7 @@ module Gitlab
read_last_lines(last_lines)
else
stream.read
end
end.force_encoding(Encoding.default_external)
end
def html_with_state(state = nil)
......@@ -113,7 +121,6 @@ module Gitlab
end
chunks.join.lines.last(last_lines).join
.force_encoding(Encoding.default_external)
end
end
end
......
......@@ -43,13 +43,29 @@ describe Gitlab::Ci::Trace::Stream do
it 'forwards to the next linefeed, case 1' do
stream.limit(7)
expect(stream.raw).to eq('')
result = stream.raw
expect(result).to eq('')
expect(result.encoding).to eq(Encoding.default_external)
end
it 'forwards to the next linefeed, case 2' do
stream.limit(29)
expect(stream.raw).to eq("\e[01;32m許功蓋\e[0m\n")
result = stream.raw
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(52)
result = stream.html
expect(result).to eq("ヾ(´༎ຶД༎ຶ`)ノ<br><span class=\"term-fg-green\">許功蓋</span><br>")
expect(result.encoding).to eq(Encoding.default_external)
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