diff options
author | Lin Jen-Shin <godfat@godfat.org> | 2016-06-01 18:34:20 +0800 |
---|---|---|
committer | Lin Jen-Shin <godfat@godfat.org> | 2016-06-09 16:00:24 +0800 |
commit | 4f7f3258c18dfc207b838401f5ed71a3197eb22d (patch) | |
tree | 000b69e4ab22149b118daa6fae1f23c8d6c10088 /spec/models | |
parent | 860760120843ea5ad003cc2f52b28cf0fc7c647b (diff) | |
download | gitlab-ce-4f7f3258c18dfc207b838401f5ed71a3197eb22d.tar.gz |
Implement the logic for locking runner
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/build_spec.rb | 55 |
1 files changed, 53 insertions, 2 deletions
diff --git a/spec/models/build_spec.rb b/spec/models/build_spec.rb index 7660ea2659c..8cd1ffae9ce 100644 --- a/spec/models/build_spec.rb +++ b/spec/models/build_spec.rb @@ -296,16 +296,67 @@ describe Ci::Build, models: true do it_behaves_like 'tagged build picker' end - context 'when runner can not pick untagged jobs' do + context 'when runner cannot pick untagged jobs' do before { runner.run_untagged = false } - it 'can not handle builds without tags' do + it 'cannot handle builds without tags' do expect(build.can_be_served?(runner)).to be_falsey end it_behaves_like 'tagged build picker' end end + + context 'when runner is locked' do + before { runner.locked = true } + + shared_examples 'locked build picker' do |serve_matching_tags| + context 'when runner cannot pick untagged jobs' do + before { runner.run_untagged = false } + + it 'cannot handle builds without tags' do + expect(build.can_be_served?(runner)).to be_falsey + end + end + + context 'when having runner tags' do + before { runner.tag_list = ['bb', 'cc'] } + + it "#{serve_matching_tags} handle it for matching tags" do + build.tag_list = ['bb'] + expected = if serve_matching_tags + be_truthy + else + be_falsey + end + expect(build.can_be_served?(runner)).to expected + end + + it 'cannot handle it for builds without matching tags' do + build.tag_list = ['aa'] + expect(build.can_be_served?(runner)).to be_falsey + end + end + end + + context 'when serving the same project' do + it 'can handle it' do + expect(build.can_be_served?(runner)).to be_truthy + end + + it_behaves_like 'locked build picker', true + end + + context 'serving a different project' do + before { runner.runner_projects.destroy_all } + + it 'cannot handle it' do + expect(build.can_be_served?(runner)).to be_falsey + end + + it_behaves_like 'locked build picker', false + end + end end describe '#has_tags?' do |