##// END OF EJS Templates
scm: cvs: run both of "inline" and "side by side" diff in functional test_diff test....
Toshi MARUYAMA -
r5857:28f3d9a8710e
parent child
Show More
@@ -1,212 +1,214
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, :repositories, :enabled_modules
26
26
27 # No '..' in the repository path
27 # No '..' in the repository path
28 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/cvs_repository'
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 get :diff, :id => PRJ_ID, :rev => 3, :type => 'inline'
146 ['inline', 'sbs'].each do |dt|
147 get :diff, :id => PRJ_ID, :rev => 3, :type => dt
147 assert_response :success
148 assert_response :success
148 assert_template 'diff'
149 assert_template 'diff'
149 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
150 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_out' },
150 :content => /before_filter :require_login/
151 :content => /before_filter :require_login/
151 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
152 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
152 :content => /with one change/
153 :content => /with one change/
153 end
154 end
155 end
154
156
155 def test_diff_new_files
157 def test_diff_new_files
156 @repository.fetch_changesets
158 @repository.fetch_changesets
157 @repository.reload
159 @repository.reload
158 get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline'
160 get :diff, :id => PRJ_ID, :rev => 1, :type => 'inline'
159 assert_response :success
161 assert_response :success
160 assert_template 'diff'
162 assert_template 'diff'
161 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
163 assert_tag :tag => 'td', :attributes => { :class => 'line-code diff_in' },
162 :content => /watched.remove_watcher/
164 :content => /watched.remove_watcher/
163 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
165 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
164 :content => /test\/README/
166 :content => /test\/README/
165 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
167 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
166 :content => /test\/images\/delete.png /
168 :content => /test\/images\/delete.png /
167 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
169 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
168 :content => /test\/images\/edit.png/
170 :content => /test\/images\/edit.png/
169 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
171 assert_tag :tag => 'th', :attributes => { :class => 'filename' },
170 :content => /test\/sources\/watchers_controller.rb/
172 :content => /test\/sources\/watchers_controller.rb/
171 end
173 end
172
174
173 def test_annotate
175 def test_annotate
174 @repository.fetch_changesets
176 @repository.fetch_changesets
175 @repository.reload
177 @repository.reload
176 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
178 get :annotate, :id => PRJ_ID, :path => ['sources', 'watchers_controller.rb']
177 assert_response :success
179 assert_response :success
178 assert_template 'annotate'
180 assert_template 'annotate'
179 # 1.1 line
181 # 1.1 line
180 assert_tag :tag => 'th',
182 assert_tag :tag => 'th',
181 :attributes => { :class => 'line-num' },
183 :attributes => { :class => 'line-num' },
182 :content => '18',
184 :content => '18',
183 :sibling => {
185 :sibling => {
184 :tag => 'td',
186 :tag => 'td',
185 :attributes => { :class => 'revision' },
187 :attributes => { :class => 'revision' },
186 :content => /1.1/,
188 :content => /1.1/,
187 :sibling => {
189 :sibling => {
188 :tag => 'td',
190 :tag => 'td',
189 :attributes => { :class => 'author' },
191 :attributes => { :class => 'author' },
190 :content => /LANG/
192 :content => /LANG/
191 }
193 }
192 }
194 }
193 # 1.2 line
195 # 1.2 line
194 assert_tag :tag => 'th',
196 assert_tag :tag => 'th',
195 :attributes => { :class => 'line-num' },
197 :attributes => { :class => 'line-num' },
196 :content => '32',
198 :content => '32',
197 :sibling => {
199 :sibling => {
198 :tag => 'td',
200 :tag => 'td',
199 :attributes => { :class => 'revision' },
201 :attributes => { :class => 'revision' },
200 :content => /1.2/,
202 :content => /1.2/,
201 :sibling => {
203 :sibling => {
202 :tag => 'td',
204 :tag => 'td',
203 :attributes => { :class => 'author' },
205 :attributes => { :class => 'author' },
204 :content => /LANG/
206 :content => /LANG/
205 }
207 }
206 }
208 }
207 end
209 end
208 else
210 else
209 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
211 puts "CVS test repository NOT FOUND. Skipping functional tests !!!"
210 def test_fake; assert true end
212 def test_fake; assert true end
211 end
213 end
212 end
214 end
General Comments 0
You need to be logged in to leave comments. Login now