##// END OF EJS Templates
Rails3: scm: subversion: fix error of test_directory_listing_with_square_brackets_in_base at unit model test...
Toshi MARUYAMA -
r7032:91a1808ff3c7
parent child
Show More
@@ -1,206 +1,207
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 @repository.fetch_changesets
98 @repository.fetch_changesets
98 @repository.reload
99 @project.reload
99
100
100 assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
101 assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
101 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'
102
103
103 entries = @repository.entries('')
104 entries = @repository.entries('')
104 assert_not_nil entries, 'Expect to find entries'
105 assert_not_nil entries, 'Expect to find entries'
105 assert_equal 1, entries.size, 'Expect a single entry'
106 assert_equal 1, entries.size, 'Expect a single entry'
106 assert_equal 'README.txt', entries.first.name
107 assert_equal 'README.txt', entries.first.name
107 end
108 end
108
109
109 def test_identifier
110 def test_identifier
110 @repository.fetch_changesets
111 @repository.fetch_changesets
111 @repository.reload
112 @repository.reload
112 c = @repository.changesets.find_by_revision('1')
113 c = @repository.changesets.find_by_revision('1')
113 assert_equal c.revision, c.identifier
114 assert_equal c.revision, c.identifier
114 end
115 end
115
116
116 def test_find_changeset_by_empty_name
117 def test_find_changeset_by_empty_name
117 @repository.fetch_changesets
118 @repository.fetch_changesets
118 @repository.reload
119 @repository.reload
119 ['', ' ', nil].each do |r|
120 ['', ' ', nil].each do |r|
120 assert_nil @repository.find_changeset_by_name(r)
121 assert_nil @repository.find_changeset_by_name(r)
121 end
122 end
122 end
123 end
123
124
124 def test_identifier_nine_digit
125 def test_identifier_nine_digit
125 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
126 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
126 :revision => '123456789', :comments => 'test')
127 :revision => '123456789', :comments => 'test')
127 assert_equal c.identifier, c.revision
128 assert_equal c.identifier, c.revision
128 end
129 end
129
130
130 def test_format_identifier
131 def test_format_identifier
131 @repository.fetch_changesets
132 @repository.fetch_changesets
132 @repository.reload
133 @repository.reload
133 c = @repository.changesets.find_by_revision('1')
134 c = @repository.changesets.find_by_revision('1')
134 assert_equal c.format_identifier, c.revision
135 assert_equal c.format_identifier, c.revision
135 end
136 end
136
137
137 def test_format_identifier_nine_digit
138 def test_format_identifier_nine_digit
138 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
139 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
139 :revision => '123456789', :comments => 'test')
140 :revision => '123456789', :comments => 'test')
140 assert_equal c.format_identifier, c.revision
141 assert_equal c.format_identifier, c.revision
141 end
142 end
142
143
143 def test_activities
144 def test_activities
144 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
145 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
145 :revision => '1', :comments => 'test')
146 :revision => '1', :comments => 'test')
146 assert c.event_title.include?('1:')
147 assert c.event_title.include?('1:')
147 assert_equal '1', c.event_url[:rev]
148 assert_equal '1', c.event_url[:rev]
148 end
149 end
149
150
150 def test_activities_nine_digit
151 def test_activities_nine_digit
151 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
152 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
152 :revision => '123456789', :comments => 'test')
153 :revision => '123456789', :comments => 'test')
153 assert c.event_title.include?('123456789:')
154 assert c.event_title.include?('123456789:')
154 assert_equal '123456789', c.event_url[:rev]
155 assert_equal '123456789', c.event_url[:rev]
155 end
156 end
156
157
157 def test_log_encoding_ignore_setting
158 def test_log_encoding_ignore_setting
158 with_settings :commit_logs_encoding => 'windows-1252' do
159 with_settings :commit_logs_encoding => 'windows-1252' do
159 s1 = "\xC2\x80"
160 s1 = "\xC2\x80"
160 s2 = "\xc3\x82\xc2\x80"
161 s2 = "\xc3\x82\xc2\x80"
161 if s1.respond_to?(:force_encoding)
162 if s1.respond_to?(:force_encoding)
162 s1.force_encoding('ISO-8859-1')
163 s1.force_encoding('ISO-8859-1')
163 s2.force_encoding('UTF-8')
164 s2.force_encoding('UTF-8')
164 assert_equal s1.encode('UTF-8'), s2
165 assert_equal s1.encode('UTF-8'), s2
165 end
166 end
166 c = Changeset.new(:repository => @repository,
167 c = Changeset.new(:repository => @repository,
167 :comments => s2,
168 :comments => s2,
168 :revision => '123',
169 :revision => '123',
169 :committed_on => Time.now)
170 :committed_on => Time.now)
170 assert c.save
171 assert c.save
171 assert_equal s2, c.comments
172 assert_equal s2, c.comments
172 end
173 end
173 end
174 end
174
175
175 def test_previous
176 def test_previous
176 @repository.fetch_changesets
177 @repository.fetch_changesets
177 @repository.reload
178 @repository.reload
178 changeset = @repository.find_changeset_by_name('3')
179 changeset = @repository.find_changeset_by_name('3')
179 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
180 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
180 end
181 end
181
182
182 def test_previous_nil
183 def test_previous_nil
183 @repository.fetch_changesets
184 @repository.fetch_changesets
184 @repository.reload
185 @repository.reload
185 changeset = @repository.find_changeset_by_name('1')
186 changeset = @repository.find_changeset_by_name('1')
186 assert_nil changeset.previous
187 assert_nil changeset.previous
187 end
188 end
188
189
189 def test_next
190 def test_next
190 @repository.fetch_changesets
191 @repository.fetch_changesets
191 @repository.reload
192 @repository.reload
192 changeset = @repository.find_changeset_by_name('2')
193 changeset = @repository.find_changeset_by_name('2')
193 assert_equal @repository.find_changeset_by_name('3'), changeset.next
194 assert_equal @repository.find_changeset_by_name('3'), changeset.next
194 end
195 end
195
196
196 def test_next_nil
197 def test_next_nil
197 @repository.fetch_changesets
198 @repository.fetch_changesets
198 @repository.reload
199 @repository.reload
199 changeset = @repository.find_changeset_by_name('11')
200 changeset = @repository.find_changeset_by_name('11')
200 assert_nil changeset.next
201 assert_nil changeset.next
201 end
202 end
202 else
203 else
203 puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
204 puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
204 def test_fake; assert true end
205 def test_fake; assert true end
205 end
206 end
206 end
207 end
General Comments 0
You need to be logged in to leave comments. Login now