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:
commit
7761afe091
5 changed files with 41 additions and 10 deletions
4
changelogs/unreleased/fix-trace-seeking.yml
Normal file
4
changelogs/unreleased/fix-trace-seeking.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
title: Fix invalid encoding when showing some traces
|
||||
merge_request: 10681
|
||||
author:
|
|
@ -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)
|
||||
|
|
5
spec/fixtures/trace/ansi-sequence-and-unicode
vendored
Normal file
5
spec/fixtures/trace/ansi-sequence-and-unicode
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
[0m[01;34m.[0m
|
||||
[30;42m..[0m
|
||||
😺
|
||||
ヾ(´༎ຶД༎ຶ`)ノ
|
||||
[01;32m許功蓋[0m
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue