##// END OF EJS Templates
scm: git: use explicit "master" for latest_changesets at unit app test...
Toshi MARUYAMA -
r8690:ed8f988a9bfc
parent child
Show More
@@ -1,499 +1,499
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
176 def test_parents
177 assert_equal 0, @repository.changesets.count
177 assert_equal 0, @repository.changesets.count
178 @repository.fetch_changesets
178 @repository.fetch_changesets
179 @project.reload
179 @project.reload
180 assert_equal NUM_REV, @repository.changesets.count
180 assert_equal NUM_REV, @repository.changesets.count
181 r1 = @repository.find_changeset_by_name("7234cb2750b63")
181 r1 = @repository.find_changeset_by_name("7234cb2750b63")
182 assert_equal [], r1.parents
182 assert_equal [], r1.parents
183 r2 = @repository.find_changeset_by_name("899a15dba03a3")
183 r2 = @repository.find_changeset_by_name("899a15dba03a3")
184 assert_equal 1, r2.parents.length
184 assert_equal 1, r2.parents.length
185 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
185 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
186 r2.parents[0].identifier
186 r2.parents[0].identifier
187 r3 = @repository.find_changeset_by_name("32ae898b720c2")
187 r3 = @repository.find_changeset_by_name("32ae898b720c2")
188 assert_equal 2, r3.parents.length
188 assert_equal 2, r3.parents.length
189 r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
189 r4 = [r3.parents[0].identifier, r3.parents[1].identifier].sort
190 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", r4[0]
190 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", r4[0]
191 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da", r4[1]
191 assert_equal "7e61ac704deecde634b51e59daa8110435dcb3da", r4[1]
192 end
192 end
193
193
194 def test_db_consistent_ordering_init
194 def test_db_consistent_ordering_init
195 assert_nil @repository.extra_info
195 assert_nil @repository.extra_info
196 assert_equal 0, @repository.changesets.count
196 assert_equal 0, @repository.changesets.count
197 @repository.fetch_changesets
197 @repository.fetch_changesets
198 @project.reload
198 @project.reload
199 assert_equal 1, @repository.extra_info["db_consistent"]["ordering"]
199 assert_equal 1, @repository.extra_info["db_consistent"]["ordering"]
200 end
200 end
201
201
202 def test_db_consistent_ordering_before_1_2
202 def test_db_consistent_ordering_before_1_2
203 assert_nil @repository.extra_info
203 assert_nil @repository.extra_info
204 assert_equal 0, @repository.changesets.count
204 assert_equal 0, @repository.changesets.count
205 @repository.fetch_changesets
205 @repository.fetch_changesets
206 @project.reload
206 @project.reload
207 assert_equal NUM_REV, @repository.changesets.count
207 assert_equal NUM_REV, @repository.changesets.count
208 assert_not_nil @repository.extra_info
208 assert_not_nil @repository.extra_info
209 @repository.write_attribute(:extra_info, nil)
209 @repository.write_attribute(:extra_info, nil)
210 @repository.save
210 @repository.save
211 assert_nil @repository.extra_info
211 assert_nil @repository.extra_info
212 assert_equal NUM_REV, @repository.changesets.count
212 assert_equal NUM_REV, @repository.changesets.count
213 @repository.fetch_changesets
213 @repository.fetch_changesets
214 @project.reload
214 @project.reload
215 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
215 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
216
216
217 del_revs = [
217 del_revs = [
218 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
218 "83ca5fd546063a3c7dc2e568ba3355661a9e2b2c",
219 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
219 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b",
220 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
220 "4f26664364207fa8b1af9f8722647ab2d4ac5d43",
221 "deff712f05a90d96edbd70facc47d944be5897e3",
221 "deff712f05a90d96edbd70facc47d944be5897e3",
222 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
222 "32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf",
223 "7e61ac704deecde634b51e59daa8110435dcb3da",
223 "7e61ac704deecde634b51e59daa8110435dcb3da",
224 ]
224 ]
225 @repository.changesets.each do |rev|
225 @repository.changesets.each do |rev|
226 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
226 rev.destroy if del_revs.detect {|r| r == rev.scmid.to_s }
227 end
227 end
228 @project.reload
228 @project.reload
229 cs1 = @repository.changesets
229 cs1 = @repository.changesets
230 assert_equal 15, cs1.count
230 assert_equal 15, cs1.count
231 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
231 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
232 h = @repository.extra_info.dup
232 h = @repository.extra_info.dup
233 h["branches"]["master"]["last_scmid"] =
233 h["branches"]["master"]["last_scmid"] =
234 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
234 "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8"
235 @repository.merge_extra_info(h)
235 @repository.merge_extra_info(h)
236 @repository.save
236 @repository.save
237 @project.reload
237 @project.reload
238 extra_info_db_1 = @repository.extra_info["branches"]
238 extra_info_db_1 = @repository.extra_info["branches"]
239 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
239 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8",
240 extra_info_db_1["master"]["last_scmid"]
240 extra_info_db_1["master"]["last_scmid"]
241
241
242 @repository.fetch_changesets
242 @repository.fetch_changesets
243 assert_equal NUM_REV, @repository.changesets.count
243 assert_equal NUM_REV, @repository.changesets.count
244 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
244 assert_equal 0, @repository.extra_info["db_consistent"]["ordering"]
245 end
245 end
246
246
247 def test_latest_changesets
247 def test_latest_changesets
248 assert_equal 0, @repository.changesets.count
248 assert_equal 0, @repository.changesets.count
249 @repository.fetch_changesets
249 @repository.fetch_changesets
250 @project.reload
250 @project.reload
251 assert_equal NUM_REV, @repository.changesets.count
251 assert_equal NUM_REV, @repository.changesets.count
252 # with limit
252 # with limit
253 changesets = @repository.latest_changesets('', nil, 2)
253 changesets = @repository.latest_changesets('', 'master', 2)
254 assert_equal 2, changesets.size
254 assert_equal 2, changesets.size
255
255
256 # with path
256 # with path
257 changesets = @repository.latest_changesets('images', nil)
257 changesets = @repository.latest_changesets('images', 'master')
258 assert_equal [
258 assert_equal [
259 'deff712f05a90d96edbd70facc47d944be5897e3',
259 'deff712f05a90d96edbd70facc47d944be5897e3',
260 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
260 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
261 '7234cb2750b63f47bff735edc50a1c0a433c2518',
261 '7234cb2750b63f47bff735edc50a1c0a433c2518',
262 ], changesets.collect(&:revision)
262 ], changesets.collect(&:revision)
263
263
264 changesets = @repository.latest_changesets('README', nil)
264 changesets = @repository.latest_changesets('README', nil)
265 assert_equal [
265 assert_equal [
266 '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
266 '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf',
267 '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
267 '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8',
268 '713f4944648826f558cf548222f813dabe7cbb04',
268 '713f4944648826f558cf548222f813dabe7cbb04',
269 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
269 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
270 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
270 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
271 '7234cb2750b63f47bff735edc50a1c0a433c2518',
271 '7234cb2750b63f47bff735edc50a1c0a433c2518',
272 ], changesets.collect(&:revision)
272 ], changesets.collect(&:revision)
273
273
274 # with path, revision and limit
274 # with path, revision and limit
275 changesets = @repository.latest_changesets('images', '899a15dba')
275 changesets = @repository.latest_changesets('images', '899a15dba')
276 assert_equal [
276 assert_equal [
277 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
277 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
278 '7234cb2750b63f47bff735edc50a1c0a433c2518',
278 '7234cb2750b63f47bff735edc50a1c0a433c2518',
279 ], changesets.collect(&:revision)
279 ], changesets.collect(&:revision)
280
280
281 changesets = @repository.latest_changesets('images', '899a15dba', 1)
281 changesets = @repository.latest_changesets('images', '899a15dba', 1)
282 assert_equal [
282 assert_equal [
283 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
283 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
284 ], changesets.collect(&:revision)
284 ], changesets.collect(&:revision)
285
285
286 changesets = @repository.latest_changesets('README', '899a15dba')
286 changesets = @repository.latest_changesets('README', '899a15dba')
287 assert_equal [
287 assert_equal [
288 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
288 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
289 '7234cb2750b63f47bff735edc50a1c0a433c2518',
289 '7234cb2750b63f47bff735edc50a1c0a433c2518',
290 ], changesets.collect(&:revision)
290 ], changesets.collect(&:revision)
291
291
292 changesets = @repository.latest_changesets('README', '899a15dba', 1)
292 changesets = @repository.latest_changesets('README', '899a15dba', 1)
293 assert_equal [
293 assert_equal [
294 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
294 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
295 ], changesets.collect(&:revision)
295 ], changesets.collect(&:revision)
296
296
297 # with path, tag and limit
297 # with path, tag and limit
298 changesets = @repository.latest_changesets('images', 'tag01.annotated')
298 changesets = @repository.latest_changesets('images', 'tag01.annotated')
299 assert_equal [
299 assert_equal [
300 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
300 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
301 '7234cb2750b63f47bff735edc50a1c0a433c2518',
301 '7234cb2750b63f47bff735edc50a1c0a433c2518',
302 ], changesets.collect(&:revision)
302 ], changesets.collect(&:revision)
303
303
304 changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
304 changesets = @repository.latest_changesets('images', 'tag01.annotated', 1)
305 assert_equal [
305 assert_equal [
306 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
306 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
307 ], changesets.collect(&:revision)
307 ], changesets.collect(&:revision)
308
308
309 changesets = @repository.latest_changesets('README', 'tag01.annotated')
309 changesets = @repository.latest_changesets('README', 'tag01.annotated')
310 assert_equal [
310 assert_equal [
311 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
311 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
312 '7234cb2750b63f47bff735edc50a1c0a433c2518',
312 '7234cb2750b63f47bff735edc50a1c0a433c2518',
313 ], changesets.collect(&:revision)
313 ], changesets.collect(&:revision)
314
314
315 changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
315 changesets = @repository.latest_changesets('README', 'tag01.annotated', 1)
316 assert_equal [
316 assert_equal [
317 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
317 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
318 ], changesets.collect(&:revision)
318 ], changesets.collect(&:revision)
319
319
320 # with path, branch and limit
320 # with path, branch and limit
321 changesets = @repository.latest_changesets('images', 'test_branch')
321 changesets = @repository.latest_changesets('images', 'test_branch')
322 assert_equal [
322 assert_equal [
323 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
323 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
324 '7234cb2750b63f47bff735edc50a1c0a433c2518',
324 '7234cb2750b63f47bff735edc50a1c0a433c2518',
325 ], changesets.collect(&:revision)
325 ], changesets.collect(&:revision)
326
326
327 changesets = @repository.latest_changesets('images', 'test_branch', 1)
327 changesets = @repository.latest_changesets('images', 'test_branch', 1)
328 assert_equal [
328 assert_equal [
329 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
329 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
330 ], changesets.collect(&:revision)
330 ], changesets.collect(&:revision)
331
331
332 changesets = @repository.latest_changesets('README', 'test_branch')
332 changesets = @repository.latest_changesets('README', 'test_branch')
333 assert_equal [
333 assert_equal [
334 '713f4944648826f558cf548222f813dabe7cbb04',
334 '713f4944648826f558cf548222f813dabe7cbb04',
335 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
335 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
336 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
336 '899a15dba03a3b350b89c3f537e4bbe02a03cdc9',
337 '7234cb2750b63f47bff735edc50a1c0a433c2518',
337 '7234cb2750b63f47bff735edc50a1c0a433c2518',
338 ], changesets.collect(&:revision)
338 ], changesets.collect(&:revision)
339
339
340 changesets = @repository.latest_changesets('README', 'test_branch', 2)
340 changesets = @repository.latest_changesets('README', 'test_branch', 2)
341 assert_equal [
341 assert_equal [
342 '713f4944648826f558cf548222f813dabe7cbb04',
342 '713f4944648826f558cf548222f813dabe7cbb04',
343 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
343 '61b685fbe55ab05b5ac68402d5720c1a6ac973d1',
344 ], changesets.collect(&:revision)
344 ], changesets.collect(&:revision)
345
345
346 if JRUBY_SKIP
346 if JRUBY_SKIP
347 puts JRUBY_SKIP_STR
347 puts JRUBY_SKIP_STR
348 else
348 else
349 # latin-1 encoding path
349 # latin-1 encoding path
350 changesets = @repository.latest_changesets(
350 changesets = @repository.latest_changesets(
351 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
351 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89')
352 assert_equal [
352 assert_equal [
353 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
353 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
354 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
354 '4fc55c43bf3d3dc2efb66145365ddc17639ce81e',
355 ], changesets.collect(&:revision)
355 ], changesets.collect(&:revision)
356
356
357 changesets = @repository.latest_changesets(
357 changesets = @repository.latest_changesets(
358 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
358 "latin-1-dir/test-#{@char_1}-2.txt", '64f1f3e89', 1)
359 assert_equal [
359 assert_equal [
360 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
360 '64f1f3e89ad1cb57976ff0ad99a107012ba3481d',
361 ], changesets.collect(&:revision)
361 ], changesets.collect(&:revision)
362 end
362 end
363 end
363 end
364
364
365 def test_latest_changesets_latin_1_dir
365 def test_latest_changesets_latin_1_dir
366 if WINDOWS_PASS
366 if WINDOWS_PASS
367 #
367 #
368 elsif JRUBY_SKIP
368 elsif JRUBY_SKIP
369 puts JRUBY_SKIP_STR
369 puts JRUBY_SKIP_STR
370 else
370 else
371 assert_equal 0, @repository.changesets.count
371 assert_equal 0, @repository.changesets.count
372 @repository.fetch_changesets
372 @repository.fetch_changesets
373 @project.reload
373 @project.reload
374 assert_equal NUM_REV, @repository.changesets.count
374 assert_equal NUM_REV, @repository.changesets.count
375 changesets = @repository.latest_changesets(
375 changesets = @repository.latest_changesets(
376 "latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
376 "latin-1-dir/test-#{@char_1}-subdir", '1ca7f5ed')
377 assert_equal [
377 assert_equal [
378 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
378 '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127',
379 ], changesets.collect(&:revision)
379 ], changesets.collect(&:revision)
380 end
380 end
381 end
381 end
382
382
383 def test_find_changeset_by_name
383 def test_find_changeset_by_name
384 assert_equal 0, @repository.changesets.count
384 assert_equal 0, @repository.changesets.count
385 @repository.fetch_changesets
385 @repository.fetch_changesets
386 @project.reload
386 @project.reload
387 assert_equal NUM_REV, @repository.changesets.count
387 assert_equal NUM_REV, @repository.changesets.count
388 ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
388 ['7234cb2750b63f47bff735edc50a1c0a433c2518', '7234cb2750b'].each do |r|
389 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
389 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518',
390 @repository.find_changeset_by_name(r).revision
390 @repository.find_changeset_by_name(r).revision
391 end
391 end
392 end
392 end
393
393
394 def test_find_changeset_by_empty_name
394 def test_find_changeset_by_empty_name
395 assert_equal 0, @repository.changesets.count
395 assert_equal 0, @repository.changesets.count
396 @repository.fetch_changesets
396 @repository.fetch_changesets
397 @project.reload
397 @project.reload
398 assert_equal NUM_REV, @repository.changesets.count
398 assert_equal NUM_REV, @repository.changesets.count
399 ['', ' ', nil].each do |r|
399 ['', ' ', nil].each do |r|
400 assert_nil @repository.find_changeset_by_name(r)
400 assert_nil @repository.find_changeset_by_name(r)
401 end
401 end
402 end
402 end
403
403
404 def test_identifier
404 def test_identifier
405 assert_equal 0, @repository.changesets.count
405 assert_equal 0, @repository.changesets.count
406 @repository.fetch_changesets
406 @repository.fetch_changesets
407 @project.reload
407 @project.reload
408 assert_equal NUM_REV, @repository.changesets.count
408 assert_equal NUM_REV, @repository.changesets.count
409 c = @repository.changesets.find_by_revision(
409 c = @repository.changesets.find_by_revision(
410 '7234cb2750b63f47bff735edc50a1c0a433c2518')
410 '7234cb2750b63f47bff735edc50a1c0a433c2518')
411 assert_equal c.scmid, c.identifier
411 assert_equal c.scmid, c.identifier
412 end
412 end
413
413
414 def test_format_identifier
414 def test_format_identifier
415 assert_equal 0, @repository.changesets.count
415 assert_equal 0, @repository.changesets.count
416 @repository.fetch_changesets
416 @repository.fetch_changesets
417 @project.reload
417 @project.reload
418 assert_equal NUM_REV, @repository.changesets.count
418 assert_equal NUM_REV, @repository.changesets.count
419 c = @repository.changesets.find_by_revision(
419 c = @repository.changesets.find_by_revision(
420 '7234cb2750b63f47bff735edc50a1c0a433c2518')
420 '7234cb2750b63f47bff735edc50a1c0a433c2518')
421 assert_equal '7234cb27', c.format_identifier
421 assert_equal '7234cb27', c.format_identifier
422 end
422 end
423
423
424 def test_activities
424 def test_activities
425 c = Changeset.new(:repository => @repository,
425 c = Changeset.new(:repository => @repository,
426 :committed_on => Time.now,
426 :committed_on => Time.now,
427 :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
427 :revision => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
428 :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
428 :scmid => 'abc7234cb2750b63f47bff735edc50a1c0a433c2',
429 :comments => 'test')
429 :comments => 'test')
430 assert c.event_title.include?('abc7234c:')
430 assert c.event_title.include?('abc7234c:')
431 assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
431 assert_equal 'abc7234cb2750b63f47bff735edc50a1c0a433c2', c.event_url[:rev]
432 end
432 end
433
433
434 def test_log_utf8
434 def test_log_utf8
435 assert_equal 0, @repository.changesets.count
435 assert_equal 0, @repository.changesets.count
436 @repository.fetch_changesets
436 @repository.fetch_changesets
437 @project.reload
437 @project.reload
438 assert_equal NUM_REV, @repository.changesets.count
438 assert_equal NUM_REV, @repository.changesets.count
439 str_felix_hex = FELIX_HEX.dup
439 str_felix_hex = FELIX_HEX.dup
440 if str_felix_hex.respond_to?(:force_encoding)
440 if str_felix_hex.respond_to?(:force_encoding)
441 str_felix_hex.force_encoding('UTF-8')
441 str_felix_hex.force_encoding('UTF-8')
442 end
442 end
443 c = @repository.changesets.find_by_revision(
443 c = @repository.changesets.find_by_revision(
444 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
444 'ed5bb786bbda2dee66a2d50faf51429dbc043a7b')
445 assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
445 assert_equal "#{str_felix_hex} <felix@fachschaften.org>", c.committer
446 end
446 end
447
447
448 def test_previous
448 def test_previous
449 assert_equal 0, @repository.changesets.count
449 assert_equal 0, @repository.changesets.count
450 @repository.fetch_changesets
450 @repository.fetch_changesets
451 @project.reload
451 @project.reload
452 assert_equal NUM_REV, @repository.changesets.count
452 assert_equal NUM_REV, @repository.changesets.count
453 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
453 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
454 changeset = @repository.find_changeset_by_name(r1)
454 changeset = @repository.find_changeset_by_name(r1)
455 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
455 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
456 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
456 assert_equal @repository.find_changeset_by_name(r2), changeset.previous
457 end
457 end
458 end
458 end
459 end
459 end
460
460
461 def test_previous_nil
461 def test_previous_nil
462 assert_equal 0, @repository.changesets.count
462 assert_equal 0, @repository.changesets.count
463 @repository.fetch_changesets
463 @repository.fetch_changesets
464 @project.reload
464 @project.reload
465 assert_equal NUM_REV, @repository.changesets.count
465 assert_equal NUM_REV, @repository.changesets.count
466 %w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
466 %w|7234cb2750b63f47bff735edc50a1c0a433c2518 7234cb2|.each do |r1|
467 changeset = @repository.find_changeset_by_name(r1)
467 changeset = @repository.find_changeset_by_name(r1)
468 assert_nil changeset.previous
468 assert_nil changeset.previous
469 end
469 end
470 end
470 end
471
471
472 def test_next
472 def test_next
473 assert_equal 0, @repository.changesets.count
473 assert_equal 0, @repository.changesets.count
474 @repository.fetch_changesets
474 @repository.fetch_changesets
475 @project.reload
475 @project.reload
476 assert_equal NUM_REV, @repository.changesets.count
476 assert_equal NUM_REV, @repository.changesets.count
477 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
477 %w|64f1f3e89ad1cb57976ff0ad99a107012ba3481d 64f1f3e89ad1|.each do |r2|
478 changeset = @repository.find_changeset_by_name(r2)
478 changeset = @repository.find_changeset_by_name(r2)
479 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
479 %w|1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127 1ca7f5ed|.each do |r1|
480 assert_equal @repository.find_changeset_by_name(r1), changeset.next
480 assert_equal @repository.find_changeset_by_name(r1), changeset.next
481 end
481 end
482 end
482 end
483 end
483 end
484
484
485 def test_next_nil
485 def test_next_nil
486 assert_equal 0, @repository.changesets.count
486 assert_equal 0, @repository.changesets.count
487 @repository.fetch_changesets
487 @repository.fetch_changesets
488 @project.reload
488 @project.reload
489 assert_equal NUM_REV, @repository.changesets.count
489 assert_equal NUM_REV, @repository.changesets.count
490 %w|67e7792ce20ccae2e4bb73eed09bb397819c8834 67e7792ce20cca|.each do |r1|
490 %w|67e7792ce20ccae2e4bb73eed09bb397819c8834 67e7792ce20cca|.each do |r1|
491 changeset = @repository.find_changeset_by_name(r1)
491 changeset = @repository.find_changeset_by_name(r1)
492 assert_nil changeset.next
492 assert_nil changeset.next
493 end
493 end
494 end
494 end
495 else
495 else
496 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
496 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
497 def test_fake; assert true end
497 def test_fake; assert true end
498 end
498 end
499 end
499 end
General Comments 0
You need to be logged in to leave comments. Login now