From 551145bc98e257280b615e305d531a44d7aa4131 Mon Sep 17 00:00:00 2001 From: Robert Schilling Date: Sun, 27 Jul 2014 16:40:00 +0200 Subject: Validate branch-names and references in WebUI, API Add specs for GitRefValidator --- spec/lib/git_ref_validator_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 spec/lib/git_ref_validator_spec.rb (limited to 'spec/lib') diff --git a/spec/lib/git_ref_validator_spec.rb b/spec/lib/git_ref_validator_spec.rb new file mode 100644 index 00000000000..b2469c18395 --- /dev/null +++ b/spec/lib/git_ref_validator_spec.rb @@ -0,0 +1,20 @@ +require 'spec_helper' + +describe Gitlab::GitRefValidator do + it { Gitlab::GitRefValidator.validate('feature/new').should be_true } + it { Gitlab::GitRefValidator.validate('implement_@all').should be_true } + it { Gitlab::GitRefValidator.validate('my_new_feature').should be_true } + it { Gitlab::GitRefValidator.validate('#1').should be_true } + it { Gitlab::GitRefValidator.validate('feature/~new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/^new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/:new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/?new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/*new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/[new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/new/').should be_false } + it { Gitlab::GitRefValidator.validate('feature/new.').should be_false } + it { Gitlab::GitRefValidator.validate('feature\@{').should be_false } + it { Gitlab::GitRefValidator.validate('feature\new').should be_false } + it { Gitlab::GitRefValidator.validate('feature//new').should be_false } + it { Gitlab::GitRefValidator.validate('feature new').should be_false } +end -- cgit v1.2.1 From bde3f25d262b13d0139276786fe9d9cba29269b8 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 8 Sep 2014 20:42:12 +0300 Subject: Specs for diff parser! Yay! Signed-off-by: Dmitriy Zaporozhets --- spec/lib/gitlab/diff/file_spec.rb | 25 ++++++++++ spec/lib/gitlab/diff/parser_spec.rb | 95 +++++++++++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 spec/lib/gitlab/diff/file_spec.rb create mode 100644 spec/lib/gitlab/diff/parser_spec.rb (limited to 'spec/lib') diff --git a/spec/lib/gitlab/diff/file_spec.rb b/spec/lib/gitlab/diff/file_spec.rb new file mode 100644 index 00000000000..074c1255930 --- /dev/null +++ b/spec/lib/gitlab/diff/file_spec.rb @@ -0,0 +1,25 @@ +require 'spec_helper' + +describe Gitlab::Diff::File do + include RepoHelpers + + let(:project) { create(:project) } + let(:commit) { project.repository.commit(sample_commit.id) } + let(:diff) { commit.diffs.first } + let(:diff_file) { Gitlab::Diff::File.new(project, commit, diff) } + + describe :diff_lines do + let(:diff_lines) { diff_file.diff_lines } + + it { diff_lines.size.should == 30 } + it { diff_lines.first.should be_kind_of(Gitlab::Diff::Line) } + end + + describe :blob_exists? do + it { diff_file.blob_exists?.should be_true } + end + + describe :mode_changed? do + it { diff_file.mode_changed?.should be_false } + end +end diff --git a/spec/lib/gitlab/diff/parser_spec.rb b/spec/lib/gitlab/diff/parser_spec.rb new file mode 100644 index 00000000000..9ec906e4f9a --- /dev/null +++ b/spec/lib/gitlab/diff/parser_spec.rb @@ -0,0 +1,95 @@ +require 'spec_helper' + +describe Gitlab::Diff::Parser do + include RepoHelpers + + let(:project) { create(:project) } + let(:commit) { project.repository.commit(sample_commit.id) } + let(:diff) { commit.diffs.first } + let(:parser) { Gitlab::Diff::Parser.new } + + describe :parse do + let(:diff) do + < path } +- options = { chdir: path } ++ ++ vars = { ++ "PWD" => path ++ } ++ ++ options = { ++ chdir: path ++ } + + unless File.directory?(path) + FileUtils.mkdir_p(path) +@@ -19,6 +25,7 @@ module Popen + + @cmd_output = "" + @cmd_status = 0 ++ + Open3.popen3(vars, *cmd, options) do |stdin, stdout, stderr, wait_thr| + @cmd_output << stdout.read + @cmd_output << stderr.read +eos + end + + let(:path) { 'files/ruby/popen.rb' } + + before do + @lines = parser.parse(diff.lines, path, path) + end + + it { @lines.size.should == 30 } + + describe 'lines' do + describe 'first line' do + let(:line) { @lines.first } + + it { line.type.should == 'match' } + it { line.old_pos.should == 6 } + it { line.new_pos.should == 6 } + it { line.text.should == '@@ -6,12 +6,18 @@ module Popen' } + end + + describe 'removal line' do + let(:line) { @lines[10] } + + it { line.type.should == 'old' } + it { line.old_pos.should == 14 } + it { line.new_pos.should == 13 } + it { line.text.should == '- options = { chdir: path }' } + end + + describe 'addition line' do + let(:line) { @lines[16] } + + it { line.type.should == 'new' } + it { line.old_pos.should == 15 } + it { line.new_pos.should == 18 } + it { line.text.should == '+ options = {' } + end + + describe 'unchanged line' do + let(:line) { @lines.last } + + it { line.type.should == nil } + it { line.old_pos.should == 24 } + it { line.new_pos.should == 31 } + it { line.text.should == ' @cmd_output << stderr.read' } + end + end + end +end -- cgit v1.2.1 From 218219abbdfdc3bc0bc1a9c95cfc0e0ddb5861dd Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 8 Sep 2014 21:54:52 +0300 Subject: Refactoring inside refactoring. We need to go deeper Signed-off-by: Dmitriy Zaporozhets --- spec/lib/gitlab/diff/file_spec.rb | 6 +----- spec/lib/gitlab/diff/parser_spec.rb | 4 +--- 2 files changed, 2 insertions(+), 8 deletions(-) (limited to 'spec/lib') diff --git a/spec/lib/gitlab/diff/file_spec.rb b/spec/lib/gitlab/diff/file_spec.rb index 074c1255930..cf0b5c282c1 100644 --- a/spec/lib/gitlab/diff/file_spec.rb +++ b/spec/lib/gitlab/diff/file_spec.rb @@ -6,7 +6,7 @@ describe Gitlab::Diff::File do let(:project) { create(:project) } let(:commit) { project.repository.commit(sample_commit.id) } let(:diff) { commit.diffs.first } - let(:diff_file) { Gitlab::Diff::File.new(project, commit, diff) } + let(:diff_file) { Gitlab::Diff::File.new(diff) } describe :diff_lines do let(:diff_lines) { diff_file.diff_lines } @@ -15,10 +15,6 @@ describe Gitlab::Diff::File do it { diff_lines.first.should be_kind_of(Gitlab::Diff::Line) } end - describe :blob_exists? do - it { diff_file.blob_exists?.should be_true } - end - describe :mode_changed? do it { diff_file.mode_changed?.should be_false } end diff --git a/spec/lib/gitlab/diff/parser_spec.rb b/spec/lib/gitlab/diff/parser_spec.rb index 9ec906e4f9a..35b78260acd 100644 --- a/spec/lib/gitlab/diff/parser_spec.rb +++ b/spec/lib/gitlab/diff/parser_spec.rb @@ -46,10 +46,8 @@ describe Gitlab::Diff::Parser do eos end - let(:path) { 'files/ruby/popen.rb' } - before do - @lines = parser.parse(diff.lines, path, path) + @lines = parser.parse(diff.lines) end it { @lines.size.should == 30 } -- cgit v1.2.1