summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/factories/builds.rb33
-rw-r--r--spec/factories/commits.rb12
-rw-r--r--spec/lib/gitlab_ci_yaml_processor_spec.rb21
-rw-r--r--spec/models/build_spec.rb69
-rw-r--r--spec/models/project_services/hip_chat_message_spec.rb9
-rw-r--r--spec/models/project_services/slack_message_spec.rb13
-rw-r--r--spec/support/gitlab_stubs/gitlab_ci.yml1
7 files changed, 103 insertions, 55 deletions
diff --git a/spec/factories/builds.rb b/spec/factories/builds.rb
index bddf6eb..af63bbd 100644
--- a/spec/factories/builds.rb
+++ b/spec/factories/builds.rb
@@ -2,22 +2,23 @@
#
# Table name: builds
#
-# id :integer not null, primary key
-# project_id :integer
-# status :string(255)
-# finished_at :datetime
-# trace :text
-# created_at :datetime
-# updated_at :datetime
-# started_at :datetime
-# runner_id :integer
-# commit_id :integer
-# coverage :float
-# commands :text
-# options :text
-# job_id :integer
-# name :string(255)
-# deploy :boolean default(FALSE)
+# id :integer not null, primary key
+# project_id :integer
+# status :string(255)
+# finished_at :datetime
+# trace :text
+# created_at :datetime
+# updated_at :datetime
+# started_at :datetime
+# runner_id :integer
+# commit_id :integer
+# coverage :float
+# commands :text
+# job_id :integer
+# name :string(255)
+# deploy :boolean default(FALSE)
+# options :text
+# allow_failure :boolean default(FALSE), not null
#
# Read about factories at https://github.com/thoughtbot/factory_girl
diff --git a/spec/factories/commits.rb b/spec/factories/commits.rb
index 1f4a383..4a411ee 100644
--- a/spec/factories/commits.rb
+++ b/spec/factories/commits.rb
@@ -49,5 +49,17 @@ FactoryGirl.define do
ci_yaml_file: File.read(Rails.root.join('spec/support/gitlab_stubs/gitlab_ci.yml'))
}
end
+
+ factory :commit_with_one_job do
+ after(:create) do |commit, evaluator|
+ commit.push_data[:ci_yaml_file] = YAML.dump({rspec: { script: "ls" }})
+ end
+ end
+
+ factory :commit_with_two_jobs do
+ after(:create) do |commit, evaluator|
+ commit.push_data[:ci_yaml_file] = YAML.dump({rspec: { script: "ls" }, spinach: { script: "ls" }})
+ end
+ end
end
end
diff --git a/spec/lib/gitlab_ci_yaml_processor_spec.rb b/spec/lib/gitlab_ci_yaml_processor_spec.rb
index 9c9fde9..5f202b2 100644
--- a/spec/lib/gitlab_ci_yaml_processor_spec.rb
+++ b/spec/lib/gitlab_ci_yaml_processor_spec.rb
@@ -18,7 +18,8 @@ describe GitlabCiYamlProcessor do
only: nil,
script: "pwd\nrspec",
tags: [],
- options: {}
+ options: {},
+ allow_failure: false
}
end
@@ -71,7 +72,7 @@ describe GitlabCiYamlProcessor do
it "returns builds if no branch specified" do
config = YAML.dump({
before_script: ["pwd"],
- rspec: {script: "rspec", type: "deploy"}
+ rspec: {script: "rspec", type: "deploy", allow_failure: true}
})
config_processor = GitlabCiYamlProcessor.new(config)
@@ -83,7 +84,8 @@ describe GitlabCiYamlProcessor do
only: nil,
script: "pwd\nrspec",
tags: [],
- options: {}
+ options: {},
+ allow_failure: true
}
end
@@ -153,7 +155,8 @@ describe GitlabCiYamlProcessor do
options: {
image: "ruby:2.1",
services: ["mysql"]
- }
+ },
+ allow_failure: false
}
end
@@ -177,7 +180,8 @@ describe GitlabCiYamlProcessor do
options: {
image: "ruby:2.5",
services: ["postgresql"]
- }
+ },
+ allow_failure: false
}
end
end
@@ -256,5 +260,12 @@ describe GitlabCiYamlProcessor do
GitlabCiYamlProcessor.new(config)
end.to raise_error(GitlabCiYamlProcessor::ValidationError, "Please define at least one job")
end
+
+ it "returns errors if job allow_failure parameter is not an boolean" do
+ config = YAML.dump({rspec: {script: "test", allow_failure: "string"}})
+ expect do
+ GitlabCiYamlProcessor.new(config)
+ end.to raise_error(GitlabCiYamlProcessor::ValidationError, "rspec job: allow_failure parameter should be an boolean")
+ end
end
end \ No newline at end of file
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb
index 8bc9807..7e1c7e9 100644
--- a/spec/models/build_spec.rb
+++ b/spec/models/build_spec.rb
@@ -2,22 +2,23 @@
#
# Table name: builds
#
-# id :integer not null, primary key
-# project_id :integer
-# status :string(255)
-# finished_at :datetime
-# trace :text
-# created_at :datetime
-# updated_at :datetime
-# started_at :datetime
-# runner_id :integer
-# commit_id :integer
-# coverage :float
-# commands :text
-# options :text
-# job_id :integer
-# name :string(255)
-# deploy :boolean default(FALSE)
+# id :integer not null, primary key
+# project_id :integer
+# status :string(255)
+# finished_at :datetime
+# trace :text
+# created_at :datetime
+# updated_at :datetime
+# started_at :datetime
+# runner_id :integer
+# commit_id :integer
+# coverage :float
+# commands :text
+# job_id :integer
+# name :string(255)
+# deploy :boolean default(FALSE)
+# options :text
+# allow_failure :boolean default(FALSE), not null
#
require 'spec_helper'
@@ -126,6 +127,42 @@ describe Build do
end
end
+ describe :ignored? do
+ subject { build.ignored? }
+
+ context 'if build is not allowed to fail' do
+ before { build.allow_failure = false }
+
+ context 'and build.status is success' do
+ before { build.status = 'success' }
+
+ it { should be_false }
+ end
+
+ context 'and build.status is failed' do
+ before { build.status = 'failed' }
+
+ it { should be_false }
+ end
+ end
+
+ context 'if build is allowed to fail' do
+ before { build.allow_failure = true }
+
+ context 'and build.status is success' do
+ before { build.status = 'success' }
+
+ it { should be_false }
+ end
+
+ context 'and build.status is failed' do
+ before { build.status = 'failed' }
+
+ it { should be_true }
+ end
+ end
+ end
+
describe :trace do
subject { build.trace_html }
diff --git a/spec/models/project_services/hip_chat_message_spec.rb b/spec/models/project_services/hip_chat_message_spec.rb
index 1afe3ed..f1ad875 100644
--- a/spec/models/project_services/hip_chat_message_spec.rb
+++ b/spec/models/project_services/hip_chat_message_spec.rb
@@ -6,12 +6,7 @@ describe HipChatMessage do
let(:project) { FactoryGirl.create(:project) }
context "One build" do
- let(:commit) do
- commit = FactoryGirl.create(:commit, project: project)
- commit.push_data[:ci_yaml_file] = YAML.dump({rspec: { script: 'pwd' }})
- commit.save
- commit
- end
+ let(:commit) { FactoryGirl.create(:commit_with_one_job, project: project) }
let(:build) do
commit.create_builds
@@ -42,7 +37,7 @@ describe HipChatMessage do
end
context "Several builds" do
- let(:commit) {commit = FactoryGirl.create(:commit, project: project)}
+ let(:commit) { FactoryGirl.create(:commit_with_two_jobs, project: project) }
let(:build) do
commit.builds.first
diff --git a/spec/models/project_services/slack_message_spec.rb b/spec/models/project_services/slack_message_spec.rb
index f60f89c..88e0f37 100644
--- a/spec/models/project_services/slack_message_spec.rb
+++ b/spec/models/project_services/slack_message_spec.rb
@@ -6,12 +6,7 @@ describe SlackMessage do
let(:project) { FactoryGirl.create :project }
context "One build" do
- let(:commit) do
- commit = FactoryGirl.create(:commit, project: project)
- commit.push_data[:ci_yaml_file] = YAML.dump({rspec: { script: "ls" }})
- commit.save
- commit
- end
+ let(:commit) { FactoryGirl.create(:commit_with_one_job, project: project) }
let(:build) do
commit.create_builds
@@ -48,11 +43,7 @@ describe SlackMessage do
end
context "Several builds" do
- let(:commit) {commit = FactoryGirl.create(:commit, project: project)}
-
- let(:build) do
- commit.builds.first
- end
+ let(:commit) { FactoryGirl.create(:commit_with_two_jobs, project: project) }
context 'when all matrix builds succeeded' do
let(:color) { 'good' }
diff --git a/spec/support/gitlab_stubs/gitlab_ci.yml b/spec/support/gitlab_stubs/gitlab_ci.yml
index 4f0f106..4095d6a 100644
--- a/spec/support/gitlab_stubs/gitlab_ci.yml
+++ b/spec/support/gitlab_stubs/gitlab_ci.yml
@@ -17,6 +17,7 @@ rspec:
spinach:
script: "rake spinach"
+ allow_failure: true
tags:
- ruby
- mysql