Merge branch 'fix-old-ci-api' into 'master'
Fix support for old CI API when image or services are not specified Closes #35421 See merge request !13023
This commit is contained in:
commit
b92d5135d8
2 changed files with 67 additions and 1 deletions
|
@ -52,7 +52,7 @@ module Ci
|
|||
# when old API will be removed (planned for August 2017).
|
||||
model.options.dup.tap do |options|
|
||||
options[:image] = options[:image][:name] if options[:image].is_a?(Hash)
|
||||
options[:services].map! do |service|
|
||||
options[:services]&.map! do |service|
|
||||
if service.is_a?(Hash)
|
||||
service[:name]
|
||||
else
|
||||
|
|
|
@ -69,6 +69,72 @@ describe Ci::API::Builds do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when an old image syntax is used' do
|
||||
before do
|
||||
build.update!(options: { image: 'codeclimate' })
|
||||
end
|
||||
|
||||
it 'starts a build' do
|
||||
register_builds info: { platform: :darwin }
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
expect(json_response["options"]).to eq({ "image" => "codeclimate" })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a new image syntax is used' do
|
||||
before do
|
||||
build.update!(options: { image: { name: 'codeclimate' } })
|
||||
end
|
||||
|
||||
it 'starts a build' do
|
||||
register_builds info: { platform: :darwin }
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
expect(json_response["options"]).to eq({ "image" => "codeclimate" })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when an old service syntax is used' do
|
||||
before do
|
||||
build.update!(options: { services: ['mysql'] })
|
||||
end
|
||||
|
||||
it 'starts a build' do
|
||||
register_builds info: { platform: :darwin }
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
expect(json_response["options"]).to eq({ "services" => ["mysql"] })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a new service syntax is used' do
|
||||
before do
|
||||
build.update!(options: { services: [name: 'mysql'] })
|
||||
end
|
||||
|
||||
it 'starts a build' do
|
||||
register_builds info: { platform: :darwin }
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
expect(json_response["options"]).to eq({ "services" => ["mysql"] })
|
||||
end
|
||||
end
|
||||
|
||||
context 'when no image or service is defined' do
|
||||
before do
|
||||
build.update!(options: {})
|
||||
end
|
||||
|
||||
it 'starts a build' do
|
||||
register_builds info: { platform: :darwin }
|
||||
|
||||
expect(response).to have_http_status(201)
|
||||
|
||||
expect(json_response["options"]).to be_empty
|
||||
end
|
||||
end
|
||||
|
||||
context 'when there is a pending build' do
|
||||
it 'starts a build' do
|
||||
register_builds info: { platform: :darwin }
|
||||
|
|
Loading…
Reference in a new issue