summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2017-04-17 17:10:41 +0800
committerLin Jen-Shin <godfat@godfat.org>2017-04-17 17:10:41 +0800
commite7d3fe44f64d1efbbc0b9611cb3382feff4a2f00 (patch)
treeb23806309abaa4238dd4d24ef9651cfaae292cc9
parentdac23fa233f98b521065fd3f21f6183f84b562d3 (diff)
downloadgitlab-ce-e7d3fe44f64d1efbbc0b9611cb3382feff4a2f00.tar.gz
Only set the encoding before passing to Ansi2html
-rw-r--r--lib/gitlab/ci/trace.rb2
-rw-r--r--lib/gitlab/ci/trace/stream.rb11
-rw-r--r--spec/lib/gitlab/ci/trace/stream_spec.rb14
3 files changed, 15 insertions, 12 deletions
diff --git a/lib/gitlab/ci/trace.rb b/lib/gitlab/ci/trace.rb
index b980e29e9c3..5b835bb669a 100644
--- a/lib/gitlab/ci/trace.rb
+++ b/lib/gitlab/ci/trace.rb
@@ -50,8 +50,6 @@ module Gitlab
end
def read
- return unless exist?
-
stream = Gitlab::Ci::Trace::Stream.new do
if current_path
File.open(current_path, "rb")
diff --git a/lib/gitlab/ci/trace/stream.rb b/lib/gitlab/ci/trace/stream.rb
index 8d9fb6ff0f1..757a8e2dc6a 100644
--- a/lib/gitlab/ci/trace/stream.rb
+++ b/lib/gitlab/ci/trace/stream.rb
@@ -14,9 +14,7 @@ module Gitlab
def initialize
@stream = yield
- @stream.binmode
- # Ci::Ansi2html::Converter would read from @stream directly
- @stream.set_encoding(Encoding.default_external)
+ @stream.binmode if @stream
end
def valid?
@@ -58,12 +56,14 @@ module Gitlab
end
def html_with_state(state = nil)
+ set_encoding_for_ansi2html
::Ci::Ansi2html.convert(stream, state)
end
def html(last_lines: nil)
text = raw(last_lines: last_lines)
stream = StringIO.new(text)
+ set_encoding_for_ansi2html(stream)
::Ci::Ansi2html.convert(stream).html
end
@@ -117,6 +117,11 @@ module Gitlab
chunks.join.lines.last(last_lines).join
end
+
+ def set_encoding_for_ansi2html(stream = @stream)
+ # Ci::Ansi2html::Converter would read from @stream directly
+ stream.set_encoding(Encoding.default_external)
+ end
end
end
end
diff --git a/spec/lib/gitlab/ci/trace/stream_spec.rb b/spec/lib/gitlab/ci/trace/stream_spec.rb
index 6f5c9994f54..1602a4945ad 100644
--- a/spec/lib/gitlab/ci/trace/stream_spec.rb
+++ b/spec/lib/gitlab/ci/trace/stream_spec.rb
@@ -34,12 +34,12 @@ describe Gitlab::Ci::Trace::Stream do
end
context 'when the trace contains ANSI sequence and Unicode' do
- let(:io) do
- File.open(expand_fixture_path('trace/ansi-sequence-and-unicode'))
+ let(:stream) do
+ described_class.new 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)
@@ -60,11 +60,11 @@ describe Gitlab::Ci::Trace::Stream do
# See https://gitlab.com/gitlab-org/gitlab-ce/issues/30796
it 'reads in binary, output as Encoding.default_external' do
- stream.limit(29)
+ stream.limit(52)
- result = io.read # Ci::Ansi2html::Converter would read with each_line
+ result = stream.html
- expect(result).to eq("\e[01;32m許功蓋\e[0m\n")
+ expect(result.lines.first).to eq("ヾ(´༎ຶД༎ຶ`)ノ<br><span class=\"term-fg-green\">許功蓋</span><br>")
expect(result.encoding).to eq(Encoding.default_external)
end
end