##// END OF EJS Templates
remove unneeded Relation#all from RepositoryCvsTest...
Toshi MARUYAMA -
r12299:4ab85ff0cb2d
parent child
Show More
@@ -1,242 +1,243
1 # Redmine - project management software
1 # Redmine - project management software
2 # Copyright (C) 2006-2013 Jean-Philippe Lang
2 # Copyright (C) 2006-2013 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 require 'pp'
19 require 'pp'
20 class RepositoryCvsTest < ActiveSupport::TestCase
20 class RepositoryCvsTest < ActiveSupport::TestCase
21 fixtures :projects
21 fixtures :projects
22
22
23 include Redmine::I18n
23 include Redmine::I18n
24
24
25 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
25 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
26 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
26 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
27 # CVS module
27 # CVS module
28 MODULE_NAME = 'test'
28 MODULE_NAME = 'test'
29 CHANGESETS_NUM = 7
29 CHANGESETS_NUM = 7
30
30
31 def setup
31 def setup
32 @project = Project.find(3)
32 @project = Project.find(3)
33 @repository = Repository::Cvs.create(:project => @project,
33 @repository = Repository::Cvs.create(:project => @project,
34 :root_url => REPOSITORY_PATH,
34 :root_url => REPOSITORY_PATH,
35 :url => MODULE_NAME,
35 :url => MODULE_NAME,
36 :log_encoding => 'UTF-8')
36 :log_encoding => 'UTF-8')
37 assert @repository
37 assert @repository
38 end
38 end
39
39
40 def test_blank_module_error_message
40 def test_blank_module_error_message
41 set_language_if_valid 'en'
41 set_language_if_valid 'en'
42 repo = Repository::Cvs.new(
42 repo = Repository::Cvs.new(
43 :project => @project,
43 :project => @project,
44 :identifier => 'test',
44 :identifier => 'test',
45 :log_encoding => 'UTF-8',
45 :log_encoding => 'UTF-8',
46 :root_url => REPOSITORY_PATH
46 :root_url => REPOSITORY_PATH
47 )
47 )
48 assert !repo.save
48 assert !repo.save
49 assert_include "Module can't be blank",
49 assert_include "Module can't be blank",
50 repo.errors.full_messages
50 repo.errors.full_messages
51 end
51 end
52
52
53 def test_blank_module_error_message_fr
53 def test_blank_module_error_message_fr
54 set_language_if_valid 'fr'
54 set_language_if_valid 'fr'
55 str = "Module doit \xc3\xaatre renseign\xc3\xa9(e)"
55 str = "Module doit \xc3\xaatre renseign\xc3\xa9(e)"
56 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
56 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
57 repo = Repository::Cvs.new(
57 repo = Repository::Cvs.new(
58 :project => @project,
58 :project => @project,
59 :identifier => 'test',
59 :identifier => 'test',
60 :log_encoding => 'UTF-8',
60 :log_encoding => 'UTF-8',
61 :path_encoding => '',
61 :path_encoding => '',
62 :url => '',
62 :url => '',
63 :root_url => REPOSITORY_PATH
63 :root_url => REPOSITORY_PATH
64 )
64 )
65 assert !repo.save
65 assert !repo.save
66 assert_include str, repo.errors.full_messages
66 assert_include str, repo.errors.full_messages
67 end
67 end
68
68
69 def test_blank_cvsroot_error_message
69 def test_blank_cvsroot_error_message
70 set_language_if_valid 'en'
70 set_language_if_valid 'en'
71 repo = Repository::Cvs.new(
71 repo = Repository::Cvs.new(
72 :project => @project,
72 :project => @project,
73 :identifier => 'test',
73 :identifier => 'test',
74 :log_encoding => 'UTF-8',
74 :log_encoding => 'UTF-8',
75 :url => MODULE_NAME
75 :url => MODULE_NAME
76 )
76 )
77 assert !repo.save
77 assert !repo.save
78 assert_include "CVSROOT can't be blank",
78 assert_include "CVSROOT can't be blank",
79 repo.errors.full_messages
79 repo.errors.full_messages
80 end
80 end
81
81
82 def test_blank_cvsroot_error_message_fr
82 def test_blank_cvsroot_error_message_fr
83 set_language_if_valid 'fr'
83 set_language_if_valid 'fr'
84 str = "CVSROOT doit \xc3\xaatre renseign\xc3\xa9(e)"
84 str = "CVSROOT doit \xc3\xaatre renseign\xc3\xa9(e)"
85 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
85 str.force_encoding('UTF-8') if str.respond_to?(:force_encoding)
86 repo = Repository::Cvs.new(
86 repo = Repository::Cvs.new(
87 :project => @project,
87 :project => @project,
88 :identifier => 'test',
88 :identifier => 'test',
89 :log_encoding => 'UTF-8',
89 :log_encoding => 'UTF-8',
90 :path_encoding => '',
90 :path_encoding => '',
91 :url => MODULE_NAME,
91 :url => MODULE_NAME,
92 :root_url => ''
92 :root_url => ''
93 )
93 )
94 assert !repo.save
94 assert !repo.save
95 assert_include str, repo.errors.full_messages
95 assert_include str, repo.errors.full_messages
96 end
96 end
97
97
98 if File.directory?(REPOSITORY_PATH)
98 if File.directory?(REPOSITORY_PATH)
99 def test_fetch_changesets_from_scratch
99 def test_fetch_changesets_from_scratch
100 assert_equal 0, @repository.changesets.count
100 assert_equal 0, @repository.changesets.count
101 @repository.fetch_changesets
101 @repository.fetch_changesets
102 @project.reload
102 @project.reload
103
103
104 assert_equal CHANGESETS_NUM, @repository.changesets.count
104 assert_equal CHANGESETS_NUM, @repository.changesets.count
105 assert_equal 16, @repository.filechanges.count
105 assert_equal 16, @repository.filechanges.count
106 assert_not_nil @repository.changesets.find_by_comments('Two files changed')
106 assert_not_nil @repository.changesets.find_by_comments('Two files changed')
107
107
108 r2 = @repository.changesets.find_by_revision('2')
108 r2 = @repository.changesets.find_by_revision('2')
109 assert_equal 'v1-20071213-162510', r2.scmid
109 assert_equal 'v1-20071213-162510', r2.scmid
110 end
110 end
111
111
112 def test_fetch_changesets_incremental
112 def test_fetch_changesets_incremental
113 assert_equal 0, @repository.changesets.count
113 assert_equal 0, @repository.changesets.count
114 @repository.fetch_changesets
114 @repository.fetch_changesets
115 @project.reload
115 @project.reload
116 assert_equal CHANGESETS_NUM, @repository.changesets.count
116 assert_equal CHANGESETS_NUM, @repository.changesets.count
117
117
118 # Remove changesets with revision > 3
118 # Remove changesets with revision > 3
119 @repository.changesets.all.each {|c| c.destroy if c.revision.to_i > 3}
119 @repository.changesets.each {|c| c.destroy if c.revision.to_i > 3}
120 @project.reload
120 @project.reload
121 @repository.reload
121 @repository.reload
122 assert_equal 3, @repository.changesets.count
122 assert_equal 3, @repository.changesets.count
123 assert_equal %w|3 2 1|, @repository.changesets.all.collect(&:revision)
123 assert_equal %w|3 2 1|, @repository.changesets.collect(&:revision)
124
124
125 rev3_commit = @repository.changesets.reorder('committed_on DESC').first
125 rev3_commit = @repository.changesets.reorder('committed_on DESC').first
126 assert_equal '3', rev3_commit.revision
126 assert_equal '3', rev3_commit.revision
127 # 2007-12-14 01:27:22 +0900
127 # 2007-12-14 01:27:22 +0900
128 rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
128 rev3_committed_on = Time.gm(2007, 12, 13, 16, 27, 22)
129 assert_equal 'HEAD-20071213-162722', rev3_commit.scmid
129 assert_equal 'HEAD-20071213-162722', rev3_commit.scmid
130 assert_equal rev3_committed_on, rev3_commit.committed_on
130 assert_equal rev3_committed_on, rev3_commit.committed_on
131 latest_rev = @repository.latest_changeset
131 latest_rev = @repository.latest_changeset
132 assert_equal rev3_committed_on, latest_rev.committed_on
132 assert_equal rev3_committed_on, latest_rev.committed_on
133
133
134 @repository.fetch_changesets
134 @repository.fetch_changesets
135 @project.reload
135 @project.reload
136 @repository.reload
136 assert_equal CHANGESETS_NUM, @repository.changesets.count
137 assert_equal CHANGESETS_NUM, @repository.changesets.count
137 assert_equal %w|7 6 5 4 3 2 1|, @repository.changesets.all.collect(&:revision)
138 assert_equal %w|7 6 5 4 3 2 1|, @repository.changesets.collect(&:revision)
138 rev5_commit = @repository.changesets.find_by_revision('5')
139 rev5_commit = @repository.changesets.find_by_revision('5')
139 assert_equal 'HEAD-20071213-163001', rev5_commit.scmid
140 assert_equal 'HEAD-20071213-163001', rev5_commit.scmid
140 # 2007-12-14 01:30:01 +0900
141 # 2007-12-14 01:30:01 +0900
141 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1)
142 rev5_committed_on = Time.gm(2007, 12, 13, 16, 30, 1)
142 assert_equal rev5_committed_on, rev5_commit.committed_on
143 assert_equal rev5_committed_on, rev5_commit.committed_on
143 end
144 end
144
145
145 def test_deleted_files_should_not_be_listed
146 def test_deleted_files_should_not_be_listed
146 assert_equal 0, @repository.changesets.count
147 assert_equal 0, @repository.changesets.count
147 @repository.fetch_changesets
148 @repository.fetch_changesets
148 @project.reload
149 @project.reload
149 assert_equal CHANGESETS_NUM, @repository.changesets.count
150 assert_equal CHANGESETS_NUM, @repository.changesets.count
150
151
151 entries = @repository.entries('sources')
152 entries = @repository.entries('sources')
152 assert entries.detect {|e| e.name == 'watchers_controller.rb'}
153 assert entries.detect {|e| e.name == 'watchers_controller.rb'}
153 assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
154 assert_nil entries.detect {|e| e.name == 'welcome_controller.rb'}
154 end
155 end
155
156
156 def test_entries_rev3
157 def test_entries_rev3
157 assert_equal 0, @repository.changesets.count
158 assert_equal 0, @repository.changesets.count
158 @repository.fetch_changesets
159 @repository.fetch_changesets
159 @project.reload
160 @project.reload
160 assert_equal CHANGESETS_NUM, @repository.changesets.count
161 assert_equal CHANGESETS_NUM, @repository.changesets.count
161 entries = @repository.entries('', '3')
162 entries = @repository.entries('', '3')
162 assert_kind_of Redmine::Scm::Adapters::Entries, entries
163 assert_kind_of Redmine::Scm::Adapters::Entries, entries
163 assert_equal 3, entries.size
164 assert_equal 3, entries.size
164 assert_equal entries[2].name, "README"
165 assert_equal entries[2].name, "README"
165 assert_equal entries[2].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22)
166 assert_equal entries[2].lastrev.time, Time.gm(2007, 12, 13, 16, 27, 22)
166 assert_equal entries[2].lastrev.identifier, '3'
167 assert_equal entries[2].lastrev.identifier, '3'
167 assert_equal entries[2].lastrev.revision, '3'
168 assert_equal entries[2].lastrev.revision, '3'
168 assert_equal entries[2].lastrev.author, 'LANG'
169 assert_equal entries[2].lastrev.author, 'LANG'
169 end
170 end
170
171
171 def test_entries_invalid_path
172 def test_entries_invalid_path
172 assert_equal 0, @repository.changesets.count
173 assert_equal 0, @repository.changesets.count
173 @repository.fetch_changesets
174 @repository.fetch_changesets
174 @project.reload
175 @project.reload
175 assert_equal CHANGESETS_NUM, @repository.changesets.count
176 assert_equal CHANGESETS_NUM, @repository.changesets.count
176 assert_nil @repository.entries('missing')
177 assert_nil @repository.entries('missing')
177 assert_nil @repository.entries('missing', '3')
178 assert_nil @repository.entries('missing', '3')
178 end
179 end
179
180
180 def test_entries_invalid_revision
181 def test_entries_invalid_revision
181 assert_equal 0, @repository.changesets.count
182 assert_equal 0, @repository.changesets.count
182 @repository.fetch_changesets
183 @repository.fetch_changesets
183 @project.reload
184 @project.reload
184 assert_equal CHANGESETS_NUM, @repository.changesets.count
185 assert_equal CHANGESETS_NUM, @repository.changesets.count
185 assert_nil @repository.entries('', '123')
186 assert_nil @repository.entries('', '123')
186 end
187 end
187
188
188 def test_cat
189 def test_cat
189 assert_equal 0, @repository.changesets.count
190 assert_equal 0, @repository.changesets.count
190 @repository.fetch_changesets
191 @repository.fetch_changesets
191 @project.reload
192 @project.reload
192 assert_equal CHANGESETS_NUM, @repository.changesets.count
193 assert_equal CHANGESETS_NUM, @repository.changesets.count
193 buf = @repository.cat('README')
194 buf = @repository.cat('README')
194 assert buf
195 assert buf
195 lines = buf.split("\n")
196 lines = buf.split("\n")
196 assert_equal 3, lines.length
197 assert_equal 3, lines.length
197 buf = lines[1].gsub(/\r$/, "")
198 buf = lines[1].gsub(/\r$/, "")
198 assert_equal 'with one change', buf
199 assert_equal 'with one change', buf
199 buf = @repository.cat('README', '1')
200 buf = @repository.cat('README', '1')
200 assert buf
201 assert buf
201 lines = buf.split("\n")
202 lines = buf.split("\n")
202 assert_equal 1, lines.length
203 assert_equal 1, lines.length
203 buf = lines[0].gsub(/\r$/, "")
204 buf = lines[0].gsub(/\r$/, "")
204 assert_equal 'CVS test repository', buf
205 assert_equal 'CVS test repository', buf
205 assert_nil @repository.cat('missing.rb')
206 assert_nil @repository.cat('missing.rb')
206
207
207 # sources/welcome_controller.rb is removed at revision 5.
208 # sources/welcome_controller.rb is removed at revision 5.
208 assert @repository.cat('sources/welcome_controller.rb', '4')
209 assert @repository.cat('sources/welcome_controller.rb', '4')
209 assert @repository.cat('sources/welcome_controller.rb', '5').blank?
210 assert @repository.cat('sources/welcome_controller.rb', '5').blank?
210
211
211 # invalid revision
212 # invalid revision
212 assert @repository.cat('README', '123').blank?
213 assert @repository.cat('README', '123').blank?
213 end
214 end
214
215
215 def test_annotate
216 def test_annotate
216 assert_equal 0, @repository.changesets.count
217 assert_equal 0, @repository.changesets.count
217 @repository.fetch_changesets
218 @repository.fetch_changesets
218 @project.reload
219 @project.reload
219 assert_equal CHANGESETS_NUM, @repository.changesets.count
220 assert_equal CHANGESETS_NUM, @repository.changesets.count
220 ann = @repository.annotate('README')
221 ann = @repository.annotate('README')
221 assert ann
222 assert ann
222 assert_equal 3, ann.revisions.length
223 assert_equal 3, ann.revisions.length
223 assert_equal '1.2', ann.revisions[1].revision
224 assert_equal '1.2', ann.revisions[1].revision
224 assert_equal 'LANG', ann.revisions[1].author
225 assert_equal 'LANG', ann.revisions[1].author
225 assert_equal 'with one change', ann.lines[1]
226 assert_equal 'with one change', ann.lines[1]
226
227
227 ann = @repository.annotate('README', '1')
228 ann = @repository.annotate('README', '1')
228 assert ann
229 assert ann
229 assert_equal 1, ann.revisions.length
230 assert_equal 1, ann.revisions.length
230 assert_equal '1.1', ann.revisions[0].revision
231 assert_equal '1.1', ann.revisions[0].revision
231 assert_equal 'LANG', ann.revisions[0].author
232 assert_equal 'LANG', ann.revisions[0].author
232 assert_equal 'CVS test repository', ann.lines[0]
233 assert_equal 'CVS test repository', ann.lines[0]
233
234
234 # invalid revision
235 # invalid revision
235 assert_nil @repository.annotate('README', '123')
236 assert_nil @repository.annotate('README', '123')
236 end
237 end
237
238
238 else
239 else
239 puts "CVS test repository NOT FOUND. Skipping unit tests !!!"
240 puts "CVS test repository NOT FOUND. Skipping unit tests !!!"
240 def test_fake; assert true end
241 def test_fake; assert true end
241 end
242 end
242 end
243 end
General Comments 0
You need to be logged in to leave comments. Login now