Commit 7825830ca51dc7bf84ca6216c3b66e3ce1c63c44

Authored by Dmitriy Zaporozhets
1 parent a36195bd

Allow project name, path etc start with number. Fixed specs

app/models/project.rb
@@ -73,11 +73,11 @@ class Project < ActiveRecord::Base @@ -73,11 +73,11 @@ class Project < ActiveRecord::Base
73 validates :description, length: { within: 0..2000 } 73 validates :description, length: { within: 0..2000 }
74 validates :name, presence: true, length: { within: 0..255 }, 74 validates :name, presence: true, length: { within: 0..255 },
75 format: { with: Gitlab::Regex.project_name_regex, 75 format: { with: Gitlab::Regex.project_name_regex,
76 - message: "only letters, digits, spaces & '_' '-' '.' allowed. Letter should be first" } 76 + message: "only letters, digits, spaces & '_' '-' '.' allowed. Letter or digit should be first" }
77 validates :path, presence: true, length: { within: 0..255 }, 77 validates :path, presence: true, length: { within: 0..255 },
78 exclusion: { in: Gitlab::Blacklist.path }, 78 exclusion: { in: Gitlab::Blacklist.path },
79 format: { with: Gitlab::Regex.path_regex, 79 format: { with: Gitlab::Regex.path_regex,
80 - message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } 80 + message: "only letters, digits & '_' '-' '.' allowed. Letter or digit should be first" }
81 validates :issues_enabled, :wall_enabled, :merge_requests_enabled, 81 validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
82 :wiki_enabled, inclusion: { in: [true, false] } 82 :wiki_enabled, inclusion: { in: [true, false] }
83 validates :issues_tracker_id, length: { within: 0..255 } 83 validates :issues_tracker_id, length: { within: 0..255 }
lib/gitlab/regex.rb
@@ -7,7 +7,7 @@ module Gitlab @@ -7,7 +7,7 @@ module Gitlab
7 end 7 end
8 8
9 def project_name_regex 9 def project_name_regex
10 - /\A[a-zA-Z][a-zA-Z0-9_\-\. ]*\z/ 10 + /\A[a-zA-Z0-9][a-zA-Z0-9_\-\. ]*\z/
11 end 11 end
12 12
13 def name_regex 13 def name_regex
@@ -21,7 +21,7 @@ module Gitlab @@ -21,7 +21,7 @@ module Gitlab
21 protected 21 protected
22 22
23 def default_regex 23 def default_regex
24 - /\A[a-zA-Z][a-zA-Z0-9_\-\.]*\z/ 24 + /\A[a-zA-Z0-9][a-zA-Z0-9_\-\.]*\z/
25 end 25 end
26 end 26 end
27 end 27 end
spec/models/commit_spec.rb
@@ -9,11 +9,11 @@ describe Commit do @@ -9,11 +9,11 @@ describe Commit do
9 commit.title.should == "--no commit message" 9 commit.title.should == "--no commit message"
10 end 10 end
11 11
12 - it "truncates a message without a newline at 70 characters" do 12 + it "truncates a message without a newline at 80 characters" do
13 message = commit.safe_message * 10 13 message = commit.safe_message * 10
14 14
15 commit.stub(:safe_message).and_return(message) 15 commit.stub(:safe_message).and_return(message)
16 - commit.title.should == "#{message[0..69]}…" 16 + commit.title.should == "#{message[0..79]}…"
17 end 17 end
18 18
19 it "truncates a message with a newline before 80 characters at the newline" do 19 it "truncates a message with a newline before 80 characters at the newline" do
@@ -27,7 +27,7 @@ describe Commit do @@ -27,7 +27,7 @@ describe Commit do
27 message = (commit.safe_message * 10) + "\n" 27 message = (commit.safe_message * 10) + "\n"
28 28
29 commit.stub(:safe_message).and_return(message) 29 commit.stub(:safe_message).and_return(message)
30 - commit.title.should == "#{message[0..69]}…" 30 + commit.title.should == "#{message[0..79]}…"
31 end 31 end
32 end 32 end
33 33
spec/models/project_spec.rb
@@ -68,9 +68,10 @@ describe Project do @@ -68,9 +68,10 @@ describe Project do
68 it { should ensure_length_of(:issues_tracker_id).is_within(0..255) } 68 it { should ensure_length_of(:issues_tracker_id).is_within(0..255) }
69 69
70 it "should not allow new projects beyond user limits" do 70 it "should not allow new projects beyond user limits" do
71 - project.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 1))  
72 - project.should_not be_valid  
73 - project.errors[:limit_reached].first.should match(/Your own projects limit is 1/) 71 + project2 = build(:project)
  72 + project2.stub(:creator).and_return(double(can_create_project?: false, projects_limit: 0))
  73 + project2.should_not be_valid
  74 + project2.errors[:limit_reached].first.should match(/Your own projects limit is 0/)
74 end 75 end
75 end 76 end
76 77