##// END OF EJS Templates
Rails3: scm: subversion: fix error of test_fetch_changesets_incremental at unit model test...
Toshi MARUYAMA -
r7029:9fda3e4aabbe
parent child
Show More
@@ -1,196 +1,201
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 @repository.fetch_changesets
45 @repository.fetch_changesets
46 @project.reload
47 assert_equal NUM_REV, @repository.changesets.count
48
45 # Remove changesets with revision > 5
49 # Remove changesets with revision > 5
46 @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}
47 @repository.reload
51 @project.reload
48 assert_equal 5, @repository.changesets.count
52 assert_equal 5, @repository.changesets.count
49
53
50 @repository.fetch_changesets
54 @repository.fetch_changesets
51 assert_equal 11, @repository.changesets.count
55 @project.reload
56 assert_equal NUM_REV, @repository.changesets.count
52 end
57 end
53
58
54 def test_latest_changesets
59 def test_latest_changesets
55 @repository.fetch_changesets
60 @repository.fetch_changesets
56
61
57 # with limit
62 # with limit
58 changesets = @repository.latest_changesets('', nil, 2)
63 changesets = @repository.latest_changesets('', nil, 2)
59 assert_equal 2, changesets.size
64 assert_equal 2, changesets.size
60 assert_equal @repository.latest_changesets('', nil).slice(0,2), changesets
65 assert_equal @repository.latest_changesets('', nil).slice(0,2), changesets
61
66
62 # with path
67 # with path
63 changesets = @repository.latest_changesets('subversion_test/folder', nil)
68 changesets = @repository.latest_changesets('subversion_test/folder', nil)
64 assert_equal ["10", "9", "7", "6", "5", "2"], changesets.collect(&:revision)
69 assert_equal ["10", "9", "7", "6", "5", "2"], changesets.collect(&:revision)
65
70
66 # with path and revision
71 # with path and revision
67 changesets = @repository.latest_changesets('subversion_test/folder', 8)
72 changesets = @repository.latest_changesets('subversion_test/folder', 8)
68 assert_equal ["7", "6", "5", "2"], changesets.collect(&:revision)
73 assert_equal ["7", "6", "5", "2"], changesets.collect(&:revision)
69 end
74 end
70
75
71 def test_directory_listing_with_square_brackets_in_path
76 def test_directory_listing_with_square_brackets_in_path
72 @repository.fetch_changesets
77 @repository.fetch_changesets
73 @repository.reload
78 @repository.reload
74
79
75 entries = @repository.entries('subversion_test/[folder_with_brackets]')
80 entries = @repository.entries('subversion_test/[folder_with_brackets]')
76 assert_not_nil entries, 'Expect to find entries in folder_with_brackets'
81 assert_not_nil entries, 'Expect to find entries in folder_with_brackets'
77 assert_equal 1, entries.size, 'Expect one entry in folder_with_brackets'
82 assert_equal 1, entries.size, 'Expect one entry in folder_with_brackets'
78 assert_equal 'README.txt', entries.first.name
83 assert_equal 'README.txt', entries.first.name
79 end
84 end
80
85
81 def test_directory_listing_with_square_brackets_in_base
86 def test_directory_listing_with_square_brackets_in_base
82 @project = Project.find(3)
87 @project = Project.find(3)
83 @repository = Repository::Subversion.create(
88 @repository = Repository::Subversion.create(
84 :project => @project,
89 :project => @project,
85 :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
90 :url => "file:///#{self.class.repository_path('subversion')}/subversion_test/[folder_with_brackets]")
86
91
87 @repository.fetch_changesets
92 @repository.fetch_changesets
88 @repository.reload
93 @repository.reload
89
94
90 assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
95 assert_equal 1, @repository.changesets.count, 'Expected to see 1 revision'
91 assert_equal 2, @repository.changes.count, 'Expected to see 2 changes, dir add and file add'
96 assert_equal 2, @repository.changes.count, 'Expected to see 2 changes, dir add and file add'
92
97
93 entries = @repository.entries('')
98 entries = @repository.entries('')
94 assert_not_nil entries, 'Expect to find entries'
99 assert_not_nil entries, 'Expect to find entries'
95 assert_equal 1, entries.size, 'Expect a single entry'
100 assert_equal 1, entries.size, 'Expect a single entry'
96 assert_equal 'README.txt', entries.first.name
101 assert_equal 'README.txt', entries.first.name
97 end
102 end
98
103
99 def test_identifier
104 def test_identifier
100 @repository.fetch_changesets
105 @repository.fetch_changesets
101 @repository.reload
106 @repository.reload
102 c = @repository.changesets.find_by_revision('1')
107 c = @repository.changesets.find_by_revision('1')
103 assert_equal c.revision, c.identifier
108 assert_equal c.revision, c.identifier
104 end
109 end
105
110
106 def test_find_changeset_by_empty_name
111 def test_find_changeset_by_empty_name
107 @repository.fetch_changesets
112 @repository.fetch_changesets
108 @repository.reload
113 @repository.reload
109 ['', ' ', nil].each do |r|
114 ['', ' ', nil].each do |r|
110 assert_nil @repository.find_changeset_by_name(r)
115 assert_nil @repository.find_changeset_by_name(r)
111 end
116 end
112 end
117 end
113
118
114 def test_identifier_nine_digit
119 def test_identifier_nine_digit
115 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
120 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
116 :revision => '123456789', :comments => 'test')
121 :revision => '123456789', :comments => 'test')
117 assert_equal c.identifier, c.revision
122 assert_equal c.identifier, c.revision
118 end
123 end
119
124
120 def test_format_identifier
125 def test_format_identifier
121 @repository.fetch_changesets
126 @repository.fetch_changesets
122 @repository.reload
127 @repository.reload
123 c = @repository.changesets.find_by_revision('1')
128 c = @repository.changesets.find_by_revision('1')
124 assert_equal c.format_identifier, c.revision
129 assert_equal c.format_identifier, c.revision
125 end
130 end
126
131
127 def test_format_identifier_nine_digit
132 def test_format_identifier_nine_digit
128 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
133 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
129 :revision => '123456789', :comments => 'test')
134 :revision => '123456789', :comments => 'test')
130 assert_equal c.format_identifier, c.revision
135 assert_equal c.format_identifier, c.revision
131 end
136 end
132
137
133 def test_activities
138 def test_activities
134 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
139 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
135 :revision => '1', :comments => 'test')
140 :revision => '1', :comments => 'test')
136 assert c.event_title.include?('1:')
141 assert c.event_title.include?('1:')
137 assert_equal '1', c.event_url[:rev]
142 assert_equal '1', c.event_url[:rev]
138 end
143 end
139
144
140 def test_activities_nine_digit
145 def test_activities_nine_digit
141 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
146 c = Changeset.new(:repository => @repository, :committed_on => Time.now,
142 :revision => '123456789', :comments => 'test')
147 :revision => '123456789', :comments => 'test')
143 assert c.event_title.include?('123456789:')
148 assert c.event_title.include?('123456789:')
144 assert_equal '123456789', c.event_url[:rev]
149 assert_equal '123456789', c.event_url[:rev]
145 end
150 end
146
151
147 def test_log_encoding_ignore_setting
152 def test_log_encoding_ignore_setting
148 with_settings :commit_logs_encoding => 'windows-1252' do
153 with_settings :commit_logs_encoding => 'windows-1252' do
149 s1 = "\xC2\x80"
154 s1 = "\xC2\x80"
150 s2 = "\xc3\x82\xc2\x80"
155 s2 = "\xc3\x82\xc2\x80"
151 if s1.respond_to?(:force_encoding)
156 if s1.respond_to?(:force_encoding)
152 s1.force_encoding('ISO-8859-1')
157 s1.force_encoding('ISO-8859-1')
153 s2.force_encoding('UTF-8')
158 s2.force_encoding('UTF-8')
154 assert_equal s1.encode('UTF-8'), s2
159 assert_equal s1.encode('UTF-8'), s2
155 end
160 end
156 c = Changeset.new(:repository => @repository,
161 c = Changeset.new(:repository => @repository,
157 :comments => s2,
162 :comments => s2,
158 :revision => '123',
163 :revision => '123',
159 :committed_on => Time.now)
164 :committed_on => Time.now)
160 assert c.save
165 assert c.save
161 assert_equal s2, c.comments
166 assert_equal s2, c.comments
162 end
167 end
163 end
168 end
164
169
165 def test_previous
170 def test_previous
166 @repository.fetch_changesets
171 @repository.fetch_changesets
167 @repository.reload
172 @repository.reload
168 changeset = @repository.find_changeset_by_name('3')
173 changeset = @repository.find_changeset_by_name('3')
169 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
174 assert_equal @repository.find_changeset_by_name('2'), changeset.previous
170 end
175 end
171
176
172 def test_previous_nil
177 def test_previous_nil
173 @repository.fetch_changesets
178 @repository.fetch_changesets
174 @repository.reload
179 @repository.reload
175 changeset = @repository.find_changeset_by_name('1')
180 changeset = @repository.find_changeset_by_name('1')
176 assert_nil changeset.previous
181 assert_nil changeset.previous
177 end
182 end
178
183
179 def test_next
184 def test_next
180 @repository.fetch_changesets
185 @repository.fetch_changesets
181 @repository.reload
186 @repository.reload
182 changeset = @repository.find_changeset_by_name('2')
187 changeset = @repository.find_changeset_by_name('2')
183 assert_equal @repository.find_changeset_by_name('3'), changeset.next
188 assert_equal @repository.find_changeset_by_name('3'), changeset.next
184 end
189 end
185
190
186 def test_next_nil
191 def test_next_nil
187 @repository.fetch_changesets
192 @repository.fetch_changesets
188 @repository.reload
193 @repository.reload
189 changeset = @repository.find_changeset_by_name('11')
194 changeset = @repository.find_changeset_by_name('11')
190 assert_nil changeset.next
195 assert_nil changeset.next
191 end
196 end
192 else
197 else
193 puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
198 puts "Subversion test repository NOT FOUND. Skipping unit tests !!!"
194 def test_fake; assert true end
199 def test_fake; assert true end
195 end
200 end
196 end
201 end
General Comments 0
You need to be logged in to leave comments. Login now