Merge branch 'fix-trace-seeking-readline' into 'master'

After Trace#limit, we seek to the next line in case

Closes #30796

See merge request !10681
This commit is contained in:
Kamil Trzciński 2017-04-13 16:58:09 +00:00
commit 7761afe091
5 changed files with 41 additions and 10 deletions

View file

@ -0,0 +1,4 @@
---
title: Fix invalid encoding when showing some traces
merge_request: 10681
author:

View file

@ -25,11 +25,10 @@ module Gitlab
end
def limit(last_bytes = LIMIT_SIZE)
stream_size = size
if stream_size < last_bytes
last_bytes = stream_size
if last_bytes < size
stream.seek(-last_bytes, IO::SEEK_END)
stream.readline
end
stream.seek(-last_bytes, IO::SEEK_END)
end
def append(data, offset)

View file

@ -0,0 +1,5 @@
.
..
😺
ヾ(´༎ຶД༎ຶ`)ノ
許功蓋

View file

@ -17,12 +17,12 @@ describe Gitlab::Ci::Trace::Stream do
describe '#limit' do
let(:stream) do
described_class.new do
StringIO.new("12345678")
StringIO.new((1..8).to_a.join("\n"))
end
end
it 'if size is larger we start from beggining' do
stream.limit(10)
it 'if size is larger we start from beginning' do
stream.limit(20)
expect(stream.tell).to eq(0)
end
@ -30,7 +30,27 @@ describe Gitlab::Ci::Trace::Stream do
it 'if size is smaller we start from the end' do
stream.limit(2)
expect(stream.tell).to eq(6)
expect(stream.raw).to eq("8")
end
context 'when the trace contains ANSI sequence and Unicode' do
let(:stream) do
described_class.new do
File.open(expand_fixture_path('trace/ansi-sequence-and-unicode'))
end
end
it 'forwards to the next linefeed, case 1' do
stream.limit(7)
expect(stream.raw).to eq('')
end
it 'forwards to the next linefeed, case 2' do
stream.limit(29)
expect(stream.raw).to eq("\e[01;32m許功蓋\e[0m\n")
end
end
end

View file

@ -1,8 +1,11 @@
module FixtureHelpers
def fixture_file(filename)
return '' if filename.blank?
file_path = File.expand_path(Rails.root.join('spec/fixtures/', filename))
File.read(file_path)
File.read(expand_fixture_path(filename))
end
def expand_fixture_path(filename)
File.expand_path(Rails.root.join('spec/fixtures/', filename))
end
end