##// END OF EJS Templates
scm: cvs: replace RAILS_ROOT to Rails.root in functional test....
Toshi MARUYAMA -
r5941:204eabba419a
parent child
Show More
@@ -1,216 +1,216
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, :repositories, :enabled_modules
25 fixtures :projects, :users, :roles, :members, :member_roles,
26 :repositories, :enabled_modules
26
27
27 # No '..' in the repository path
28 REPOSITORY_PATH = Rails.root.join('tmp/test/cvs_repository').to_s
28 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
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
33
34 def setup
34 def setup
35 @controller = RepositoriesController.new
35 @controller = RepositoriesController.new
36 @request = ActionController::TestRequest.new
36 @request = ActionController::TestRequest.new
37 @response = ActionController::TestResponse.new
37 @response = ActionController::TestResponse.new
38 Setting.default_language = 'en'
38 Setting.default_language = 'en'
39 User.current = nil
39 User.current = nil
40
40
41 @project = Project.find(PRJ_ID)
41 @project = Project.find(PRJ_ID)
42 @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
42 @repository = Repository::Cvs.create(:project => Project.find(PRJ_ID),
43 :root_url => REPOSITORY_PATH,
43 :root_url => REPOSITORY_PATH,
44 :url => MODULE_NAME,
44 :url => MODULE_NAME,
45 :log_encoding => 'UTF-8')
45 :log_encoding => 'UTF-8')
46 assert @repository
46 assert @repository
47 end
47 end
48
48
49 if File.directory?(REPOSITORY_PATH)
49 if File.directory?(REPOSITORY_PATH)
50 def test_browse_root
50 def test_browse_root
51 @repository.fetch_changesets
51 @repository.fetch_changesets
52 @repository.reload
52 @repository.reload
53 get :show, :id => PRJ_ID
53 get :show, :id => PRJ_ID
54 assert_response :success
54 assert_response :success
55 assert_template 'show'
55 assert_template 'show'
56 assert_not_nil assigns(:entries)
56 assert_not_nil assigns(:entries)
57 assert_equal 3, assigns(:entries).size
57 assert_equal 3, assigns(:entries).size
58
58
59 entry = assigns(:entries).detect {|e| e.name == 'images'}
59 entry = assigns(:entries).detect {|e| e.name == 'images'}
60 assert_equal 'dir', entry.kind
60 assert_equal 'dir', entry.kind
61
61
62 entry = assigns(:entries).detect {|e| e.name == 'README'}
62 entry = assigns(:entries).detect {|e| e.name == 'README'}
63 assert_equal 'file', entry.kind
63 assert_equal 'file', entry.kind
64
64
65 assert_not_nil assigns(:changesets)
65 assert_not_nil assigns(:changesets)
66 assigns(:changesets).size > 0
66 assigns(:changesets).size > 0
67 end
67 end
68
68
69 def test_browse_directory
69 def test_browse_directory
70 @repository.fetch_changesets
70 @repository.fetch_changesets
71 @repository.reload
71 @repository.reload
72 get :show, :id => PRJ_ID, :path => ['images']
72 get :show, :id => PRJ_ID, :path => ['images']
73 assert_response :success
73 assert_response :success
74 assert_template 'show'
74 assert_template 'show'
75 assert_not_nil assigns(:entries)
75 assert_not_nil assigns(:entries)
76 assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
76 assert_equal ['add.png', 'delete.png', 'edit.png'], assigns(:entries).collect(&:name)
77 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
77 entry = assigns(:entries).detect {|e| e.name == 'edit.png'}
78 assert_not_nil entry
78 assert_not_nil entry
79 assert_equal 'file', entry.kind
79 assert_equal 'file', entry.kind
80 assert_equal 'images/edit.png', entry.path
80 assert_equal 'images/edit.png', entry.path
81 end
81 end
82
82
83 def test_browse_at_given_revision
83 def test_browse_at_given_revision
84 @repository.fetch_changesets
84 @repository.fetch_changesets
85 @repository.reload
85 @repository.reload
86 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
86 get :show, :id => PRJ_ID, :path => ['images'], :rev => 1
87 assert_response :success
87 assert_response :success
88 assert_template 'show'
88 assert_template 'show'
89 assert_not_nil assigns(:entries)
89 assert_not_nil assigns(:entries)
90 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
90 assert_equal ['delete.png', 'edit.png'], assigns(:entries).collect(&:name)
91 end
91 end
92
92
93 def test_entry
93 def test_entry
94 @repository.fetch_changesets
94 @repository.fetch_changesets
95 @repository.reload
95 @repository.reload
96 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
96 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
97 assert_response :success
97 assert_response :success
98 assert_template 'entry'
98 assert_template 'entry'
99 assert_no_tag :tag => 'td',
99 assert_no_tag :tag => 'td',
100 :attributes => { :class => /line-code/},
100 :attributes => { :class => /line-code/},
101 :content => /before_filter/
101 :content => /before_filter/
102 end
102 end
103
103
104 def test_entry_at_given_revision
104 def test_entry_at_given_revision
105 # changesets must be loaded
105 # changesets must be loaded
106 @repository.fetch_changesets
106 @repository.fetch_changesets
107 @repository.reload
107 @repository.reload
108 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
108 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :rev => 2
109 assert_response :success
109 assert_response :success
110 assert_template 'entry'
110 assert_template 'entry'
111 # this line was removed in r3
111 # this line was removed in r3
112 assert_tag :tag => 'td',
112 assert_tag :tag => 'td',
113 :attributes => { :class => /line-code/},
113 :attributes => { :class => /line-code/},
114 :content => /before_filter/
114 :content => /before_filter/
115 end
115 end
116
116
117 def test_entry_not_found
117 def test_entry_not_found
118 @repository.fetch_changesets
118 @repository.fetch_changesets
119 @repository.reload
119 @repository.reload
120 get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
120 get :entry, :id => PRJ_ID, :path => ['sources', 'zzz.c']
121 assert_tag :tag => 'p',
121 assert_tag :tag => 'p',
122 :attributes => { :id => /errorExplanation/ },
122 :attributes => { :id => /errorExplanation/ },
123 :content => /The entry or revision was not found in the repository/
123 :content => /The entry or revision was not found in the repository/
124 end
124 end
125
125
126 def test_entry_download
126 def test_entry_download
127 @repository.fetch_changesets
127 @repository.fetch_changesets
128 @repository.reload
128 @repository.reload
129 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
129 get :entry, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb'], :format => 'raw'
130 assert_response :success
130 assert_response :success
131 end
131 end
132
132
133 def test_directory_entry
133 def test_directory_entry
134 @repository.fetch_changesets
134 @repository.fetch_changesets
135 @repository.reload
135 @repository.reload
136 get :entry, :id => PRJ_ID, :path => ['sources']
136 get :entry, :id => PRJ_ID, :path => ['sources']
137 assert_response :success
137 assert_response :success
138 assert_template 'show'
138 assert_template 'show'
139 assert_not_nil assigns(:entry)
139 assert_not_nil assigns(:entry)
140 assert_equal 'sources', assigns(:entry).name
140 assert_equal 'sources', assigns(:entry).name
141 end
141 end
142
142
143 def test_diff
143 def test_diff
144 @repository.fetch_changesets
144 @repository.fetch_changesets
145 @repository.reload
145 @repository.reload
146 ['inline', 'sbs'].each do |dt|
146 ['inline', 'sbs'].each do |dt|
147 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
147 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
148 assert_response :success
148 assert_response :success
149 assert_template 'diff'
149 assert_template 'diff'
150 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
150 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
151 :content => /before_filter :require_login/
151 :content => /before_filter :require_login/
152 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
152 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
153 :content => /with one change/
153 :content => /with one change/
154 end
154 end
155 end
155 end
156
156
157 def test_diff_new_files
157 def test_diff_new_files
158 @repository.fetch_changesets
158 @repository.fetch_changesets
159 @repository.reload
159 @repository.reload
160 ['inline', 'sbs'].each do |dt|
160 ['inline', 'sbs'].each do |dt|
161 get :diff, :id => PRJ_ID, :rev => 1, :type => dt
161 get :diff, :id => PRJ_ID, :rev => 1, :type => dt
162 assert_response :success
162 assert_response :success
163 assert_template 'diff'
163 assert_template 'diff'
164 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
164 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
165 :content => /watched.remove_watcher/
165 :content => /watched.remove_watcher/
166 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
166 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
167 :content => /test\/README/
167 :content => /test\/README/
168 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
168 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
169 :content => /test\/images\/delete.png /
169 :content => /test\/images\/delete.png /
170 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
170 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
171 :content => /test\/images\/edit.png/
171 :content => /test\/images\/edit.png/
172 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
172 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
173 :content => /test\/sources\/watchers_controller.rb/
173 :content => /test\/sources\/watchers_controller.rb/
174 end
174 end
175 end
175 end
176
176
177 def test_annotate
177 def test_annotate
178 @repository.fetch_changesets
178 @repository.fetch_changesets
179 @repository.reload
179 @repository.reload
180 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
180 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
181 assert_response :success
181 assert_response :success
182 assert_template 'annotate'
182 assert_template 'annotate'
183 # 1.1 line
183 # 1.1 line
184 assert_tag :tag => 'th',
184 assert_tag :tag => 'th',
185 :attributes => { :class => 'line-num' },
185 :attributes => { :class => 'line-num' },
186 :content => '18',
186 :content => '18',
187 :sibling => {
187 :sibling => {
188 :tag => 'td',
188 :tag => 'td',
189 :attributes => { :class => 'revision' },
189 :attributes => { :class => 'revision' },
190 :content => /1.1/,
190 :content => /1.1/,
191 :sibling => {
191 :sibling => {
192 :tag => 'td',
192 :tag => 'td',
193 :attributes => { :class => 'author' },
193 :attributes => { :class => 'author' },
194 :content => /LANG/
194 :content => /LANG/
195 }
195 }
196 }
196 }
197 # 1.2 line
197 # 1.2 line
198 assert_tag :tag => 'th',
198 assert_tag :tag => 'th',
199 :attributes => { :class => 'line-num' },
199 :attributes => { :class => 'line-num' },
200 :content => '32',
200 :content => '32',
201 :sibling => {
201 :sibling => {
202 :tag => 'td',
202 :tag => 'td',
203 :attributes => { :class => 'revision' },
203 :attributes => { :class => 'revision' },
204 :content => /1.2/,
204 :content => /1.2/,
205 :sibling => {
205 :sibling => {
206 :tag => 'td',
206 :tag => 'td',
207 :attributes => { :class => 'author' },
207 :attributes => { :class => 'author' },
208 :content => /LANG/
208 :content => /LANG/
209 }
209 }
210 }
210 }
211 end
211 end
212 else
212 else
213 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
213 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
214 def test_fake; assert true end
214 def test_fake; assert true end
215 end
215 end
216 end
216 end
General Comments 0
You need to be logged in to leave comments. Login now