diff options
author | Andrew Ang <andrew.ang@innohub.ph> | 2015-02-04 16:46:41 +0800 |
---|---|---|
committer | Andrew Ang <andrew.ang@innohub.ph> | 2015-02-04 17:12:36 +0800 |
commit | 28a22d8a4c378c088d163fb5b40ea8404b7fa494 (patch) | |
tree | 1d1465031629c00580b507969779b544e1e85f01 | |
parent | 77c5ca246a0990aec80d237a73a70072c2c50bcb (diff) | |
download | gitlab-ci-allow_regex_for_project_skip_ref.tar.gz |
Allow Project#skip_refs to accept & match regexallow_regex_for_project_skip_ref
* Added rspec tests for #skip_ref?
* Allow regex matching
* Added hints on Project form
-rw-r--r-- | app/models/project.rb | 6 | ||||
-rw-r--r-- | app/views/projects/_form.html.haml | 4 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 17 |
3 files changed, 25 insertions, 2 deletions
diff --git a/app/models/project.rb b/app/models/project.rb index 68dafed..ed10044 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -155,7 +155,11 @@ ls -la def skip_ref?(ref_name) if skip_refs.present? - skip_refs.delete(" ").split(",").include?(ref_name) + skip_refs.delete(" ").split(",").each do |ref| + return true unless ref_name !~ Regexp.new(ref) + end + + false else false end diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index 123d15f..ea9328a 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -124,7 +124,9 @@ .form-group = f.label :skip_refs, "Skip refs", class: 'control-label' .col-sm-10 - = f.text_field :skip_refs, class: 'form-control', placeholder: 'branch1, branch2' + = f.text_field :skip_refs, class: 'form-control', placeholder: 'branch1, branch2, feature/*' + .light + You can specify git references to skip CI builds. Accepts strings and regex values .form-actions = f.submit 'Save changes', class: 'btn btn-save' diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index c928567..55740f3 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -132,4 +132,21 @@ describe Project do it { should include('gitlab-ci-token') } it { should include(project.gitlab_url[7..-1]) } end + + describe "#skip_ref?" do + let(:project) { FactoryGirl.create(:project, skip_refs: "master, develop, feature/.*, hotfix/*") } + + it 'returns true when item is not in list' do + expect(project.skip_ref?('someotherstring')).to eq false + end + + it 'accepts string values' do + expect(project.skip_ref?('master')).to eq true + end + + it 'accepts regex values' do + expect(project.skip_ref?('feature/some_feature')).to eq true + expect(project.skip_ref?('feature/ssh_fix')).to eq true + end + end end |