comparison test/functional/.svn/text-base/repositories_subversion_controller_test.rb.svn-base @ 246:eeebe205a056 cannam

* Merge from default branch, bringing us up to SVN trunk rev 4993
author Chris Cannam
date Thu, 03 Mar 2011 12:02:03 +0000
parents 051f544170fe
children cbce1fd3b1b7
comparison
equal deleted inserted replaced
138:fca2657f4aa5 246:eeebe205a056
24 class RepositoriesSubversionControllerTest < ActionController::TestCase 24 class RepositoriesSubversionControllerTest < ActionController::TestCase
25 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules, 25 fixtures :projects, :users, :roles, :members, :member_roles, :enabled_modules,
26 :repositories, :issues, :issue_statuses, :changesets, :changes, 26 :repositories, :issues, :issue_statuses, :changesets, :changes,
27 :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers 27 :issue_categories, :enumerations, :custom_fields, :custom_values, :trackers
28 28
29 PRJ_ID = 3
30
29 def setup 31 def setup
30 @controller = RepositoriesController.new 32 @controller = RepositoriesController.new
31 @request = ActionController::TestRequest.new 33 @request = ActionController::TestRequest.new
32 @response = ActionController::TestResponse.new 34 @response = ActionController::TestResponse.new
33 Setting.default_language = 'en' 35 Setting.default_language = 'en'
34 User.current = nil 36 User.current = nil
37
38 @project = Project.find(PRJ_ID)
39 @repository = Repository::Subversion.create(:project => @project,
40 :url => "file://#{self.class.repository_path('subversion')}")
41 assert @repository
35 end 42 end
36 43
37 if repository_configured?('subversion') 44 if repository_configured?('subversion')
38 def test_show 45 def test_show
39 get :show, :id => 1 46 @repository.fetch_changesets
47 @repository.reload
48 get :show, :id => PRJ_ID
40 assert_response :success 49 assert_response :success
41 assert_template 'show' 50 assert_template 'show'
42 assert_not_nil assigns(:entries) 51 assert_not_nil assigns(:entries)
43 assert_not_nil assigns(:changesets) 52 assert_not_nil assigns(:changesets)
44 end 53 end
45 54
46 def test_browse_root 55 def test_browse_root
47 get :show, :id => 1 56 @repository.fetch_changesets
57 @repository.reload
58 get :show, :id => PRJ_ID
48 assert_response :success 59 assert_response :success
49 assert_template 'show' 60 assert_template 'show'
50 assert_not_nil assigns(:entries) 61 assert_not_nil assigns(:entries)
51 entry = assigns(:entries).detect {|e| e.name == 'subversion_test'} 62 entry = assigns(:entries).detect {|e| e.name == 'subversion_test'}
52 assert_equal 'dir', entry.kind 63 assert_equal 'dir', entry.kind
53 end 64 end
54 65
55 def test_browse_directory 66 def test_browse_directory
56 get :show, :id => 1, :path => ['subversion_test'] 67 @repository.fetch_changesets
68 @repository.reload
69 get :show, :id => PRJ_ID, :path => ['subversion_test']
57 assert_response :success 70 assert_response :success
58 assert_template 'show' 71 assert_template 'show'
59 assert_not_nil assigns(:entries) 72 assert_not_nil assigns(:entries)
60 assert_equal ['[folder_with_brackets]', 'folder', '.project', 'helloworld.c', 'textfile.txt'], assigns(:entries).collect(&:name) 73 assert_equal ['[folder_with_brackets]', 'folder', '.project', 'helloworld.c', 'textfile.txt'], assigns(:entries).collect(&:name)
61 entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'} 74 entry = assigns(:entries).detect {|e| e.name == 'helloworld.c'}
63 assert_equal 'subversion_test/helloworld.c', entry.path 76 assert_equal 'subversion_test/helloworld.c', entry.path
64 assert_tag :a, :content => 'helloworld.c', :attributes => { :class => /text\-x\-c/ } 77 assert_tag :a, :content => 'helloworld.c', :attributes => { :class => /text\-x\-c/ }
65 end 78 end
66 79
67 def test_browse_at_given_revision 80 def test_browse_at_given_revision
68 get :show, :id => 1, :path => ['subversion_test'], :rev => 4 81 @repository.fetch_changesets
82 @repository.reload
83 get :show, :id => PRJ_ID, :path => ['subversion_test'], :rev => 4
69 assert_response :success 84 assert_response :success
70 assert_template 'show' 85 assert_template 'show'
71 assert_not_nil assigns(:entries) 86 assert_not_nil assigns(:entries)
72 assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], assigns(:entries).collect(&:name) 87 assert_equal ['folder', '.project', 'helloworld.c', 'helloworld.rb', 'textfile.txt'], assigns(:entries).collect(&:name)
73 end 88 end
74 89
75 def test_file_changes 90 def test_file_changes
76 get :changes, :id => 1, :path => ['subversion_test', 'folder', 'helloworld.rb' ] 91 @repository.fetch_changesets
92 @repository.reload
93 get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder', 'helloworld.rb' ]
77 assert_response :success 94 assert_response :success
78 assert_template 'changes' 95 assert_template 'changes'
79 96
80 changesets = assigns(:changesets) 97 changesets = assigns(:changesets)
81 assert_not_nil changesets 98 assert_not_nil changesets
91 :child => { :tag => 'span', :content => 'native' } } 108 :child => { :tag => 'span', :content => 'native' } }
92 end 109 end
93 end 110 end
94 111
95 def test_directory_changes 112 def test_directory_changes
96 get :changes, :id => 1, :path => ['subversion_test', 'folder' ] 113 @repository.fetch_changesets
114 @repository.reload
115 get :changes, :id => PRJ_ID, :path => ['subversion_test', 'folder' ]
97 assert_response :success 116 assert_response :success
98 assert_template 'changes' 117 assert_template 'changes'
99 118
100 changesets = assigns(:changesets) 119 changesets = assigns(:changesets)
101 assert_not_nil changesets 120 assert_not_nil changesets
102 assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision) 121 assert_equal %w(10 9 7 6 5 2), changesets.collect(&:revision)
103 end 122 end
104 123
105 def test_entry 124 def test_entry
106 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] 125 @repository.fetch_changesets
126 @repository.reload
127 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
107 assert_response :success 128 assert_response :success
108 assert_template 'entry' 129 assert_template 'entry'
109 end 130 end
110 131
111 def test_entry_should_send_if_too_big 132 def test_entry_should_send_if_too_big
133 @repository.fetch_changesets
134 @repository.reload
112 # no files in the test repo is larger than 1KB... 135 # no files in the test repo is larger than 1KB...
113 with_settings :file_max_size_displayed => 0 do 136 with_settings :file_max_size_displayed => 0 do
114 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'] 137 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
115 assert_response :success 138 assert_response :success
116 assert_template '' 139 assert_template ''
117 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] 140 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
118 end 141 end
119 end 142 end
120 143
121 def test_entry_at_given_revision 144 def test_entry_at_given_revision
122 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.rb'], :rev => 2 145 @repository.fetch_changesets
146 @repository.reload
147 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.rb'], :rev => 2
123 assert_response :success 148 assert_response :success
124 assert_template 'entry' 149 assert_template 'entry'
125 # this line was removed in r3 and file was moved in r6 150 # this line was removed in r3 and file was moved in r6
126 assert_tag :tag => 'td', :attributes => { :class => /line-code/}, 151 assert_tag :tag => 'td', :attributes => { :class => /line-code/},
127 :content => /Here's the code/ 152 :content => /Here's the code/
128 end 153 end
129 154
130 def test_entry_not_found 155 def test_entry_not_found
131 get :entry, :id => 1, :path => ['subversion_test', 'zzz.c'] 156 @repository.fetch_changesets
157 @repository.reload
158 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'zzz.c']
132 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ }, 159 assert_tag :tag => 'p', :attributes => { :id => /errorExplanation/ },
133 :content => /The entry or revision was not found in the repository/ 160 :content => /The entry or revision was not found in the repository/
134 end 161 end
135 162
136 def test_entry_download 163 def test_entry_download
137 get :entry, :id => 1, :path => ['subversion_test', 'helloworld.c'], :format => 'raw' 164 @repository.fetch_changesets
165 @repository.reload
166 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c'], :format => 'raw'
138 assert_response :success 167 assert_response :success
139 assert_template '' 168 assert_template ''
140 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition'] 169 assert_equal 'attachment; filename="helloworld.c"', @response.headers['Content-Disposition']
141 end 170 end
142 171
143 def test_directory_entry 172 def test_directory_entry
144 get :entry, :id => 1, :path => ['subversion_test', 'folder'] 173 @repository.fetch_changesets
174 @repository.reload
175 get :entry, :id => PRJ_ID, :path => ['subversion_test', 'folder']
145 assert_response :success 176 assert_response :success
146 assert_template 'show' 177 assert_template 'show'
147 assert_not_nil assigns(:entry) 178 assert_not_nil assigns(:entry)
148 assert_equal 'folder', assigns(:entry).name 179 assert_equal 'folder', assigns(:entry).name
149 end 180 end
150 181
182 # TODO: this test needs fixtures.
151 def test_revision 183 def test_revision
184 @repository.fetch_changesets
185 @repository.reload
152 get :revision, :id => 1, :rev => 2 186 get :revision, :id => 1, :rev => 2
153 assert_response :success 187 assert_response :success
154 assert_template 'revision' 188 assert_template 'revision'
155 assert_tag :tag => 'ul', 189 assert_tag :tag => 'ul',
156 :child => { :tag => 'li', 190 :child => { :tag => 'li',
165 } 199 }
166 } 200 }
167 end 201 end
168 202
169 def test_invalid_revision 203 def test_invalid_revision
170 get :revision, :id => 1, :rev => 'something_weird' 204 @repository.fetch_changesets
205 @repository.reload
206 get :revision, :id => PRJ_ID, :rev => 'something_weird'
171 assert_response 404 207 assert_response 404
172 assert_error_tag :content => /was not found/ 208 assert_error_tag :content => /was not found/
173 end 209 end
174 210
211 def test_invalid_revision_diff
212 get :diff, :id => PRJ_ID, :rev => '1', :rev_to => 'something_weird'
213 assert_response 404
214 assert_error_tag :content => /was not found/
215 end
216
175 def test_empty_revision 217 def test_empty_revision
218 @repository.fetch_changesets
219 @repository.reload
176 ['', ' ', nil].each do |r| 220 ['', ' ', nil].each do |r|
177 get :revision, :id => 1, :rev => r 221 get :revision, :id => PRJ_ID, :rev => r
178 assert_response 404 222 assert_response 404
179 assert_error_tag :content => /was not found/ 223 assert_error_tag :content => /was not found/
180 end 224 end
181 end 225 end
182 226
227 # TODO: this test needs fixtures.
183 def test_revision_with_repository_pointing_to_a_subdirectory 228 def test_revision_with_repository_pointing_to_a_subdirectory
184 r = Project.find(1).repository 229 r = Project.find(1).repository
185 # Changes repository url to a subdirectory 230 # Changes repository url to a subdirectory
186 r.update_attribute :url, (r.url + '/test/some') 231 r.update_attribute :url, (r.url + '/test/some')
187 232
201 } 246 }
202 } 247 }
203 end 248 end
204 249
205 def test_revision_diff 250 def test_revision_diff
206 get :diff, :id => 1, :rev => 3 251 @repository.fetch_changesets
252 @repository.reload
253 get :diff, :id => PRJ_ID, :rev => 3
207 assert_response :success 254 assert_response :success
208 assert_template 'diff' 255 assert_template 'diff'
209 256
210 assert_tag :tag => 'h2', :content => /3/ 257 assert_tag :tag => 'h2', :content => /3/
211 end 258 end
212 259
213 def test_directory_diff 260 def test_directory_diff
214 get :diff, :id => 1, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder'] 261 @repository.fetch_changesets
262 @repository.reload
263 get :diff, :id => PRJ_ID, :rev => 6, :rev_to => 2, :path => ['subversion_test', 'folder']
215 assert_response :success 264 assert_response :success
216 assert_template 'diff' 265 assert_template 'diff'
217 266
218 diff = assigns(:diff) 267 diff = assigns(:diff)
219 assert_not_nil diff 268 assert_not_nil diff
222 271
223 assert_tag :tag => 'h2', :content => /2:6/ 272 assert_tag :tag => 'h2', :content => /2:6/
224 end 273 end
225 274
226 def test_annotate 275 def test_annotate
227 get :annotate, :id => 1, :path => ['subversion_test', 'helloworld.c'] 276 @repository.fetch_changesets
277 @repository.reload
278 get :annotate, :id => PRJ_ID, :path => ['subversion_test', 'helloworld.c']
228 assert_response :success 279 assert_response :success
229 assert_template 'annotate' 280 assert_template 'annotate'
281 end
282
283 def test_annotate_at_given_revision
284 @repository.fetch_changesets
285 @repository.reload
286 get :annotate, :id => PRJ_ID, :rev => 8, :path => ['subversion_test', 'helloworld.c']
287 assert_response :success
288 assert_template 'annotate'
289 assert_tag :tag => 'h2', :content => /@ 8/
230 end 290 end
231 else 291 else
232 puts "Subversion test repository NOT FOUND. Skipping functional tests !!!" 292 puts "Subversion test repository NOT FOUND. Skipping functional tests !!!"
233 def test_fake; assert true end 293 def test_fake; assert true end
234 end 294 end