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:
Piotr Sarnacki 2014-09-11 14:36:19 +02:00
parent 65a90fd5d7
commit 07cd97a90f
2 changed files with 18 additions and 0 deletions

View File

@ -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

View File

@ -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)