##// END OF EJS Templates
scm: git: fix newlines of test/unit/repository_git_test.rb....
Toshi MARUYAMA -
r4955:2ebaf1372db3
parent child
Show More
@@ -1,315 +1,315
1 1 # redMine - project management software
2 2 # Copyright (C) 2006-2007 Jean-Philippe Lang
3 3 #
4 4 # This program is free software; you can redistribute it and/or
5 5 # modify it under the terms of the GNU General Public License
6 6 # as published by the Free Software Foundation; either version 2
7 7 # of the License, or (at your option) any later version.
8 8 #
9 9 # This program is distributed in the hope that it will be useful,
10 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 12 # GNU General Public License for more details.
13 13 #
14 14 # You should have received a copy of the GNU General Public License
15 15 # along with this program; if not, write to the Free Software
16 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 17
18 18 require File.expand_path('../../test_helper', __FILE__)
19 19
20 20 class RepositoryGitTest < ActiveSupport::TestCase
21 21 fixtures :projects, :repositories, :enabled_modules, :users, :roles
22 22
23 23 # No '..' in the repository path
24 24 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
25 25 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
26 26
27 27 FELIX_HEX = "Felix Sch\xC3\xA4fer"
28 28 CHAR_1_HEX = "\xc3\x9c"
29 29
30 ## Ruby uses ANSI api to fork a process on Windows.
31 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
32 ## and these are incompatible with ASCII.
33 # WINDOWS_PASS = Redmine::Platform.mswin?
34 WINDOWS_PASS = false
30 ## Ruby uses ANSI api to fork a process on Windows.
31 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
32 ## and these are incompatible with ASCII.
33 # WINDOWS_PASS = Redmine::Platform.mswin?
34 WINDOWS_PASS = false
35 35
36 36 def setup
37 37 @project = Project.find(3)
38 38 @repository = Repository::Git.create(
39 39 :project => @project,
40 40 :url => REPOSITORY_PATH,
41 41 :path_encoding => 'ISO-8859-1'
42 42 )
43 43 assert @repository
44 44 @char_1 = CHAR_1_HEX.dup
45 45 if @char_1.respond_to?(:force_encoding)
46 46 @char_1.force_encoding('UTF-8')
47 47 end
48 48 end
49 49
50 50 if File.directory?(REPOSITORY_PATH)
51 51 def test_fetch_changesets_from_scratch
52 52 @repository.fetch_changesets
53 53 @repository.reload
54 54
55 55 assert_equal 21, @repository.changesets.count
56 56 assert_equal 33, @repository.changes.count
57 57
58 58 commit = @repository.changesets.find(:first, :order => 'committed_on ASC')
59 59 assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
60 60 assert_equal "jsmith <jsmith@foo.bar>", commit.committer
61 61 assert_equal User.find_by_login('jsmith'), commit.user
62 62 # TODO: add a commit with commit time <> author time to the test repository
63 63 assert_equal "2007-12-14 09:22:52".to_time, commit.committed_on
64 64 assert_equal "2007-12-14".to_date, commit.commit_date
65 65 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.revision
66 66 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.scmid
67 67 assert_equal 3, commit.changes.count
68 68 change = commit.changes.sort_by(&:path).first
69 69 assert_equal "README", change.path
70 70 assert_equal "A", change.action
71 71 end
72 72
73 73 def test_fetch_changesets_incremental
74 74 @repository.fetch_changesets
75 75 # Remove the 3 latest changesets
76 76 @repository.changesets.find(:all, :order => 'committed_on DESC', :limit => 8).each(&:destroy)
77 77 @repository.reload
78 78 cs1 = @repository.changesets
79 79 assert_equal 13, cs1.count
80 80
81 81 rev_a_commit = @repository.changesets.find(:first, :order => 'committed_on DESC')
82 82 assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.revision
83 83 # Mon Jul 5 22:34:26 2010 +0200
84 84 rev_a_committed_on = Time.gm(2010, 7, 5, 20, 34, 26)
85 85 assert_equal '4f26664364207fa8b1af9f8722647ab2d4ac5d43', rev_a_commit.scmid
86 86 assert_equal rev_a_committed_on, rev_a_commit.committed_on
87 87 latest_rev = @repository.latest_changeset
88 88 assert_equal rev_a_committed_on, latest_rev.committed_on
89 89
90 90 @repository.fetch_changesets
91 91 assert_equal 21, @repository.changesets.count
92 92 end
93 93
94 94 def test_latest_changesets
95 95 @repository.fetch_changesets
96 96 @repository.reload
97 97 # with limit
98 98 changesets = @repository.latest_changesets('', nil, 2)
99 99 assert_equal 2, changesets.size
100 100
101 101 # with path
102 102 changesets = @repository.latest_changesets('images', nil)
103 103 assert_equal [
104 104 'deff712f05a90d96edbd70facc47d944be5897e3',
105 105 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
106 106 '7234cb2750b63f47bff735edc50a1c0a433c2518',
107 107 ], changesets.collect(&:revision)
108 108
109 109 changesets = @repository.latest_changesets('README', nil)
110 110 assert_equal [
111 111 '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
112 112 '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
113 113 '713f4944648826f558cf548222f813dabe7cbb04',
114 114 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
115 115 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
116 116 '7234cb2750b63f47bff735edc50a1c0a433c2518',
117 117 ], changesets.collect(&:revision)
118 118
119 119 # with path, revision and limit
120 120 changesets = @repository.latest_changesets('images', '899a15dba')
121 121 assert_equal [
122 122 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
123 123 '7234cb2750b63f47bff735edc50a1c0a433c2518',
124 124 ], changesets.collect(&:revision)
125 125
126 126 changesets = @repository.latest_changesets('images', '899a15dba', 1)
127 127 assert_equal [
128 128 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
129 129 ], changesets.collect(&:revision)
130 130
131 131 changesets = @repository.latest_changesets('README', '899a15dba')
132 132 assert_equal [
133 133 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
134 134 '7234cb2750b63f47bff735edc50a1c0a433c2518',
135 135 ], changesets.collect(&:revision)
136 136
137 137 changesets = @repository.latest_changesets('README', '899a15dba', 1)
138 138 assert_equal [
139 139 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
140 140 ], changesets.collect(&:revision)
141 141
142 142 # with path, tag and limit
143 143 changesets = @repository.latest_changesets('images', 'tag01.annotated')
144 144 assert_equal [
145 145 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
146 146 '7234cb2750b63f47bff735edc50a1c0a433c2518',
147 147 ], changesets.collect(&:revision)
148 148
149 149 changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
150 150 assert_equal [
151 151 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
152 152 ], changesets.collect(&:revision)
153 153
154 154 changesets = @repository.latest_changesets('README', 'tag01.annotated')
155 155 assert_equal [
156 156 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
157 157 '7234cb2750b63f47bff735edc50a1c0a433c2518',
158 158 ], changesets.collect(&:revision)
159 159
160 160 changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
161 161 assert_equal [
162 162 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
163 163 ], changesets.collect(&:revision)
164 164
165 165 # with path, branch and limit
166 166 changesets = @repository.latest_changesets('images', 'test_branch')
167 167 assert_equal [
168 168 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
169 169 '7234cb2750b63f47bff735edc50a1c0a433c2518',
170 170 ], changesets.collect(&:revision)
171 171
172 172 changesets = @repository.latest_changesets('images', 'test_branch', 1)
173 173 assert_equal [
174 174 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
175 175 ], changesets.collect(&:revision)
176 176
177 177 changesets = @repository.latest_changesets('README', 'test_branch')
178 178 assert_equal [
179 179 '713f4944648826f558cf548222f813dabe7cbb04',
180 180 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
181 181 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
182 182 '7234cb2750b63f47bff735edc50a1c0a433c2518',
183 183 ], changesets.collect(&:revision)
184 184
185 185 changesets = @repository.latest_changesets('README', 'test_branch', 2)
186 186 assert_equal [
187 187 '713f4944648826f558cf548222f813dabe7cbb04',
188 188 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
189 189 ], changesets.collect(&:revision)
190 190
191 191 # latin-1 encoding path
192 192 changesets = @repository.latest_changesets(
193 193 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
194 194 assert_equal [
195 195 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
196 196 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
197 197 ], changesets.collect(&:revision)
198 198
199 199 changesets = @repository.latest_changesets(
200 200 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
201 201 assert_equal [
202 202 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
203 203 ], changesets.collect(&:revision)
204 204 end
205 205
206 206 def test_latest_changesets_latin_1_dir
207 207 if WINDOWS_PASS
208 208 #
209 209 else
210 210 @repository.fetch_changesets
211 211 @repository.reload
212 212 changesets = @repository.latest_changesets(
213 213 "latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
214 214 assert_equal [
215 215 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
216 216 ], changesets.collect(&:revision)
217 217 end
218 218 end
219 219
220 220 def test_find_changeset_by_name
221 221 @repository.fetch_changesets
222 222 @repository.reload
223 223 ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
224 224 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
225 225 @repository.find_changeset_by_name(r).revision
226 226 end
227 227 end
228 228
229 229 def test_find_changeset_by_empty_name
230 230 @repository.fetch_changesets
231 231 @repository.reload
232 232 ['', ' ', nil].each do |r|
233 233 assert_nil @repository.find_changeset_by_name(r)
234 234 end
235 235 end
236 236
237 237 def test_identifier
238 238 @repository.fetch_changesets
239 239 @repository.reload
240 240 c = @repository.changesets.find_by_revision('7234cb2750b63f47bff735edc50a1c0a433c2518')
241 241 assert_equal c.scmid, c.identifier
242 242 end
243 243
244 244 def test_format_identifier
245 245 @repository.fetch_changesets
246 246 @repository.reload
247 247 c = @repository.changesets.find_by_revision('7234cb2750b63f47bff735edc50a1c0a433c2518')
248 248 assert_equal '7234cb27', c.format_identifier
249 249 end
250 250
251 251 def test_activities
252 252 c = Changeset.new(:repository => @repository,
253 253 :committed_on => Time.now,
254 254 :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
255 255 :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
256 256 :comments => 'test')
257 257 assert c.event_title.include?('abc7234c:')
258 258 assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
259 259 end
260 260
261 261 def test_log_utf8
262 262 @repository.fetch_changesets
263 263 @repository.reload
264 264 str_felix_hex = FELIX_HEX
265 265 if str_felix_hex.respond_to?(:force_encoding)
266 266 str_felix_hex.force_encoding('UTF-8')
267 267 end
268 268 c = @repository.changesets.find_by_revision('ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
269 269 assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
270 270 end
271 271
272 272 def test_previous
273 273 @repository.fetch_changesets
274 274 @repository.reload
275 275 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
276 276 changeset = @repository.find_changeset_by_name(r1)
277 277 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
278 278 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
279 279 end
280 280 end
281 281 end
282 282
283 283 def test_previous_nil
284 284 @repository.fetch_changesets
285 285 @repository.reload
286 286 %w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
287 287 changeset = @repository.find_changeset_by_name(r1)
288 288 assert_nil changeset.previous
289 289 end
290 290 end
291 291
292 292 def test_next
293 293 @repository.fetch_changesets
294 294 @repository.reload
295 295 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
296 296 changeset = @repository.find_changeset_by_name(r2)
297 297 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
298 298 assert_equal @repository.find_changeset_by_name(r1), changeset.next
299 299 end
300 300 end
301 301 end
302 302
303 303 def test_next_nil
304 304 @repository.fetch_changesets
305 305 @repository.reload
306 306 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
307 307 changeset = @repository.find_changeset_by_name(r1)
308 308 assert_nil changeset.next
309 309 end
310 310 end
311 311 else
312 312 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
313 313 def test_fake; assert true end
314 314 end
315 315 end
General Comments 0
You need to be logged in to leave comments. Login now