Add "after" param to log
after query param allows to get only parts that come after a specified number, for example "after: 10" will download only parts that come after 10th part.
This commit is contained in:
parent
65a90fd5d7
commit
07cd97a90f
|
@ -39,6 +39,7 @@ module Travis
|
|||
def log_parts
|
||||
parts = log.parts
|
||||
parts = parts.where(number: part_numbers) if part_numbers
|
||||
parts = parts.where(["number > ?", after]) if after
|
||||
parts.sort_by(&:number).map do |part|
|
||||
{
|
||||
'id' => part.id,
|
||||
|
@ -49,6 +50,11 @@ module Travis
|
|||
end
|
||||
end
|
||||
|
||||
def after
|
||||
after = options['after'].to_i
|
||||
after == 0 ? nil : after
|
||||
end
|
||||
|
||||
def part_numbers
|
||||
if numbers = options['part_numbers']
|
||||
numbers.is_a?(String) ? numbers.split(',').map(&:to_i) : numbers
|
||||
|
|
|
@ -51,6 +51,18 @@ describe 'Jobs' do
|
|||
end
|
||||
|
||||
context 'with chunked log requested' do
|
||||
it 'responds with only selected chunks if after is specified' do
|
||||
job.log.parts << Log::Part.new(content: 'foo', number: 1, final: false)
|
||||
job.log.parts << Log::Part.new(content: 'bar', number: 2, final: true)
|
||||
job.log.parts << Log::Part.new(content: 'bar', number: 3, final: true)
|
||||
|
||||
headers = { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json; chunked=true' }
|
||||
response = get "/jobs/#{job.id}/log", { after: 1 }, headers
|
||||
body = JSON.parse(response.body)
|
||||
|
||||
body['log']['parts'].map { |p| p['number'] }.sort.should == [2, 3]
|
||||
end
|
||||
|
||||
it 'responds with only selected chunks if part_numbers are requested' do
|
||||
job.log.parts << Log::Part.new(content: 'foo', number: 1, final: false)
|
||||
job.log.parts << Log::Part.new(content: 'bar', number: 2, final: true)
|
||||
|
|
Loading…
Reference in New Issue
Block a user