Make sure TraceReader uses Encoding.default_external
Encoding.default_external was chosen over Encoding.default_internal because File.read is returning Encoding.default_external, therefore we should align with it. Alternatively, we could force both of them to be Encoding.default_internal. However, ideally this should be determined by different projects. For example, some projects might want to use an encoding different to what GitLab is using. This might not happen soon though. Closes #27052
This commit is contained in:
parent
37b4503125
commit
050103f209
|
@ -42,6 +42,7 @@ module Gitlab
|
|||
end
|
||||
|
||||
chunks.join.lines.last(max_lines).join
|
||||
.force_encoding(Encoding.default_external)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,13 +11,25 @@ describe Gitlab::Ci::TraceReader do
|
|||
last_lines = random_lines
|
||||
|
||||
expected = lines.last(last_lines).join
|
||||
result = subject.read(last_lines: last_lines)
|
||||
|
||||
expect(subject.read(last_lines: last_lines)).to eq(expected)
|
||||
expect(result).to eq(expected)
|
||||
expect(result.encoding).to eq(Encoding.default_external)
|
||||
end
|
||||
end
|
||||
|
||||
it 'returns everything if trying to get too many lines' do
|
||||
expect(build_subject.read(last_lines: lines.size * 2)).to eq(lines.join)
|
||||
result = build_subject.read(last_lines: lines.size * 2)
|
||||
|
||||
expect(result).to eq(lines.join)
|
||||
expect(result.encoding).to eq(Encoding.default_external)
|
||||
end
|
||||
|
||||
it 'returns all contents if last_lines is not specified' do
|
||||
result = build_subject.read
|
||||
|
||||
expect(result).to eq(lines.join)
|
||||
expect(result.encoding).to eq(Encoding.default_external)
|
||||
end
|
||||
|
||||
it 'raises an error if not passing an integer for last_lines' do
|
||||
|
|
Loading…
Reference in New Issue