summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Ang <andrew.ang@innohub.ph>2015-02-04 16:46:41 +0800
committerAndrew Ang <andrew.ang@innohub.ph>2015-02-04 17:12:36 +0800
commit28a22d8a4c378c088d163fb5b40ea8404b7fa494 (patch)
tree1d1465031629c00580b507969779b544e1e85f01
parent77c5ca246a0990aec80d237a73a70072c2c50bcb (diff)
downloadgitlab-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.rb6
-rw-r--r--app/views/projects/_form.html.haml4
-rw-r--r--spec/models/project_spec.rb17
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