##// END OF EJS Templates
Rails3: scm: subversion: fix error of test_format_identifier at unit model test...
Toshi MARUYAMA -
r7035:c55dde85e907
parent child
Show More
@@ -1,211 +1,213
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
2 # Copyright (C) 2006-2011 Jean-Philippe Lang
3 #
3 #
4 # This program is free software; you can redistribute it and/or
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
7 # of the License, or (at your option) any later version.
8 #
8 #
9 # This program is distributed in the hope that it will be useful,
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
12 # GNU General Public License for more details.
13 #
13 #
14 # You should have received a copy of the GNU General Public License
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17
17
18 require File.expand_path('../../test_helper', __FILE__)
18 require File.expand_path('../../test_helper', __FILE__)
19
19
20 class RepositorySubversionTest < ActiveSupport::TestCase
20 class RepositorySubversionTest < ActiveSupport::TestCase
21 fixtures :projects, :repositories, :enabled_modules, :users, :roles
21 fixtures :projects, :repositories, :enabled_modules, :users, :roles
22
22
23 NUM_REV = 11
23 NUM_REV = 11
24
24
25 def setup
25 def setup
26 @project = Project.find(3)
26 @project = Project.find(3)
27 @repository = Repository::Subversion.create(:project => @project,
27 @repository = Repository::Subversion.create(:project => @project,
28 :url => self.class.subversion_repository_url)
28 :url => self.class.subversion_repository_url)
29 assert @repository
29 assert @repository
30 end
30 end
31
31
32 if repository_configured?('subversion')
32 if repository_configured?('subversion')
33 def test_fetch_changesets_from_scratch
33 def test_fetch_changesets_from_scratch
34 assert_equal 0, @repository.changesets.count
34 assert_equal 0, @repository.changesets.count
35 @repository.fetch_changesets
35 @repository.fetch_changesets
36 @project.reload
36 @project.reload
37
37
38 assert_equal NUM_REV, @repository.changesets.count
38 assert_equal NUM_REV, @repository.changesets.count
39 assert_equal 20, @repository.changes.count
39 assert_equal 20, @repository.changes.count
40 assert_equal 'Initial import.', @repository.changesets.find_by_revision('1').comments
40 assert_equal 'Initial import.', @repository.changesets.find_by_revision('1').comments
41 end
41 end
42
42
43 def test_fetch_changesets_incremental
43 def test_fetch_changesets_incremental
44 assert_equal 0, @repository.changesets.count
44 assert_equal 0, @repository.changesets.count
45 @repository.fetch_changesets
45 @repository.fetch_changesets
46 @project.reload
46 @project.reload
47 assert_equal NUM_REV, @repository.changesets.count
47 assert_equal NUM_REV, @repository.changesets.count
48
48
49 # Remove changesets with revision > 5
49 # Remove changesets with revision > 5
50 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 5}
50 @repository.changesets.find(:all).each {|c| c.destroy if c.revision.to_i > 5}
51 @project.reload
51 @project.reload
52 assert_equal 5, @repository.changesets.count
52 assert_equal 5, @repository.changesets.count
53
53
54 @repository.fetch_changesets
54 @repository.fetch_changesets
55 @project.reload
55 @project.reload
56 assert_equal NUM_REV, @repository.changesets.count
56 assert_equal NUM_REV, @repository.changesets.count
57 end
57 end
58
58
59 def test_latest_changesets
59 def test_latest_changesets
60 assert_equal 0, @repository.changesets.count
60 assert_equal 0, @repository.changesets.count
61 @repository.fetch_changesets
61 @repository.fetch_changesets
62 @project.reload
62 @project.reload
63 assert_equal NUM_REV, @repository.changesets.count
63 assert_equal NUM_REV, @repository.changesets.count
64
64
65 # with limit
65 # with limit
66 changesets = @repository.latest_changesets('', nil, 2)
66 changesets = @repository.latest_changesets('', nil, 2)
67 assert_equal 2, changesets.size
67 assert_equal 2, changesets.size
68 assert_equal @repository.latest_changesets('', nil).slice(0,2), changesets
68 assert_equal @repository.latest_changesets('', nil).slice(0,2), changesets
69
69
70 # with path
70 # with path
71 changesets = @repository.latest_changesets('subversion_test/folder', nil)
71 changesets = @repository.latest_changesets('subversion_test/folder', nil)
72 assert_equal ["10", "9", "7", "6", "5", "2"], changesets.collect(&:revision)
72 assert_equal ["10", "9", "7", "6", "5", "2"], changesets.collect(&:revision)
73
73
74 # with path and revision
74 # with path and revision
75 changesets = @repository.latest_changesets('subversion_test/folder', 8)
75 changesets = @repository.latest_changesets('subversion_test/folder', 8)
76 assert_equal ["7", "6", "5", "2"], changesets.collect(&:revision)
76 assert_equal ["7", "6", "5", "2"], changesets.collect(&:revision)
77 end
77 end
78
78
79 def test_directory_listing_with_square_brackets_in_path
79 def test_directory_listing_with_square_brackets_in_path
80 assert_equal 0, @repository.changesets.count
80 assert_equal 0, @repository.changesets.count
81 @repository.fetch_changesets
81 @repository.fetch_changesets
82 @project.reload
82 @project.reload
83 assert_equal NUM_REV, @repository.changesets.count
83 assert_equal NUM_REV, @repository.changesets.count
84
84
85 entries = @repository.entries('subversion_test/[folder_with_brackets]')
85 entries = @repository.entries('subversion_test/[folder_with_brackets]')
86 assert_not_nil entries, 'Expect to find entries in folder_with_brackets'
86 assert_not_nil entries, 'Expect to find entries in folder_with_brackets'
87 assert_equal 1, entries.size, 'Expect one entry in folder_with_brackets'
87 assert_equal 1, entries.size, 'Expect one entry in folder_with_brackets'
88 assert_equal 'README.txt', entries.first.name
88 assert_equal 'README.txt', entries.first.name
89 end
89 end
90
90
91 def test_directory_listing_with_square_brackets_in_base
91 def test_directory_listing_with_square_brackets_in_base
92 @project = Project.find(3)
92 @project = Project.find(3)
93 @repository = Repository::Subversion.create(
93 @repository = Repository::Subversion.create(
94 :project => @project,
94 :project => @project,
95 :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
95 :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
96
96
97 assert_equal 0, @repository.changesets.count
97 assert_equal 0, @repository.changesets.count
98 @repository.fetch_changesets
98 @repository.fetch_changesets
99 @project.reload
99 @project.reload
100
100
101 assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
101 assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
102 assert_equal 2, @repository.changes.count, 'Expected to see 2 changes, dir add and file add'
102 assert_equal 2, @repository.changes.count, 'Expected to see 2 changes, dir add and file add'
103
103
104 entries = @repository.entries('')
104 entries = @repository.entries('')
105 assert_not_nil entries, 'Expect to find entries'
105 assert_not_nil entries, 'Expect to find entries'
106 assert_equal 1, entries.size, 'Expect a single entry'
106 assert_equal 1, entries.size, 'Expect a single entry'
107 assert_equal 'README.txt', entries.first.name
107 assert_equal 'README.txt', entries.first.name
108 end
108 end
109
109
110 def test_identifier
110 def test_identifier
111 assert_equal 0, @repository.changesets.count
111 assert_equal 0, @repository.changesets.count
112 @repository.fetch_changesets
112 @repository.fetch_changesets
113 @project.reload
113 @project.reload
114 assert_equal NUM_REV, @repository.changesets.count
114 assert_equal NUM_REV, @repository.changesets.count
115 c = @repository.changesets.find_by_revision('1')
115 c = @repository.changesets.find_by_revision('1')
116 assert_equal c.revision, c.identifier
116 assert_equal c.revision, c.identifier
117 end
117 end
118
118
119 def test_find_changeset_by_empty_name
119 def test_find_changeset_by_empty_name
120 assert_equal 0, @repository.changesets.count
120 assert_equal 0, @repository.changesets.count
121 @repository.fetch_changesets
121 @repository.fetch_changesets
122 @project.reload
122 @project.reload
123 assert_equal NUM_REV, @repository.changesets.count
123 assert_equal NUM_REV, @repository.changesets.count
124 ['', ' ', nil].each do |r|
124 ['', ' ', nil].each do |r|
125 assert_nil @repository.find_changeset_by_name(r)
125 assert_nil @repository.find_changeset_by_name(r)
126 end
126 end
127 end
127 end
128
128
129 def test_identifier_nine_digit
129 def test_identifier_nine_digit
130 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
130 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
131 :revision => '123456789', :comments => 'test')
131 :revision => '123456789', :comments => 'test')
132 assert_equal c.identifier, c.revision
132 assert_equal c.identifier, c.revision
133 end
133 end
134
134
135 def test_format_identifier
135 def test_format_identifier
136 assert_equal 0, @repository.changesets.count
136 @repository.fetch_changesets
137 @repository.fetch_changesets
137 @repository.reload
138 @project.reload
139 assert_equal NUM_REV, @repository.changesets.count
138 c = @repository.changesets.find_by_revision('1')
140 c = @repository.changesets.find_by_revision('1')
139 assert_equal c.format_identifier, c.revision
141 assert_equal c.format_identifier, c.revision
140 end
142 end
141
143
142 def test_format_identifier_nine_digit
144 def test_format_identifier_nine_digit
143 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
145 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
144 :revision => '123456789', :comments => 'test')
146 :revision => '123456789', :comments => 'test')
145 assert_equal c.format_identifier, c.revision
147 assert_equal c.format_identifier, c.revision
146 end
148 end
147
149
148 def test_activities
150 def test_activities
149 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
151 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
150 :revision => '1', :comments => 'test')
152 :revision => '1', :comments => 'test')
151 assert c.event_title.include?('1:')
153 assert c.event_title.include?('1:')
152 assert_equal '1', c.event_url[:rev]
154 assert_equal '1', c.event_url[:rev]
153 end
155 end
154
156
155 def test_activities_nine_digit
157 def test_activities_nine_digit
156 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
158 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
157 :revision => '123456789', :comments => 'test')
159 :revision => '123456789', :comments => 'test')
158 assert c.event_title.include?('123456789:')
160 assert c.event_title.include?('123456789:')
159 assert_equal '123456789', c.event_url[:rev]
161 assert_equal '123456789', c.event_url[:rev]
160 end
162 end
161
163
162 def test_log_encoding_ignore_setting
164 def test_log_encoding_ignore_setting
163 with_settings :commit_logs_encoding => 'windows-1252' do
165 with_settings :commit_logs_encoding => 'windows-1252' do
164 s1 = "\xC2\x80"
166 s1 = "\xC2\x80"
165 s2 = "\xc3\x82\xc2\x80"
167 s2 = "\xc3\x82\xc2\x80"
166 if s1.respond_to?(:force_encoding)
168 if s1.respond_to?(:force_encoding)
167 s1.force_encoding('ISO-8859-1')
169 s1.force_encoding('ISO-8859-1')
168 s2.force_encoding('UTF-8')
170 s2.force_encoding('UTF-8')
169 assert_equal s1.encode('UTF-8'), s2
171 assert_equal s1.encode('UTF-8'), s2
170 end
172 end
171 c = Changeset.new(:repository => @repository,
173 c = Changeset.new(:repository => @repository,
172 :comments => s2,
174 :comments => s2,
173 :revision => '123',
175 :revision => '123',
174 :committed_on => Time.now)
176 :committed_on => Time.now)
175 assert c.save
177 assert c.save
176 assert_equal s2, c.comments
178 assert_equal s2, c.comments
177 end
179 end
178 end
180 end
179
181
180 def test_previous
182 def test_previous
181 @repository.fetch_changesets
183 @repository.fetch_changesets
182 @repository.reload
184 @repository.reload
183 changeset = @repository.find_changeset_by_name('3')
185 changeset = @repository.find_changeset_by_name('3')
184 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
186 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
185 end
187 end
186
188
187 def test_previous_nil
189 def test_previous_nil
188 @repository.fetch_changesets
190 @repository.fetch_changesets
189 @repository.reload
191 @repository.reload
190 changeset = @repository.find_changeset_by_name('1')
192 changeset = @repository.find_changeset_by_name('1')
191 assert_nil changeset.previous
193 assert_nil changeset.previous
192 end
194 end
193
195
194 def test_next
196 def test_next
195 @repository.fetch_changesets
197 @repository.fetch_changesets
196 @repository.reload
198 @repository.reload
197 changeset = @repository.find_changeset_by_name('2')
199 changeset = @repository.find_changeset_by_name('2')
198 assert_equal @repository.find_changeset_by_name('3'), changeset.next
200 assert_equal @repository.find_changeset_by_name('3'), changeset.next
199 end
201 end
200
202
201 def test_next_nil
203 def test_next_nil
202 @repository.fetch_changesets
204 @repository.fetch_changesets
203 @repository.reload
205 @repository.reload
204 changeset = @repository.find_changeset_by_name('11')
206 changeset = @repository.find_changeset_by_name('11')
205 assert_nil changeset.next
207 assert_nil changeset.next
206 end
208 end
207 else
209 else
208 puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
210 puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
209 def test_fake; assert true end
211 def test_fake; assert true end
210 end
212 end
211 end
213 end
General Comments 0
You need to be logged in to leave comments. Login now