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
|
def log_parts
|
||||||
parts = log.parts
|
parts = log.parts
|
||||||
parts = parts.where(number: part_numbers) if part_numbers
|
parts = parts.where(number: part_numbers) if part_numbers
|
||||||
|
parts = parts.where(["number > ?", after]) if after
|
||||||
parts.sort_by(&:number).map do |part|
|
parts.sort_by(&:number).map do |part|
|
||||||
{
|
{
|
||||||
'id' => part.id,
|
'id' => part.id,
|
||||||
|
@ -49,6 +50,11 @@ module Travis
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def after
|
||||||
|
after = options['after'].to_i
|
||||||
|
after == 0 ? nil : after
|
||||||
|
end
|
||||||
|
|
||||||
def part_numbers
|
def part_numbers
|
||||||
if numbers = options['part_numbers']
|
if numbers = options['part_numbers']
|
||||||
numbers.is_a?(String) ? numbers.split(',').map(&:to_i) : numbers
|
numbers.is_a?(String) ? numbers.split(',').map(&:to_i) : numbers
|
||||||
|
|
|
@ -51,6 +51,18 @@ describe 'Jobs' do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'with chunked log requested' do
|
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
|
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: '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: 2, final: true)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user