Fix next round of tests

This commit is contained in:
Kamil Trzcinski 2015-10-05 13:12:00 +02:00
parent 361dc3641d
commit d2d2df0738
20 changed files with 103 additions and 101 deletions

View file

@ -13,7 +13,7 @@ module Ci
end end
def status def status
commit = Ci::Project.find(params[:project_id]).commits.find_by_sha!(params[:id], params[:ref_id]) commit = Ci::Project.find(params[:project_id]).commits.find_by_sha!(params[:id])
render json: commit.to_json(only: [:id, :sha], methods: [:status, :coverage]) render json: commit.to_json(only: [:id, :sha], methods: [:status, :coverage])
rescue ActiveRecord::RecordNotFound rescue ActiveRecord::RecordNotFound
render json: { status: "not_found" } render json: { status: "not_found" }

View file

@ -3,10 +3,6 @@ module BuildsHelper
gitlab_ref_link build.project, build.ref gitlab_ref_link build.project, build.ref
end end
def build_compare_link build
gitlab_compare_link build.project, build.commit.short_before_sha, build.short_sha
end
def build_commit_link build def build_commit_link build
gitlab_commit_link build.project, build.short_sha gitlab_commit_link build.project, build.short_sha
end end

View file

@ -11,14 +11,7 @@ module Ci
def to_s def to_s
lines = Array.new lines = Array.new
lines.push("<a href=\"#{ci_project_url(project)}\">#{project.name}</a> - ") lines.push("<a href=\"#{ci_project_url(project)}\">#{project.name}</a> - ")
lines.push("<a href=\"#{ci_project_commits_url(project, commit.sha)}\">Commit ##{commit.id}</a></br>")
if commit.matrix?
lines.push("<a href=\"#{ci_project_commits_url(project, commit.sha)}\">Commit ##{commit.id}</a></br>")
else
first_build = commit.builds_without_retry.first
lines.push("<a href=\"#{ci_project_build_url(project, first_build)}\">Build '#{first_build.name}' ##{first_build.id}</a></br>")
end
lines.push("#{commit.short_sha} #{commit.git_author_name} - #{commit.git_commit_message}</br>") lines.push("#{commit.short_sha} #{commit.git_author_name} - #{commit.git_commit_message}</br>")
lines.push("#{humanized_status(commit_status)} in #{commit.duration} second(s).") lines.push("#{humanized_status(commit_status)} in #{commit.duration} second(s).")
lines.join('') lines.join('')

View file

@ -23,15 +23,13 @@ module Ci
def attachments def attachments
fields = [] fields = []
if commit.matrix? commit.builds_without_retry.each do |build|
commit.builds_without_retry.each do |build| next if build.allow_failure?
next if build.allow_failure? next unless build.failed?
next unless build.failed? fields << {
fields << { title: build.name,
title: build.name, value: "Build <#{ci_project_build_url(project, build)}|\##{build.id}> failed in #{build.duration.to_i} second(s)."
value: "Build <#{ci_project_build_url(project, build)}|\##{build.id}> failed in #{build.duration.to_i} second(s)." }
}
end
end end
[{ [{
@ -47,12 +45,7 @@ module Ci
def attachment_message def attachment_message
out = "<#{ci_project_url(project)}|#{project_name}>: " out = "<#{ci_project_url(project)}|#{project_name}>: "
if commit.matrix? out << "Commit <#{ci_project_commits_url(project, commit.sha)}|\##{commit.id}> "
out << "Commit <#{ci_project_commits_url(project, commit.sha)}|\##{commit.id}> "
else
build = commit.builds_without_retry.first
out << "Build <#{ci_project_build_url(project, build)}|\##{build.id}> "
end
out << "(<#{commit_sha_link}|#{commit.short_sha}>) " out << "(<#{commit_sha_link}|#{commit.short_sha}>) "
out << "of <#{commit_ref_link}|#{commit.ref}> " out << "of <#{commit_ref_link}|#{commit.ref}> "
out << "by #{commit.git_author_name} " if commit.git_author_name out << "by #{commit.git_author_name} " if commit.git_author_name

View file

@ -52,7 +52,7 @@ class GitlabCiService < CiService
ci_project = Ci::Project.find_by(gitlab_id: project.id) ci_project = Ci::Project.find_by(gitlab_id: project.id)
if ci_project if ci_project
Ci::CreateCommitService.new.execute(ci_project, data, current_user) Ci::CreateCommitService.new.execute(ci_project, current_user, data)
end end
end end

View file

@ -4,20 +4,23 @@ module Ci
builds_attrs = commit.config_processor.builds_for_stage_and_ref(stage, ref, tag) builds_attrs = commit.config_processor.builds_for_stage_and_ref(stage, ref, tag)
builds_attrs.map do |build_attrs| builds_attrs.map do |build_attrs|
build_attrs.slice!(:name, # don't create the same build twice
:commands, unless commit.builds.find_by(ref: ref, tag: tag, trigger_request: trigger_request, name: build_attrs[:name])
:tag_list, build_attrs.slice!(:name,
:options, :commands,
:allow_failure, :tag_list,
:stage, :options,
:stage_idx) :allow_failure,
:stage,
:stage_idx)
build_attrs.merge!(ref: ref, build_attrs.merge!(ref: ref,
tag: tag, tag: tag,
trigger_request: trigger_request, trigger_request: trigger_request,
user: user) user: user)
commit.builds.create!(build_attrs) commit.builds.create!(build_attrs)
end
end end
end end
end end

View file

@ -1,7 +1,6 @@
module Ci module Ci
class CreateCommitService class CreateCommitService
def execute(project, params, user) def execute(project, user, params)
before_sha = params[:before]
sha = params[:checkout_sha] || params[:after] sha = params[:checkout_sha] || params[:after]
origin_ref = params[:ref] origin_ref = params[:ref]

View file

@ -9,9 +9,9 @@
.gray-content-block.second-block .gray-content-block.second-block
.row .row
.col-sm-6 .col-sm-6
%p %p
%span.attr-name Commit: %span.attr-name Commit:
#{gitlab_commit_link(@project, @commit.sha)} #{gitlab_commit_link(@project, @commit.sha)}
.col-sm-6 .col-sm-6
- if @commit.git_author_name || @commit.git_author_email - if @commit.git_author_name || @commit.git_author_email
%p %p

View file

@ -51,7 +51,7 @@ module Ci
required_attributes! [:project_id, :data, :project_token] required_attributes! [:project_id, :data, :project_token]
project = Ci::Project.find(params[:project_id]) project = Ci::Project.find(params[:project_id])
authenticate_project_token!(project) authenticate_project_token!(project)
commit = Ci::CreateCommitService.new.execute(project, params[:data], current_user) commit = Ci::CreateCommitService.new.execute(project, current_user, params[:data])
if commit.persisted? if commit.persisted?
present commit, with: Entities::CommitWithBuilds present commit, with: Entities::CommitWithBuilds

View file

@ -17,7 +17,7 @@
# Read about factories at https://github.com/thoughtbot/factory_girl # Read about factories at https://github.com/thoughtbot/factory_girl
FactoryGirl.define do FactoryGirl.define do
factory :ci_commit, class: Ci::Commit do factory :ci_empty_commit, class: Ci::Commit do
sha '97de212e80737a608d939f648d959671fb0a0142' sha '97de212e80737a608d939f648d959671fb0a0142'
gl_project factory: :empty_project gl_project factory: :empty_project
@ -40,7 +40,7 @@ FactoryGirl.define do
end end
end end
factory :ci_commit_yaml_stub do factory :ci_commit do
after(:build) do |commit| after(:build) do |commit|
allow(commit).to receive(:ci_yaml_file) { File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) } allow(commit).to receive(:ci_yaml_file) { File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml')) }
end end

View file

@ -38,10 +38,9 @@ describe "Commits" do
end end
it "shows warning" do it "shows warning" do
@commit.push_data[:ci_yaml_file] = nil @commit_no_yaml = FactoryGirl.create :ci_empty_commit
@commit.save
visit ci_commit_path(@commit) visit ci_commit_path(@commit_no_yaml)
expect(page).to have_content ".gitlab-ci.yml not found in this commit" expect(page).to have_content ".gitlab-ci.yml not found in this commit"
end end

View file

@ -20,8 +20,8 @@ module Ci
except: nil, except: nil,
name: :rspec, name: :rspec,
only: nil, only: nil,
script: "pwd\nrspec", commands: "pwd\nrspec",
tags: [], tag_list: [],
options: {}, options: {},
allow_failure: false allow_failure: false
}) })
@ -117,8 +117,8 @@ module Ci
stage: "test", stage: "test",
name: :rspec, name: :rspec,
only: nil, only: nil,
script: "pwd\nrspec", commands: "pwd\nrspec",
tags: [], tag_list: [],
options: { options: {
image: "ruby:2.1", image: "ruby:2.1",
services: ["mysql"] services: ["mysql"]
@ -143,8 +143,8 @@ module Ci
stage: "test", stage: "test",
name: :rspec, name: :rspec,
only: nil, only: nil,
script: "pwd\nrspec", commands: "pwd\nrspec",
tags: [], tag_list: [],
options: { options: {
image: "ruby:2.5", image: "ruby:2.5",
services: ["postgresql"] services: ["postgresql"]

View file

@ -28,7 +28,7 @@ require 'spec_helper'
describe Ci::Build do describe Ci::Build do
let(:project) { FactoryGirl.create :ci_project } let(:project) { FactoryGirl.create :ci_project }
let(:gl_project) { FactoryGirl.create :empty_project, gitlab_ci_project: project } let(:gl_project) { FactoryGirl.create :empty_project, gitlab_ci_project: project }
let(:commit) { FactoryGirl.create :ci_commit_yaml_stub, gl_project: gl_project } let(:commit) { FactoryGirl.create :ci_commit, gl_project: gl_project }
let(:build) { FactoryGirl.create :ci_build, commit: commit } let(:build) { FactoryGirl.create :ci_build, commit: commit }
subject { build } subject { build }
@ -352,8 +352,8 @@ describe Ci::Build do
end end
describe :project_recipients do describe :project_recipients do
let (:pusher_email) { 'pusher@gitlab.test' } let(:pusher_email) { 'pusher@gitlab.test' }
let (:user) { User.new(notification_email: pusher_email) } let(:user) { User.new(notification_email: pusher_email) }
subject { build.project_recipients } subject { build.project_recipients }
before do before do

View file

@ -65,15 +65,6 @@ describe Ci::Commit do
end end
end end
describe :short_sha do
subject { commit.short_before_sha }
it 'has 8 items' do
expect(subject.size).to eq(8)
end
it { expect(commit.before_sha).to start_with(subject) }
end
describe :short_sha do describe :short_sha do
subject { commit.short_sha } subject { commit.short_sha }
@ -87,7 +78,7 @@ describe Ci::Commit do
end end
describe :create_builds do describe :create_builds do
let(:commit) { FactoryGirl.create :ci_commit_yaml_stub, gl_project: gl_project } let(:commit) { FactoryGirl.create :ci_commit, gl_project: gl_project }
def create_builds(trigger_request = nil) def create_builds(trigger_request = nil)
commit.create_builds('master', false, nil, trigger_request) commit.create_builds('master', false, nil, trigger_request)

View file

@ -7,7 +7,7 @@ describe Ci::HipChatMessage do
let(:commit) { FactoryGirl.create(:ci_commit_with_one_job) } let(:commit) { FactoryGirl.create(:ci_commit_with_one_job) }
let(:build) do let(:build) do
commit.create_builds commit.create_builds('master', false, nil)
commit.builds.first commit.builds.first
end end
@ -43,7 +43,7 @@ describe Ci::HipChatMessage do
context 'when all matrix builds succeed' do context 'when all matrix builds succeed' do
it 'returns a successful message' do it 'returns a successful message' do
commit.create_builds commit.create_builds('master', false, nil)
commit.builds.update_all(status: "success") commit.builds.update_all(status: "success")
commit.reload commit.reload
@ -56,7 +56,7 @@ describe Ci::HipChatMessage do
context 'when at least one matrix build fails' do context 'when at least one matrix build fails' do
it 'returns a failure message' do it 'returns a failure message' do
commit.create_builds commit.create_builds('master', false, nil)
first_build = commit.builds.first first_build = commit.builds.first
second_build = commit.builds.last second_build = commit.builds.last
first_build.update(status: "success") first_build.update(status: "success")

View file

@ -29,12 +29,13 @@ describe Ci::MailService do
describe 'Sends email for' do describe 'Sends email for' do
let(:mail) { Ci::MailService.new } let(:mail) { Ci::MailService.new }
let(:user) { User.new(notification_email: 'git@example.com')}
describe 'failed build' do describe 'failed build' do
let(:project) { FactoryGirl.create(:ci_project, email_add_pusher: true) } let(:project) { FactoryGirl.create(:ci_project, email_add_pusher: true) }
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) } let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) } let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit, user: user) }
before do before do
allow(mail).to receive_messages( allow(mail).to receive_messages(
@ -57,7 +58,7 @@ describe Ci::MailService do
let(:project) { FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: false) } let(:project) { FactoryGirl.create(:ci_project, email_add_pusher: true, email_only_broken_builds: false) }
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) } let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) } let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit, user: user) }
before do before do
allow(mail).to receive_messages( allow(mail).to receive_messages(
@ -85,7 +86,7 @@ describe Ci::MailService do
end end
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) } let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) } let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit, user: user) }
before do before do
allow(mail).to receive_messages( allow(mail).to receive_messages(
@ -114,7 +115,7 @@ describe Ci::MailService do
end end
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) } let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) } let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit, user: user) }
before do before do
allow(mail).to receive_messages( allow(mail).to receive_messages(
@ -143,7 +144,7 @@ describe Ci::MailService do
end end
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) } let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) } let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :success, commit: commit, user: user) }
before do before do
allow(mail).to receive_messages( allow(mail).to receive_messages(
@ -166,7 +167,7 @@ describe Ci::MailService do
end end
let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) } let(:gl_project) { FactoryGirl.create(:empty_project, gitlab_ci_project: project) }
let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) } let(:commit) { FactoryGirl.create(:ci_commit, gl_project: gl_project) }
let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit) } let(:build) { FactoryGirl.create(:ci_build, status: :failed, commit: commit, user: user) }
before do before do
allow(mail).to receive_messages( allow(mail).to receive_messages(

View file

@ -7,7 +7,7 @@ describe Ci::SlackMessage do
let(:commit) { FactoryGirl.create(:ci_commit_with_one_job) } let(:commit) { FactoryGirl.create(:ci_commit_with_one_job) }
let(:build) do let(:build) do
commit.create_builds commit.create_builds('master', false, nil)
commit.builds.first commit.builds.first
end end
@ -47,7 +47,7 @@ describe Ci::SlackMessage do
let(:color) { 'good' } let(:color) { 'good' }
it 'returns a message with success' do it 'returns a message with success' do
commit.create_builds commit.create_builds('master', false, nil)
commit.builds.update_all(status: "success") commit.builds.update_all(status: "success")
commit.reload commit.reload
@ -63,7 +63,7 @@ describe Ci::SlackMessage do
let(:color) { 'danger' } let(:color) { 'danger' }
it 'returns a message with information about failed build' do it 'returns a message with information about failed build' do
commit.create_builds commit.create_builds('master', false, nil)
first_build = commit.builds.first first_build = commit.builds.first
second_build = commit.builds.last second_build = commit.builds.last
first_build.update(status: "success") first_build.update(status: "success")

View file

@ -19,7 +19,7 @@ describe Ci::API::API do
describe "POST /builds/register" do describe "POST /builds/register" do
it "should start a build" do it "should start a build" do
commit = FactoryGirl.create(:ci_commit, gl_project: gl_project) commit = FactoryGirl.create(:ci_commit, gl_project: gl_project)
commit.create_builds commit.create_builds('master', false, nil)
build = commit.builds.first build = commit.builds.first
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin } post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
@ -55,7 +55,7 @@ describe Ci::API::API do
it "returns options" do it "returns options" do
commit = FactoryGirl.create(:ci_commit, gl_project: gl_project) commit = FactoryGirl.create(:ci_commit, gl_project: gl_project)
commit.create_builds commit.create_builds('master', false, nil)
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin } post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
@ -65,7 +65,7 @@ describe Ci::API::API do
it "returns variables" do it "returns variables" do
commit = FactoryGirl.create(:ci_commit, gl_project: gl_project) commit = FactoryGirl.create(:ci_commit, gl_project: gl_project)
commit.create_builds commit.create_builds('master', false, nil)
project.variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value") project.variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value")
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin } post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }
@ -82,7 +82,7 @@ describe Ci::API::API do
commit = FactoryGirl.create(:ci_commit, gl_project: gl_project) commit = FactoryGirl.create(:ci_commit, gl_project: gl_project)
trigger_request = FactoryGirl.create(:ci_trigger_request_with_variables, commit: commit, trigger: trigger) trigger_request = FactoryGirl.create(:ci_trigger_request_with_variables, commit: commit, trigger: trigger)
commit.create_builds(trigger_request) commit.create_builds('master', false, nil, trigger_request)
project.variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value") project.variables << Ci::Variable.new(key: "SECRET_KEY", value: "secret_value")
post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin } post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin }

View file

@ -4,11 +4,16 @@ module Ci
describe CreateCommitService do describe CreateCommitService do
let(:service) { CreateCommitService.new } let(:service) { CreateCommitService.new }
let(:project) { FactoryGirl.create(:ci_project) } let(:project) { FactoryGirl.create(:ci_project) }
let(:user) { nil }
before do
stub_ci_commit_to_return_yaml_file
end
describe :execute do describe :execute do
context 'valid params' do context 'valid params' do
let(:commit) do let(:commit) do
service.execute(project, service.execute(project, user,
ref: 'refs/heads/master', ref: 'refs/heads/master',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -26,7 +31,7 @@ module Ci
context "skip tag if there is no build for it" do context "skip tag if there is no build for it" do
it "creates commit if there is appropriate job" do it "creates commit if there is appropriate job" do
result = service.execute(project, result = service.execute(project, user,
ref: 'refs/tags/0_1', ref: 'refs/tags/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -38,8 +43,9 @@ module Ci
it "creates commit if there is no appropriate job but deploy job has right ref setting" do it "creates commit if there is no appropriate job but deploy job has right ref setting" do
config = YAML.dump({ deploy: { deploy: "ls", only: ["0_1"] } }) config = YAML.dump({ deploy: { deploy: "ls", only: ["0_1"] } })
stub_ci_commit_yaml_file(config)
result = service.execute(project, result = service.execute(project, user,
ref: 'refs/heads/0_1', ref: 'refs/heads/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -51,11 +57,12 @@ module Ci
end end
it 'fails commits without .gitlab-ci.yml' do it 'fails commits without .gitlab-ci.yml' do
result = service.execute(project, stub_ci_commit_yaml_file(nil)
result = service.execute(project, user,
ref: 'refs/heads/0_1', ref: 'refs/heads/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
ci_yaml_file: config, ci_yaml_file: nil,
commits: [ { message: 'Message' } ] commits: [ { message: 'Message' } ]
) )
expect(result).to be_persisted expect(result).to be_persisted
@ -64,9 +71,15 @@ module Ci
end end
describe :ci_skip? do describe :ci_skip? do
let (:message) { "some message[ci skip]" }
before do
allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { message }
end
it "skips builds creation if there is [ci skip] tag in commit message" do it "skips builds creation if there is [ci skip] tag in commit message" do
commits = [{ message: "some message[ci skip]" }] commits = [{ message: message }]
commit = service.execute(project, commit = service.execute(project, user,
ref: 'refs/tags/0_1', ref: 'refs/tags/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -78,9 +91,10 @@ module Ci
end end
it "does not skips builds creation if there is no [ci skip] tag in commit message" do it "does not skips builds creation if there is no [ci skip] tag in commit message" do
commits = [{ message: "some message" }] allow_any_instance_of(Ci::Commit).to receive(:git_commit_message) { "some message" }
commit = service.execute(project, commits = [{ message: "some message" }]
commit = service.execute(project, user,
ref: 'refs/tags/0_1', ref: 'refs/tags/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -92,8 +106,9 @@ module Ci
end end
it "skips builds creation if there is [ci skip] tag in commit message and yaml is invalid" do it "skips builds creation if there is [ci skip] tag in commit message and yaml is invalid" do
commits = [{ message: "some message[ci skip]" }] stub_ci_commit_yaml_file('invalid: file')
commit = service.execute(project, commits = [{ message: message }]
commit = service.execute(project, user,
ref: 'refs/tags/0_1', ref: 'refs/tags/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -106,8 +121,10 @@ module Ci
end end
it "skips build creation if there are already builds" do it "skips build creation if there are already builds" do
allow_any_instance_of(Ci::Commit).to receive(:ci_yaml_file) { gitlab_ci_yaml }
commits = [{ message: "message" }] commits = [{ message: "message" }]
commit = service.execute(project, commit = service.execute(project, user,
ref: 'refs/heads/master', ref: 'refs/heads/master',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -116,7 +133,7 @@ module Ci
) )
expect(commit.builds.count(:all)).to eq(2) expect(commit.builds.count(:all)).to eq(2)
commit = service.execute(project, commit = service.execute(project, user,
ref: 'refs/heads/master', ref: 'refs/heads/master',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',
@ -127,9 +144,11 @@ module Ci
end end
it "creates commit with failed status if yaml is invalid" do it "creates commit with failed status if yaml is invalid" do
stub_ci_commit_yaml_file('invalid: file')
commits = [{ message: "some message" }] commits = [{ message: "some message" }]
commit = service.execute(project, commit = service.execute(project, user,
ref: 'refs/tags/0_1', ref: 'refs/tags/0_1',
before: '00000000', before: '00000000',
after: '31das312', after: '31das312',

View file

@ -13,6 +13,14 @@ module StubGitlabCalls
allow_any_instance_of(Network).to receive(:projects) { project_hash_array } allow_any_instance_of(Network).to receive(:projects) { project_hash_array }
end end
def stub_ci_commit_to_return_yaml_file
stub_ci_commit_yaml_file(gitlab_ci_yaml)
end
def stub_ci_commit_yaml_file(ci_yaml)
allow_any_instance_of(Ci::Commit).to receive(:ci_yaml_file) { ci_yaml }
end
private private
def gitlab_url def gitlab_url