##// END OF EJS Templates
Rails3: scm: cvs: fix error of test_entry_at_given_revision at functional test...
Toshi MARUYAMA -
r7059:12a13fc80d2d
parent child
Show More
@@ -1,272 +1,274
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 require 'repositories_controller'
19 require 'repositories_controller'
20
20
21 # Re-raise errors caught by the controller.
21 # Re-raise errors caught by the controller.
22 class RepositoriesController; def rescue_action(e) raise e end; end
22 class RepositoriesController; def rescue_action(e) raise e end; end
23
23
24 class RepositoriesCvsControllerTest < ActionController::TestCase
24 class RepositoriesCvsControllerTest < ActionController::TestCase
25 fixtures :projects, :users, :roles, :members, :member_roles,
25 fixtures :projects, :users, :roles, :members, :member_roles,
26 :repositories, :enabled_modules
26 :repositories, :enabled_modules
27
27
28 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
28 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
29 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
29 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
30 # CVS module
30 # CVS module
31 MODULE_NAME = 'test'
31 MODULE_NAME = 'test'
32 PRJ_ID = 3
32 PRJ_ID = 3
33 NUM_REV = 7
33 NUM_REV = 7
34
34
35 def setup
35 def setup
36 @controller = RepositoriesController.new
36 @controller = RepositoriesController.new
37 @request = ActionController::TestRequest.new
37 @request = ActionController::TestRequest.new
38 @response = ActionController::TestResponse.new
38 @response = ActionController::TestResponse.new
39 Setting.default_language = 'en'
39 Setting.default_language = 'en'
40 User.current = nil
40 User.current = nil
41
41
42 @project = Project.find(PRJ_ID)
42 @project = Project.find(PRJ_ID)
43 @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
43 @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
44 :root_url => REPOSITORY_PATH,
44 :root_url => REPOSITORY_PATH,
45 :url => MODULE_NAME,
45 :url => MODULE_NAME,
46 :log_encoding => 'UTF-8')
46 :log_encoding => 'UTF-8')
47 assert @repository
47 assert @repository
48 end
48 end
49
49
50 if File.directory?(REPOSITORY_PATH)
50 if File.directory?(REPOSITORY_PATH)
51 def test_browse_root
51 def test_browse_root
52 assert_equal 0, @repository.changesets.count
52 assert_equal 0, @repository.changesets.count
53 @repository.fetch_changesets
53 @repository.fetch_changesets
54 @project.reload
54 @project.reload
55 assert_equal NUM_REV, @repository.changesets.count
55 assert_equal NUM_REV, @repository.changesets.count
56 get :show, :id => PRJ_ID
56 get :show, :id => PRJ_ID
57 assert_response :success
57 assert_response :success
58 assert_template 'show'
58 assert_template 'show'
59 assert_not_nil assigns(:entries)
59 assert_not_nil assigns(:entries)
60 assert_equal 3, assigns(:entries).size
60 assert_equal 3, assigns(:entries).size
61
61
62 entry = assigns(:entries).detect {|e| e.name == 'images'}
62 entry = assigns(:entries).detect {|e| e.name == 'images'}
63 assert_equal 'dir', entry.kind
63 assert_equal 'dir', entry.kind
64
64
65 entry = assigns(:entries).detect {|e| e.name == 'README'}
65 entry = assigns(:entries).detect {|e| e.name == 'README'}
66 assert_equal 'file', entry.kind
66 assert_equal 'file', entry.kind
67
67
68 assert_not_nil assigns(:changesets)
68 assert_not_nil assigns(:changesets)
69 assert assigns(:changesets).size > 0
69 assert assigns(:changesets).size > 0
70 end
70 end
71
71
72 def test_browse_directory
72 def test_browse_directory
73 assert_equal 0, @repository.changesets.count
73 assert_equal 0, @repository.changesets.count
74 @repository.fetch_changesets
74 @repository.fetch_changesets
75 @project.reload
75 @project.reload
76 assert_equal NUM_REV, @repository.changesets.count
76 assert_equal NUM_REV, @repository.changesets.count
77 get :show, :id => PRJ_ID, :path => ['images']
77 get :show, :id => PRJ_ID, :path => ['images']
78 assert_response :success
78 assert_response :success
79 assert_template 'show'
79 assert_template 'show'
80 assert_not_nil assigns(:entries)
80 assert_not_nil assigns(:entries)
81 assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
81 assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
82 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
82 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
83 assert_not_nil entry
83 assert_not_nil entry
84 assert_equal 'file', entry.kind
84 assert_equal 'file', entry.kind
85 assert_equal 'images/edit.png', entry.path
85 assert_equal 'images/edit.png', entry.path
86 end
86 end
87
87
88 def test_browse_at_given_revision
88 def test_browse_at_given_revision
89 assert_equal 0, @repository.changesets.count
89 assert_equal 0, @repository.changesets.count
90 @repository.fetch_changesets
90 @repository.fetch_changesets
91 @project.reload
91 @project.reload
92 assert_equal NUM_REV, @repository.changesets.count
92 assert_equal NUM_REV, @repository.changesets.count
93 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
93 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
94 assert_response :success
94 assert_response :success
95 assert_template 'show'
95 assert_template 'show'
96 assert_not_nil assigns(:entries)
96 assert_not_nil assigns(:entries)
97 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
97 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
98 end
98 end
99
99
100 def test_entry
100 def test_entry
101 assert_equal 0, @repository.changesets.count
101 assert_equal 0, @repository.changesets.count
102 @repository.fetch_changesets
102 @repository.fetch_changesets
103 @project.reload
103 @project.reload
104 assert_equal NUM_REV, @repository.changesets.count
104 assert_equal NUM_REV, @repository.changesets.count
105 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
105 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
106 assert_response :success
106 assert_response :success
107 assert_template 'entry'
107 assert_template 'entry'
108 assert_no_tag :tag => 'td',
108 assert_no_tag :tag => 'td',
109 :attributes => { :class => /line-code/},
109 :attributes => { :class => /line-code/},
110 :content => /before_filter/
110 :content => /before_filter/
111 end
111 end
112
112
113 def test_entry_at_given_revision
113 def test_entry_at_given_revision
114 # changesets must be loaded
114 # changesets must be loaded
115 assert_equal 0, @repository.changesets.count
115 @repository.fetch_changesets
116 @repository.fetch_changesets
116 @repository.reload
117 @project.reload
118 assert_equal NUM_REV, @repository.changesets.count
117 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
119 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
118 assert_response :success
120 assert_response :success
119 assert_template 'entry'
121 assert_template 'entry'
120 # this line was removed in r3
122 # this line was removed in r3
121 assert_tag :tag => 'td',
123 assert_tag :tag => 'td',
122 :attributes => { :class => /line-code/},
124 :attributes => { :class => /line-code/},
123 :content => /before_filter/
125 :content => /before_filter/
124 end
126 end
125
127
126 def test_entry_not_found
128 def test_entry_not_found
127 @repository.fetch_changesets
129 @repository.fetch_changesets
128 @repository.reload
130 @repository.reload
129 get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
131 get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
130 assert_tag :tag => 'p',
132 assert_tag :tag => 'p',
131 :attributes => { :id => /errorExplanation/ },
133 :attributes => { :id => /errorExplanation/ },
132 :content => /The entry or revision was not found in the repository/
134 :content => /The entry or revision was not found in the repository/
133 end
135 end
134
136
135 def test_entry_download
137 def test_entry_download
136 @repository.fetch_changesets
138 @repository.fetch_changesets
137 @repository.reload
139 @repository.reload
138 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'],
140 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'],
139 :format => 'raw'
141 :format => 'raw'
140 assert_response :success
142 assert_response :success
141 end
143 end
142
144
143 def test_directory_entry
145 def test_directory_entry
144 @repository.fetch_changesets
146 @repository.fetch_changesets
145 @repository.reload
147 @repository.reload
146 get :entry, :id => PRJ_ID, :path => ['sources']
148 get :entry, :id => PRJ_ID, :path => ['sources']
147 assert_response :success
149 assert_response :success
148 assert_template 'show'
150 assert_template 'show'
149 assert_not_nil assigns(:entry)
151 assert_not_nil assigns(:entry)
150 assert_equal 'sources', assigns(:entry).name
152 assert_equal 'sources', assigns(:entry).name
151 end
153 end
152
154
153 def test_diff
155 def test_diff
154 @repository.fetch_changesets
156 @repository.fetch_changesets
155 @repository.reload
157 @repository.reload
156 ['inline', 'sbs'].each do |dt|
158 ['inline', 'sbs'].each do |dt|
157 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
159 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
158 assert_response :success
160 assert_response :success
159 assert_template 'diff'
161 assert_template 'diff'
160 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
162 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
161 :content => /before_filter :require_login/
163 :content => /before_filter :require_login/
162 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
164 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
163 :content => /with one change/
165 :content => /with one change/
164 end
166 end
165 end
167 end
166
168
167 def test_diff_new_files
169 def test_diff_new_files
168 assert_equal 0, @repository.changesets.count
170 assert_equal 0, @repository.changesets.count
169 @repository.fetch_changesets
171 @repository.fetch_changesets
170 @project.reload
172 @project.reload
171 assert_equal NUM_REV, @repository.changesets.count
173 assert_equal NUM_REV, @repository.changesets.count
172 ['inline', 'sbs'].each do |dt|
174 ['inline', 'sbs'].each do |dt|
173 get :diff, :id => PRJ_ID, :rev => 1, :type => dt
175 get :diff, :id => PRJ_ID, :rev => 1, :type => dt
174 assert_response :success
176 assert_response :success
175 assert_template 'diff'
177 assert_template 'diff'
176 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
178 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
177 :content => /watched.remove_watcher/
179 :content => /watched.remove_watcher/
178 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
180 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
179 :content => /test\/README/
181 :content => /test\/README/
180 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
182 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
181 :content => /test\/images\/delete.png /
183 :content => /test\/images\/delete.png /
182 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
184 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
183 :content => /test\/images\/edit.png/
185 :content => /test\/images\/edit.png/
184 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
186 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
185 :content => /test\/sources\/watchers_controller.rb/
187 :content => /test\/sources\/watchers_controller.rb/
186 end
188 end
187 end
189 end
188
190
189 def test_annotate
191 def test_annotate
190 assert_equal 0, @repository.changesets.count
192 assert_equal 0, @repository.changesets.count
191 @repository.fetch_changesets
193 @repository.fetch_changesets
192 @project.reload
194 @project.reload
193 assert_equal NUM_REV, @repository.changesets.count
195 assert_equal NUM_REV, @repository.changesets.count
194 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
196 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
195 assert_response :success
197 assert_response :success
196 assert_template 'annotate'
198 assert_template 'annotate'
197 # 1.1 line
199 # 1.1 line
198 assert_tag :tag => 'th',
200 assert_tag :tag => 'th',
199 :attributes => { :class => 'line-num' },
201 :attributes => { :class => 'line-num' },
200 :content => '18',
202 :content => '18',
201 :sibling => {
203 :sibling => {
202 :tag => 'td',
204 :tag => 'td',
203 :attributes => { :class => 'revision' },
205 :attributes => { :class => 'revision' },
204 :content => /1.1/,
206 :content => /1.1/,
205 :sibling => {
207 :sibling => {
206 :tag => 'td',
208 :tag => 'td',
207 :attributes => { :class => 'author' },
209 :attributes => { :class => 'author' },
208 :content => /LANG/
210 :content => /LANG/
209 }
211 }
210 }
212 }
211 # 1.2 line
213 # 1.2 line
212 assert_tag :tag => 'th',
214 assert_tag :tag => 'th',
213 :attributes => { :class => 'line-num' },
215 :attributes => { :class => 'line-num' },
214 :content => '32',
216 :content => '32',
215 :sibling => {
217 :sibling => {
216 :tag => 'td',
218 :tag => 'td',
217 :attributes => { :class => 'revision' },
219 :attributes => { :class => 'revision' },
218 :content => /1.2/,
220 :content => /1.2/,
219 :sibling => {
221 :sibling => {
220 :tag => 'td',
222 :tag => 'td',
221 :attributes => { :class => 'author' },
223 :attributes => { :class => 'author' },
222 :content => /LANG/
224 :content => /LANG/
223 }
225 }
224 }
226 }
225 end
227 end
226
228
227 def test_destroy_valid_repository
229 def test_destroy_valid_repository
228 @request.session[:user_id] = 1 # admin
230 @request.session[:user_id] = 1 # admin
229 assert_equal 0, @repository.changesets.count
231 assert_equal 0, @repository.changesets.count
230 @repository.fetch_changesets
232 @repository.fetch_changesets
231 @project.reload
233 @project.reload
232 assert_equal NUM_REV, @repository.changesets.count
234 assert_equal NUM_REV, @repository.changesets.count
233
235
234 get :destroy, :id => PRJ_ID
236 get :destroy, :id => PRJ_ID
235 assert_response 302
237 assert_response 302
236 @project.reload
238 @project.reload
237 assert_nil @project.repository
239 assert_nil @project.repository
238 end
240 end
239
241
240 def test_destroy_invalid_repository
242 def test_destroy_invalid_repository
241 @request.session[:user_id] = 1 # admin
243 @request.session[:user_id] = 1 # admin
242 assert_equal 0, @repository.changesets.count
244 assert_equal 0, @repository.changesets.count
243 @repository.fetch_changesets
245 @repository.fetch_changesets
244 @project.reload
246 @project.reload
245 assert_equal NUM_REV, @repository.changesets.count
247 assert_equal NUM_REV, @repository.changesets.count
246
248
247 get :destroy, :id => PRJ_ID
249 get :destroy, :id => PRJ_ID
248 assert_response 302
250 assert_response 302
249 @project.reload
251 @project.reload
250 assert_nil @project.repository
252 assert_nil @project.repository
251
253
252 @repository = Repository::Cvs.create(
254 @repository = Repository::Cvs.create(
253 :project => Project.find(PRJ_ID),
255 :project => Project.find(PRJ_ID),
254 :root_url => "/invalid",
256 :root_url => "/invalid",
255 :url => MODULE_NAME,
257 :url => MODULE_NAME,
256 :log_encoding => 'UTF-8'
258 :log_encoding => 'UTF-8'
257 )
259 )
258 assert @repository
260 assert @repository
259 @repository.fetch_changesets
261 @repository.fetch_changesets
260 @project.reload
262 @project.reload
261 assert_equal 0, @repository.changesets.count
263 assert_equal 0, @repository.changesets.count
262
264
263 get :destroy, :id => PRJ_ID
265 get :destroy, :id => PRJ_ID
264 assert_response 302
266 assert_response 302
265 @project.reload
267 @project.reload
266 assert_nil @project.repository
268 assert_nil @project.repository
267 end
269 end
268 else
270 else
269 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
271 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
270 def test_fake; assert true end
272 def test_fake; assert true end
271 end
273 end
272 end
274 end
General Comments 0
You need to be logged in to leave comments. Login now