##// END OF EJS Templates
scm: git: test: model: add test of parents (#5501)...
Toshi MARUYAMA -
r7592:e0f7acaf6130
parent child
Show More
@@ -1,481 +1,500
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
19
20 class RepositoryGitTest < ActiveSupport::TestCase
20 class RepositoryGitTest < ActiveSupport::TestCase
21 fixtures :projects, :repositories, :enabled_modules, :users, :roles
21 fixtures :projects, :repositories, :enabled_modules, :users, :roles
22
22
23 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
23 REPOSITORY_PATH = Rails.root.join('tmp/test/git_repository').to_s
24 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
24 REPOSITORY_PATH.gsub!(/\//, "\\") if Redmine::Platform.mswin?
25
25
26 NUM_REV = 21
26 NUM_REV = 21
27
27
28 FELIX_HEX = "Felix Sch\xC3\xA4fer"
28 FELIX_HEX = "Felix Sch\xC3\xA4fer"
29 CHAR_1_HEX = "\xc3\x9c"
29 CHAR_1_HEX = "\xc3\x9c"
30
30
31 ## Ruby uses ANSI api to fork a process on Windows.
31 ## Ruby uses ANSI api to fork a process on Windows.
32 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
32 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
33 ## and these are incompatible with ASCII.
33 ## and these are incompatible with ASCII.
34 # WINDOWS_PASS = Redmine::Platform.mswin?
34 # WINDOWS_PASS = Redmine::Platform.mswin?
35 WINDOWS_PASS = false
35 WINDOWS_PASS = false
36
36
37 ## Git, Mercurial and CVS path encodings are binary.
37 ## Git, Mercurial and CVS path encodings are binary.
38 ## Subversion supports URL encoding for path.
38 ## Subversion supports URL encoding for path.
39 ## Redmine Mercurial adapter and extension use URL encoding.
39 ## Redmine Mercurial adapter and extension use URL encoding.
40 ## Git accepts only binary path in command line parameter.
40 ## Git accepts only binary path in command line parameter.
41 ## So, there is no way to use binary command line parameter in JRuby.
41 ## So, there is no way to use binary command line parameter in JRuby.
42 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
42 JRUBY_SKIP = (RUBY_PLATFORM == 'java')
43 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
43 JRUBY_SKIP_STR = "TODO: This test fails in JRuby"
44
44
45 if File.directory?(REPOSITORY_PATH)
45 if File.directory?(REPOSITORY_PATH)
46 def setup
46 def setup
47 klass = Repository::Git
47 klass = Repository::Git
48 assert_equal "Git", klass.scm_name
48 assert_equal "Git", klass.scm_name
49 assert klass.scm_adapter_class
49 assert klass.scm_adapter_class
50 assert_not_equal "", klass.scm_command
50 assert_not_equal "", klass.scm_command
51 assert_equal true, klass.scm_available
51 assert_equal true, klass.scm_available
52
52
53 @project = Project.find(3)
53 @project = Project.find(3)
54 @repository = Repository::Git.create(
54 @repository = Repository::Git.create(
55 :project => @project,
55 :project => @project,
56 :url => REPOSITORY_PATH,
56 :url => REPOSITORY_PATH,
57 :path_encoding => 'ISO-8859-1'
57 :path_encoding => 'ISO-8859-1'
58 )
58 )
59 assert @repository
59 assert @repository
60 @char_1 = CHAR_1_HEX.dup
60 @char_1 = CHAR_1_HEX.dup
61 if @char_1.respond_to?(:force_encoding)
61 if @char_1.respond_to?(:force_encoding)
62 @char_1.force_encoding('UTF-8')
62 @char_1.force_encoding('UTF-8')
63 end
63 end
64 end
64 end
65
65
66 def test_fetch_changesets_from_scratch
66 def test_fetch_changesets_from_scratch
67 assert_nil @repository.extra_info
67 assert_nil @repository.extra_info
68
68
69 assert_equal 0, @repository.changesets.count
69 assert_equal 0, @repository.changesets.count
70 @repository.fetch_changesets
70 @repository.fetch_changesets
71 @project.reload
71 @project.reload
72
72
73 assert_equal NUM_REV, @repository.changesets.count
73 assert_equal NUM_REV, @repository.changesets.count
74 assert_equal 33, @repository.changes.count
74 assert_equal 33, @repository.changes.count
75
75
76 commit = @repository.changesets.find(:first, :order => 'committed_on ASC')
76 commit = @repository.changesets.find(:first, :order => 'committed_on ASC')
77 assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
77 assert_equal "Initial import.\nThe repository contains 3 files.", commit.comments
78 assert_equal "jsmith <jsmith@foo.bar>", commit.committer
78 assert_equal "jsmith <jsmith@foo.bar>", commit.committer
79 assert_equal User.find_by_login('jsmith'), commit.user
79 assert_equal User.find_by_login('jsmith'), commit.user
80 # TODO: add a commit with commit time <> author time to the test repository
80 # TODO: add a commit with commit time <> author time to the test repository
81 assert_equal "2007-12-14 09:22:52".to_time, commit.committed_on
81 assert_equal "2007-12-14 09:22:52".to_time, commit.committed_on
82 assert_equal "2007-12-14".to_date, commit.commit_date
82 assert_equal "2007-12-14".to_date, commit.commit_date
83 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.revision
83 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.revision
84 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.scmid
84 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518", commit.scmid
85 assert_equal 3, commit.changes.count
85 assert_equal 3, commit.changes.count
86 change = commit.changes.sort_by(&:path).first
86 change = commit.changes.sort_by(&:path).first
87 assert_equal "README", change.path
87 assert_equal "README", change.path
88 assert_equal "A", change.action
88 assert_equal "A", change.action
89
89
90 assert_equal 4, @repository.extra_info["branches"].size
90 assert_equal 4, @repository.extra_info["branches"].size
91 end
91 end
92
92
93 def test_fetch_changesets_incremental
93 def test_fetch_changesets_incremental
94 assert_equal 0, @repository.changesets.count
94 assert_equal 0, @repository.changesets.count
95 @repository.fetch_changesets
95 @repository.fetch_changesets
96 @project.reload
96 @project.reload
97 assert_equal NUM_REV, @repository.changesets.count
97 assert_equal NUM_REV, @repository.changesets.count
98 assert_equal 33, @repository.changes.count
98 assert_equal 33, @repository.changes.count
99 extra_info_db = @repository.extra_info["branches"]
99 extra_info_db = @repository.extra_info["branches"]
100 assert_equal 4, extra_info_db.size
100 assert_equal 4, extra_info_db.size
101 assert_equal "1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127",
101 assert_equal "1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127",
102 extra_info_db["latin-1-path-encoding"]["last_scmid"]
102 extra_info_db["latin-1-path-encoding"]["last_scmid"]
103 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
103 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
104 extra_info_db["master"]["last_scmid"]
104 extra_info_db["master"]["last_scmid"]
105
105
106 del_revs = [
106 del_revs = [
107 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
107 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
108 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
108 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
109 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
109 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
110 "deff712f05a90d96edbd70facc47d944be5897e3",
110 "deff712f05a90d96edbd70facc47d944be5897e3",
111 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
111 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
112 "7e61ac704deecde634b51e59daa8110435dcb3da",
112 "7e61ac704deecde634b51e59daa8110435dcb3da",
113 ]
113 ]
114 @repository.changesets.each do |rev|
114 @repository.changesets.each do |rev|
115 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
115 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
116 end
116 end
117 @project.reload
117 @project.reload
118 cs1 = @repository.changesets
118 cs1 = @repository.changesets
119 assert_equal 15, cs1.count
119 assert_equal 15, cs1.count
120 h = @repository.extra_info.dup
120 h = @repository.extra_info.dup
121 h["branches"]["master"]["last_scmid"] =
121 h["branches"]["master"]["last_scmid"] =
122 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
122 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
123 @repository.merge_extra_info(h)
123 @repository.merge_extra_info(h)
124 @repository.save
124 @repository.save
125 @project.reload
125 @project.reload
126 extra_info_db_1 = @repository.extra_info["branches"]
126 extra_info_db_1 = @repository.extra_info["branches"]
127 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
127 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
128 extra_info_db_1["master"]["last_scmid"]
128 extra_info_db_1["master"]["last_scmid"]
129
129
130 @repository.fetch_changesets
130 @repository.fetch_changesets
131 @project.reload
131 @project.reload
132 assert_equal NUM_REV, @repository.changesets.count
132 assert_equal NUM_REV, @repository.changesets.count
133 end
133 end
134
134
135 def test_fetch_changesets_invalid_rev
135 def test_fetch_changesets_invalid_rev
136 assert_equal 0, @repository.changesets.count
136 assert_equal 0, @repository.changesets.count
137 @repository.fetch_changesets
137 @repository.fetch_changesets
138 @project.reload
138 @project.reload
139 assert_equal NUM_REV, @repository.changesets.count
139 assert_equal NUM_REV, @repository.changesets.count
140 extra_info_db = @repository.extra_info["branches"]
140 extra_info_db = @repository.extra_info["branches"]
141 assert_equal 4, extra_info_db.size
141 assert_equal 4, extra_info_db.size
142 assert_equal "1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127",
142 assert_equal "1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127",
143 extra_info_db["latin-1-path-encoding"]["last_scmid"]
143 extra_info_db["latin-1-path-encoding"]["last_scmid"]
144 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
144 assert_equal "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
145 extra_info_db["master"]["last_scmid"]
145 extra_info_db["master"]["last_scmid"]
146
146
147 del_revs = [
147 del_revs = [
148 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
148 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
149 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
149 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
150 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
150 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
151 "deff712f05a90d96edbd70facc47d944be5897e3",
151 "deff712f05a90d96edbd70facc47d944be5897e3",
152 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
152 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
153 "7e61ac704deecde634b51e59daa8110435dcb3da",
153 "7e61ac704deecde634b51e59daa8110435dcb3da",
154 ]
154 ]
155 @repository.changesets.each do |rev|
155 @repository.changesets.each do |rev|
156 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
156 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
157 end
157 end
158 @project.reload
158 @project.reload
159 cs1 = @repository.changesets
159 cs1 = @repository.changesets
160 assert_equal 15, cs1.count
160 assert_equal 15, cs1.count
161 h = @repository.extra_info.dup
161 h = @repository.extra_info.dup
162 h["branches"]["master"]["last_scmid"] =
162 h["branches"]["master"]["last_scmid"] =
163 "abcd1234efgh"
163 "abcd1234efgh"
164 @repository.merge_extra_info(h)
164 @repository.merge_extra_info(h)
165 @repository.save
165 @repository.save
166 @project.reload
166 @project.reload
167 extra_info_db_1 = @repository.extra_info["branches"]
167 extra_info_db_1 = @repository.extra_info["branches"]
168 assert_equal "abcd1234efgh",
168 assert_equal "abcd1234efgh",
169 extra_info_db_1["master"]["last_scmid"]
169 extra_info_db_1["master"]["last_scmid"]
170
170
171 @repository.fetch_changesets
171 @repository.fetch_changesets
172 @project.reload
172 @project.reload
173 assert_equal 15, @repository.changesets.count
173 assert_equal 15, @repository.changesets.count
174 end
174 end
175
175
176 def test_parents
177 assert_equal 0, @repository.changesets.count
178 @repository.fetch_changesets
179 @project.reload
180 assert_equal NUM_REV, @repository.changesets.count
181 r1 = @repository.find_changeset_by_name("7234cb2750b63")
182 assert_equal [], r1.parents
183 r2 = @repository.find_changeset_by_name("899a15dba03a3")
184 assert_equal 1, r2.parents.length
185 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
186 r2.parents[0].identifier
187 r3 = @repository.find_changeset_by_name("32ae898b720c2")
188 assert_equal 2, r3.parents.length
189 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
190 r3.parents[0].identifier
191 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da",
192 r3.parents[1].identifier
193 end
194
176 def test_db_consistent_ordering_init
195 def test_db_consistent_ordering_init
177 assert_nil @repository.extra_info
196 assert_nil @repository.extra_info
178 assert_equal 0, @repository.changesets.count
197 assert_equal 0, @repository.changesets.count
179 @repository.fetch_changesets
198 @repository.fetch_changesets
180 @project.reload
199 @project.reload
181 assert_equal 1, @repository.extra_info["db_consistent"]["ordering"]
200 assert_equal 1, @repository.extra_info["db_consistent"]["ordering"]
182 end
201 end
183
202
184 def test_db_consistent_ordering_before_1_2
203 def test_db_consistent_ordering_before_1_2
185 assert_nil @repository.extra_info
204 assert_nil @repository.extra_info
186 assert_equal 0, @repository.changesets.count
205 assert_equal 0, @repository.changesets.count
187 @repository.fetch_changesets
206 @repository.fetch_changesets
188 @project.reload
207 @project.reload
189 assert_equal NUM_REV, @repository.changesets.count
208 assert_equal NUM_REV, @repository.changesets.count
190 assert_not_nil @repository.extra_info
209 assert_not_nil @repository.extra_info
191 @repository.write_attribute(:extra_info, nil)
210 @repository.write_attribute(:extra_info, nil)
192 @repository.save
211 @repository.save
193 assert_nil @repository.extra_info
212 assert_nil @repository.extra_info
194 assert_equal NUM_REV, @repository.changesets.count
213 assert_equal NUM_REV, @repository.changesets.count
195 @repository.fetch_changesets
214 @repository.fetch_changesets
196 @project.reload
215 @project.reload
197 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
216 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
198
217
199 del_revs = [
218 del_revs = [
200 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
219 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
201 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
220 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
202 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
221 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
203 "deff712f05a90d96edbd70facc47d944be5897e3",
222 "deff712f05a90d96edbd70facc47d944be5897e3",
204 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
223 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
205 "7e61ac704deecde634b51e59daa8110435dcb3da",
224 "7e61ac704deecde634b51e59daa8110435dcb3da",
206 ]
225 ]
207 @repository.changesets.each do |rev|
226 @repository.changesets.each do |rev|
208 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
227 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
209 end
228 end
210 @project.reload
229 @project.reload
211 cs1 = @repository.changesets
230 cs1 = @repository.changesets
212 assert_equal 15, cs1.count
231 assert_equal 15, cs1.count
213 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
232 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
214 h = @repository.extra_info.dup
233 h = @repository.extra_info.dup
215 h["branches"]["master"]["last_scmid"] =
234 h["branches"]["master"]["last_scmid"] =
216 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
235 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
217 @repository.merge_extra_info(h)
236 @repository.merge_extra_info(h)
218 @repository.save
237 @repository.save
219 @project.reload
238 @project.reload
220 extra_info_db_1 = @repository.extra_info["branches"]
239 extra_info_db_1 = @repository.extra_info["branches"]
221 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
240 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
222 extra_info_db_1["master"]["last_scmid"]
241 extra_info_db_1["master"]["last_scmid"]
223
242
224 @repository.fetch_changesets
243 @repository.fetch_changesets
225 assert_equal NUM_REV, @repository.changesets.count
244 assert_equal NUM_REV, @repository.changesets.count
226 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
245 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
227 end
246 end
228
247
229 def test_latest_changesets
248 def test_latest_changesets
230 assert_equal 0, @repository.changesets.count
249 assert_equal 0, @repository.changesets.count
231 @repository.fetch_changesets
250 @repository.fetch_changesets
232 @project.reload
251 @project.reload
233 assert_equal NUM_REV, @repository.changesets.count
252 assert_equal NUM_REV, @repository.changesets.count
234 # with limit
253 # with limit
235 changesets = @repository.latest_changesets('', nil, 2)
254 changesets = @repository.latest_changesets('', nil, 2)
236 assert_equal 2, changesets.size
255 assert_equal 2, changesets.size
237
256
238 # with path
257 # with path
239 changesets = @repository.latest_changesets('images', nil)
258 changesets = @repository.latest_changesets('images', nil)
240 assert_equal [
259 assert_equal [
241 'deff712f05a90d96edbd70facc47d944be5897e3',
260 'deff712f05a90d96edbd70facc47d944be5897e3',
242 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
261 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
243 '7234cb2750b63f47bff735edc50a1c0a433c2518',
262 '7234cb2750b63f47bff735edc50a1c0a433c2518',
244 ], changesets.collect(&:revision)
263 ], changesets.collect(&:revision)
245
264
246 changesets = @repository.latest_changesets('README', nil)
265 changesets = @repository.latest_changesets('README', nil)
247 assert_equal [
266 assert_equal [
248 '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
267 '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
249 '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
268 '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
250 '713f4944648826f558cf548222f813dabe7cbb04',
269 '713f4944648826f558cf548222f813dabe7cbb04',
251 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
270 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
252 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
271 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
253 '7234cb2750b63f47bff735edc50a1c0a433c2518',
272 '7234cb2750b63f47bff735edc50a1c0a433c2518',
254 ], changesets.collect(&:revision)
273 ], changesets.collect(&:revision)
255
274
256 # with path, revision and limit
275 # with path, revision and limit
257 changesets = @repository.latest_changesets('images', '899a15dba')
276 changesets = @repository.latest_changesets('images', '899a15dba')
258 assert_equal [
277 assert_equal [
259 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
278 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
260 '7234cb2750b63f47bff735edc50a1c0a433c2518',
279 '7234cb2750b63f47bff735edc50a1c0a433c2518',
261 ], changesets.collect(&:revision)
280 ], changesets.collect(&:revision)
262
281
263 changesets = @repository.latest_changesets('images', '899a15dba', 1)
282 changesets = @repository.latest_changesets('images', '899a15dba', 1)
264 assert_equal [
283 assert_equal [
265 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
284 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
266 ], changesets.collect(&:revision)
285 ], changesets.collect(&:revision)
267
286
268 changesets = @repository.latest_changesets('README', '899a15dba')
287 changesets = @repository.latest_changesets('README', '899a15dba')
269 assert_equal [
288 assert_equal [
270 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
289 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
271 '7234cb2750b63f47bff735edc50a1c0a433c2518',
290 '7234cb2750b63f47bff735edc50a1c0a433c2518',
272 ], changesets.collect(&:revision)
291 ], changesets.collect(&:revision)
273
292
274 changesets = @repository.latest_changesets('README', '899a15dba', 1)
293 changesets = @repository.latest_changesets('README', '899a15dba', 1)
275 assert_equal [
294 assert_equal [
276 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
295 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
277 ], changesets.collect(&:revision)
296 ], changesets.collect(&:revision)
278
297
279 # with path, tag and limit
298 # with path, tag and limit
280 changesets = @repository.latest_changesets('images', 'tag01.annotated')
299 changesets = @repository.latest_changesets('images', 'tag01.annotated')
281 assert_equal [
300 assert_equal [
282 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
301 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
283 '7234cb2750b63f47bff735edc50a1c0a433c2518',
302 '7234cb2750b63f47bff735edc50a1c0a433c2518',
284 ], changesets.collect(&:revision)
303 ], changesets.collect(&:revision)
285
304
286 changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
305 changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
287 assert_equal [
306 assert_equal [
288 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
307 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
289 ], changesets.collect(&:revision)
308 ], changesets.collect(&:revision)
290
309
291 changesets = @repository.latest_changesets('README', 'tag01.annotated')
310 changesets = @repository.latest_changesets('README', 'tag01.annotated')
292 assert_equal [
311 assert_equal [
293 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
312 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
294 '7234cb2750b63f47bff735edc50a1c0a433c2518',
313 '7234cb2750b63f47bff735edc50a1c0a433c2518',
295 ], changesets.collect(&:revision)
314 ], changesets.collect(&:revision)
296
315
297 changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
316 changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
298 assert_equal [
317 assert_equal [
299 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
318 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
300 ], changesets.collect(&:revision)
319 ], changesets.collect(&:revision)
301
320
302 # with path, branch and limit
321 # with path, branch and limit
303 changesets = @repository.latest_changesets('images', 'test_branch')
322 changesets = @repository.latest_changesets('images', 'test_branch')
304 assert_equal [
323 assert_equal [
305 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
324 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
306 '7234cb2750b63f47bff735edc50a1c0a433c2518',
325 '7234cb2750b63f47bff735edc50a1c0a433c2518',
307 ], changesets.collect(&:revision)
326 ], changesets.collect(&:revision)
308
327
309 changesets = @repository.latest_changesets('images', 'test_branch', 1)
328 changesets = @repository.latest_changesets('images', 'test_branch', 1)
310 assert_equal [
329 assert_equal [
311 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
330 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
312 ], changesets.collect(&:revision)
331 ], changesets.collect(&:revision)
313
332
314 changesets = @repository.latest_changesets('README', 'test_branch')
333 changesets = @repository.latest_changesets('README', 'test_branch')
315 assert_equal [
334 assert_equal [
316 '713f4944648826f558cf548222f813dabe7cbb04',
335 '713f4944648826f558cf548222f813dabe7cbb04',
317 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
336 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
318 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
337 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
319 '7234cb2750b63f47bff735edc50a1c0a433c2518',
338 '7234cb2750b63f47bff735edc50a1c0a433c2518',
320 ], changesets.collect(&:revision)
339 ], changesets.collect(&:revision)
321
340
322 changesets = @repository.latest_changesets('README', 'test_branch', 2)
341 changesets = @repository.latest_changesets('README', 'test_branch', 2)
323 assert_equal [
342 assert_equal [
324 '713f4944648826f558cf548222f813dabe7cbb04',
343 '713f4944648826f558cf548222f813dabe7cbb04',
325 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
344 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
326 ], changesets.collect(&:revision)
345 ], changesets.collect(&:revision)
327
346
328 if JRUBY_SKIP
347 if JRUBY_SKIP
329 puts JRUBY_SKIP_STR
348 puts JRUBY_SKIP_STR
330 else
349 else
331 # latin-1 encoding path
350 # latin-1 encoding path
332 changesets = @repository.latest_changesets(
351 changesets = @repository.latest_changesets(
333 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
352 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
334 assert_equal [
353 assert_equal [
335 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
354 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
336 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
355 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
337 ], changesets.collect(&:revision)
356 ], changesets.collect(&:revision)
338
357
339 changesets = @repository.latest_changesets(
358 changesets = @repository.latest_changesets(
340 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
359 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
341 assert_equal [
360 assert_equal [
342 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
361 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
343 ], changesets.collect(&:revision)
362 ], changesets.collect(&:revision)
344 end
363 end
345 end
364 end
346
365
347 def test_latest_changesets_latin_1_dir
366 def test_latest_changesets_latin_1_dir
348 if WINDOWS_PASS
367 if WINDOWS_PASS
349 #
368 #
350 elsif JRUBY_SKIP
369 elsif JRUBY_SKIP
351 puts JRUBY_SKIP_STR
370 puts JRUBY_SKIP_STR
352 else
371 else
353 assert_equal 0, @repository.changesets.count
372 assert_equal 0, @repository.changesets.count
354 @repository.fetch_changesets
373 @repository.fetch_changesets
355 @project.reload
374 @project.reload
356 assert_equal NUM_REV, @repository.changesets.count
375 assert_equal NUM_REV, @repository.changesets.count
357 changesets = @repository.latest_changesets(
376 changesets = @repository.latest_changesets(
358 "latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
377 "latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
359 assert_equal [
378 assert_equal [
360 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
379 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
361 ], changesets.collect(&:revision)
380 ], changesets.collect(&:revision)
362 end
381 end
363 end
382 end
364
383
365 def test_find_changeset_by_name
384 def test_find_changeset_by_name
366 assert_equal 0, @repository.changesets.count
385 assert_equal 0, @repository.changesets.count
367 @repository.fetch_changesets
386 @repository.fetch_changesets
368 @project.reload
387 @project.reload
369 assert_equal NUM_REV, @repository.changesets.count
388 assert_equal NUM_REV, @repository.changesets.count
370 ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
389 ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
371 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
390 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
372 @repository.find_changeset_by_name(r).revision
391 @repository.find_changeset_by_name(r).revision
373 end
392 end
374 end
393 end
375
394
376 def test_find_changeset_by_empty_name
395 def test_find_changeset_by_empty_name
377 assert_equal 0, @repository.changesets.count
396 assert_equal 0, @repository.changesets.count
378 @repository.fetch_changesets
397 @repository.fetch_changesets
379 @project.reload
398 @project.reload
380 assert_equal NUM_REV, @repository.changesets.count
399 assert_equal NUM_REV, @repository.changesets.count
381 ['', ' ', nil].each do |r|
400 ['', ' ', nil].each do |r|
382 assert_nil @repository.find_changeset_by_name(r)
401 assert_nil @repository.find_changeset_by_name(r)
383 end
402 end
384 end
403 end
385
404
386 def test_identifier
405 def test_identifier
387 assert_equal 0, @repository.changesets.count
406 assert_equal 0, @repository.changesets.count
388 @repository.fetch_changesets
407 @repository.fetch_changesets
389 @project.reload
408 @project.reload
390 assert_equal NUM_REV, @repository.changesets.count
409 assert_equal NUM_REV, @repository.changesets.count
391 c = @repository.changesets.find_by_revision(
410 c = @repository.changesets.find_by_revision(
392 '7234cb2750b63f47bff735edc50a1c0a433c2518')
411 '7234cb2750b63f47bff735edc50a1c0a433c2518')
393 assert_equal c.scmid, c.identifier
412 assert_equal c.scmid, c.identifier
394 end
413 end
395
414
396 def test_format_identifier
415 def test_format_identifier
397 assert_equal 0, @repository.changesets.count
416 assert_equal 0, @repository.changesets.count
398 @repository.fetch_changesets
417 @repository.fetch_changesets
399 @project.reload
418 @project.reload
400 assert_equal NUM_REV, @repository.changesets.count
419 assert_equal NUM_REV, @repository.changesets.count
401 c = @repository.changesets.find_by_revision(
420 c = @repository.changesets.find_by_revision(
402 '7234cb2750b63f47bff735edc50a1c0a433c2518')
421 '7234cb2750b63f47bff735edc50a1c0a433c2518')
403 assert_equal '7234cb27', c.format_identifier
422 assert_equal '7234cb27', c.format_identifier
404 end
423 end
405
424
406 def test_activities
425 def test_activities
407 c = Changeset.new(:repository => @repository,
426 c = Changeset.new(:repository => @repository,
408 :committed_on => Time.now,
427 :committed_on => Time.now,
409 :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
428 :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
410 :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
429 :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
411 :comments => 'test')
430 :comments => 'test')
412 assert c.event_title.include?('abc7234c:')
431 assert c.event_title.include?('abc7234c:')
413 assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
432 assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
414 end
433 end
415
434
416 def test_log_utf8
435 def test_log_utf8
417 assert_equal 0, @repository.changesets.count
436 assert_equal 0, @repository.changesets.count
418 @repository.fetch_changesets
437 @repository.fetch_changesets
419 @project.reload
438 @project.reload
420 assert_equal NUM_REV, @repository.changesets.count
439 assert_equal NUM_REV, @repository.changesets.count
421 str_felix_hex = FELIX_HEX.dup
440 str_felix_hex = FELIX_HEX.dup
422 if str_felix_hex.respond_to?(:force_encoding)
441 if str_felix_hex.respond_to?(:force_encoding)
423 str_felix_hex.force_encoding('UTF-8')
442 str_felix_hex.force_encoding('UTF-8')
424 end
443 end
425 c = @repository.changesets.find_by_revision(
444 c = @repository.changesets.find_by_revision(
426 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
445 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
427 assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
446 assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
428 end
447 end
429
448
430 def test_previous
449 def test_previous
431 assert_equal 0, @repository.changesets.count
450 assert_equal 0, @repository.changesets.count
432 @repository.fetch_changesets
451 @repository.fetch_changesets
433 @project.reload
452 @project.reload
434 assert_equal NUM_REV, @repository.changesets.count
453 assert_equal NUM_REV, @repository.changesets.count
435 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
454 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
436 changeset = @repository.find_changeset_by_name(r1)
455 changeset = @repository.find_changeset_by_name(r1)
437 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
456 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
438 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
457 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
439 end
458 end
440 end
459 end
441 end
460 end
442
461
443 def test_previous_nil
462 def test_previous_nil
444 assert_equal 0, @repository.changesets.count
463 assert_equal 0, @repository.changesets.count
445 @repository.fetch_changesets
464 @repository.fetch_changesets
446 @project.reload
465 @project.reload
447 assert_equal NUM_REV, @repository.changesets.count
466 assert_equal NUM_REV, @repository.changesets.count
448 %w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
467 %w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
449 changeset = @repository.find_changeset_by_name(r1)
468 changeset = @repository.find_changeset_by_name(r1)
450 assert_nil changeset.previous
469 assert_nil changeset.previous
451 end
470 end
452 end
471 end
453
472
454 def test_next
473 def test_next
455 assert_equal 0, @repository.changesets.count
474 assert_equal 0, @repository.changesets.count
456 @repository.fetch_changesets
475 @repository.fetch_changesets
457 @project.reload
476 @project.reload
458 assert_equal NUM_REV, @repository.changesets.count
477 assert_equal NUM_REV, @repository.changesets.count
459 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
478 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
460 changeset = @repository.find_changeset_by_name(r2)
479 changeset = @repository.find_changeset_by_name(r2)
461 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
480 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
462 assert_equal @repository.find_changeset_by_name(r1), changeset.next
481 assert_equal @repository.find_changeset_by_name(r1), changeset.next
463 end
482 end
464 end
483 end
465 end
484 end
466
485
467 def test_next_nil
486 def test_next_nil
468 assert_equal 0, @repository.changesets.count
487 assert_equal 0, @repository.changesets.count
469 @repository.fetch_changesets
488 @repository.fetch_changesets
470 @project.reload
489 @project.reload
471 assert_equal NUM_REV, @repository.changesets.count
490 assert_equal NUM_REV, @repository.changesets.count
472 %w|67e7792ce20ccae2e4bb73eed09bb397819c8834 67e7792ce20cca|.each do |r1|
491 %w|67e7792ce20ccae2e4bb73eed09bb397819c8834 67e7792ce20cca|.each do |r1|
473 changeset = @repository.find_changeset_by_name(r1)
492 changeset = @repository.find_changeset_by_name(r1)
474 assert_nil changeset.next
493 assert_nil changeset.next
475 end
494 end
476 end
495 end
477 else
496 else
478 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
497 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
479 def test_fake; assert true end
498 def test_fake; assert true end
480 end
499 end
481 end
500 end
General Comments 0
You need to be logged in to leave comments. Login now