diff options
Diffstat (limited to 'spec')
-rw-r--r-- | spec/factories/builds.rb | 33 | ||||
-rw-r--r-- | spec/factories/commits.rb | 12 | ||||
-rw-r--r-- | spec/lib/gitlab_ci_yaml_processor_spec.rb | 21 | ||||
-rw-r--r-- | spec/models/build_spec.rb | 69 | ||||
-rw-r--r-- | spec/models/project_services/hip_chat_message_spec.rb | 9 | ||||
-rw-r--r-- | spec/models/project_services/slack_message_spec.rb | 13 | ||||
-rw-r--r-- | spec/support/gitlab_stubs/gitlab_ci.yml | 1 |
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 |