##// END OF EJS Templates
scm: mercurial: test: lib: update branches test for Branch class (#5501)...
Toshi MARUYAMA -
r7554:2b4549b3eaf7
parent child
Show More
@@ -1,391 +1,408
1 require File.expand_path('../../../../../../test_helper', __FILE__)
1 require File.expand_path('../../../../../../test_helper', __FILE__)
2 begin
2 begin
3 require 'mocha'
3 require 'mocha'
4
4
5 class MercurialAdapterTest < ActiveSupport::TestCase
5 class MercurialAdapterTest < ActiveSupport::TestCase
6 HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR
6 HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR
7 TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
7 TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
8 TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION
8 TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION
9
9
10 REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
10 REPOSITORY_PATH = Rails.root.join('tmp/test/mercurial_repository').to_s
11 CHAR_1_HEX = "\xc3\x9c"
11 CHAR_1_HEX = "\xc3\x9c"
12
12
13 if File.directory?(REPOSITORY_PATH)
13 if File.directory?(REPOSITORY_PATH)
14 def setup
14 def setup
15 adapter_class = Redmine::Scm::Adapters::MercurialAdapter
15 adapter_class = Redmine::Scm::Adapters::MercurialAdapter
16 assert adapter_class
16 assert adapter_class
17 assert adapter_class.client_command
17 assert adapter_class.client_command
18 assert_equal true, adapter_class.client_available
18 assert_equal true, adapter_class.client_available
19 assert_equal true, adapter_class.client_version_above?([0, 9, 5])
19 assert_equal true, adapter_class.client_version_above?([0, 9, 5])
20
20
21 @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(
21 @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(
22 REPOSITORY_PATH,
22 REPOSITORY_PATH,
23 nil,
23 nil,
24 nil,
24 nil,
25 nil,
25 nil,
26 'ISO-8859-1')
26 'ISO-8859-1')
27 @diff_c_support = true
27 @diff_c_support = true
28 @char_1 = CHAR_1_HEX.dup
28 @char_1 = CHAR_1_HEX.dup
29 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
29 @tag_char_1 = "tag-#{CHAR_1_HEX}-00"
30 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
30 @branch_char_0 = "branch-#{CHAR_1_HEX}-00"
31 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
31 @branch_char_1 = "branch-#{CHAR_1_HEX}-01"
32 if @tag_char_1.respond_to?(:force_encoding)
32 if @tag_char_1.respond_to?(:force_encoding)
33 @char_1.force_encoding('UTF-8')
33 @char_1.force_encoding('UTF-8')
34 @tag_char_1.force_encoding('UTF-8')
34 @tag_char_1.force_encoding('UTF-8')
35 @branch_char_0.force_encoding('UTF-8')
35 @branch_char_0.force_encoding('UTF-8')
36 @branch_char_1.force_encoding('UTF-8')
36 @branch_char_1.force_encoding('UTF-8')
37 end
37 end
38 end
38 end
39
39
40 def test_hgversion
40 def test_hgversion
41 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5],
41 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5],
42 "Mercurial Distributed SCM (1.0)\n" => [1,0],
42 "Mercurial Distributed SCM (1.0)\n" => [1,0],
43 "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
43 "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
44 "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
44 "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
45 "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
45 "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
46 "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
46 "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
47 "(1.6)\n(1.7)\n(1.8)" => [1,6],
47 "(1.6)\n(1.7)\n(1.8)" => [1,6],
48 "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
48 "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
49
49
50 to_test.each do |s, v|
50 to_test.each do |s, v|
51 test_hgversion_for(s, v)
51 test_hgversion_for(s, v)
52 end
52 end
53 end
53 end
54
54
55 def test_template_path
55 def test_template_path
56 to_test = {
56 to_test = {
57 [1,2] => "1.0",
57 [1,2] => "1.0",
58 [] => "1.0",
58 [] => "1.0",
59 [1,2,1] => "1.0",
59 [1,2,1] => "1.0",
60 [1,7] => "1.0",
60 [1,7] => "1.0",
61 [1,7,1] => "1.0",
61 [1,7,1] => "1.0",
62 [2,0] => "1.0",
62 [2,0] => "1.0",
63 }
63 }
64 to_test.each do |v, template|
64 to_test.each do |v, template|
65 test_template_path_for(v, template)
65 test_template_path_for(v, template)
66 end
66 end
67 end
67 end
68
68
69 def test_info
69 def test_info
70 [REPOSITORY_PATH, REPOSITORY_PATH + "/",
70 [REPOSITORY_PATH, REPOSITORY_PATH + "/",
71 REPOSITORY_PATH + "//"].each do |repo|
71 REPOSITORY_PATH + "//"].each do |repo|
72 adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo)
72 adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo)
73 repo_path = adp.info.root_url.gsub(/\\/, "/")
73 repo_path = adp.info.root_url.gsub(/\\/, "/")
74 assert_equal REPOSITORY_PATH, repo_path
74 assert_equal REPOSITORY_PATH, repo_path
75 assert_equal '31', adp.info.lastrev.revision
75 assert_equal '31', adp.info.lastrev.revision
76 assert_equal '31eeee7395c8',adp.info.lastrev.scmid
76 assert_equal '31eeee7395c8',adp.info.lastrev.scmid
77 end
77 end
78 end
78 end
79
79
80 def test_revisions
80 def test_revisions
81 revisions = @adapter.revisions(nil, 2, 4)
81 revisions = @adapter.revisions(nil, 2, 4)
82 assert_equal 3, revisions.size
82 assert_equal 3, revisions.size
83 assert_equal '2', revisions[0].revision
83 assert_equal '2', revisions[0].revision
84 assert_equal '400bb8672109', revisions[0].scmid
84 assert_equal '400bb8672109', revisions[0].scmid
85 assert_equal '4', revisions[2].revision
85 assert_equal '4', revisions[2].revision
86 assert_equal 'def6d2f1254a', revisions[2].scmid
86 assert_equal 'def6d2f1254a', revisions[2].scmid
87
87
88 revisions = @adapter.revisions(nil, 2, 4, {:limit => 2})
88 revisions = @adapter.revisions(nil, 2, 4, {:limit => 2})
89 assert_equal 2, revisions.size
89 assert_equal 2, revisions.size
90 assert_equal '2', revisions[0].revision
90 assert_equal '2', revisions[0].revision
91 assert_equal '400bb8672109', revisions[0].scmid
91 assert_equal '400bb8672109', revisions[0].scmid
92 end
92 end
93
93
94 def test_parents
94 def test_parents
95 revs1 = @adapter.revisions(nil, 0, 0)
95 revs1 = @adapter.revisions(nil, 0, 0)
96 assert_equal 1, revs1.size
96 assert_equal 1, revs1.size
97 assert_equal [], revs1[0].parents
97 assert_equal [], revs1[0].parents
98 revs2 = @adapter.revisions(nil, 1, 1)
98 revs2 = @adapter.revisions(nil, 1, 1)
99 assert_equal 1, revs2.size
99 assert_equal 1, revs2.size
100 assert_equal 1, revs2[0].parents.size
100 assert_equal 1, revs2[0].parents.size
101 assert_equal "0885933ad4f6", revs2[0].parents[0]
101 assert_equal "0885933ad4f6", revs2[0].parents[0]
102 revs3 = @adapter.revisions(nil, 30, 30)
102 revs3 = @adapter.revisions(nil, 30, 30)
103 assert_equal 1, revs3.size
103 assert_equal 1, revs3.size
104 assert_equal 2, revs3[0].parents.size
104 assert_equal 2, revs3[0].parents.size
105 assert_equal "a94b0528f24f", revs3[0].parents[0]
105 assert_equal "a94b0528f24f", revs3[0].parents[0]
106 assert_equal "3a330eb32958", revs3[0].parents[1]
106 assert_equal "3a330eb32958", revs3[0].parents[1]
107 end
107 end
108
108
109 def test_diff
109 def test_diff
110 if @adapter.class.client_version_above?([1, 2])
110 if @adapter.class.client_version_above?([1, 2])
111 assert_nil @adapter.diff(nil, '100000')
111 assert_nil @adapter.diff(nil, '100000')
112 end
112 end
113 assert_nil @adapter.diff(nil, '100000', '200000')
113 assert_nil @adapter.diff(nil, '100000', '200000')
114 [2, '400bb8672109', '400', 400].each do |r1|
114 [2, '400bb8672109', '400', 400].each do |r1|
115 diff1 = @adapter.diff(nil, r1)
115 diff1 = @adapter.diff(nil, r1)
116 if @diff_c_support
116 if @diff_c_support
117 assert_equal 28, diff1.size
117 assert_equal 28, diff1.size
118 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
118 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
119 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
119 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
120 else
120 else
121 assert_equal 0, diff1.size
121 assert_equal 0, diff1.size
122 end
122 end
123 [4, 'def6d2f1254a'].each do |r2|
123 [4, 'def6d2f1254a'].each do |r2|
124 diff2 = @adapter.diff(nil,r1,r2)
124 diff2 = @adapter.diff(nil,r1,r2)
125 assert_equal 49, diff2.size
125 assert_equal 49, diff2.size
126 buf = diff2[41].gsub(/\r\n|\r|\n/, "")
126 buf = diff2[41].gsub(/\r\n|\r|\n/, "")
127 assert_equal "+class WelcomeController < ApplicationController", buf
127 assert_equal "+class WelcomeController < ApplicationController", buf
128 diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2)
128 diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2)
129 assert_equal 20, diff3.size
129 assert_equal 20, diff3.size
130 buf = diff3[12].gsub(/\r\n|\r|\n/, "")
130 buf = diff3[12].gsub(/\r\n|\r|\n/, "")
131 assert_equal "+ @watched.remove_watcher(user)", buf
131 assert_equal "+ @watched.remove_watcher(user)", buf
132 end
132 end
133 end
133 end
134 end
134 end
135
135
136 def test_diff_made_by_revision
136 def test_diff_made_by_revision
137 if @diff_c_support
137 if @diff_c_support
138 [24, '24', '4cddb4e45f52'].each do |r1|
138 [24, '24', '4cddb4e45f52'].each do |r1|
139 diff1 = @adapter.diff(nil, r1)
139 diff1 = @adapter.diff(nil, r1)
140 assert_equal 5, diff1.size
140 assert_equal 5, diff1.size
141 buf = diff1[4].gsub(/\r\n|\r|\n/, "")
141 buf = diff1[4].gsub(/\r\n|\r|\n/, "")
142 assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf
142 assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf
143 end
143 end
144 end
144 end
145 end
145 end
146
146
147 def test_cat
147 def test_cat
148 [2, '400bb8672109', '400', 400].each do |r|
148 [2, '400bb8672109', '400', 400].each do |r|
149 buf = @adapter.cat('sources/welcome_controller.rb', r)
149 buf = @adapter.cat('sources/welcome_controller.rb', r)
150 assert buf
150 assert buf
151 lines = buf.split("\r\n")
151 lines = buf.split("\r\n")
152 assert_equal 25, lines.length
152 assert_equal 25, lines.length
153 assert_equal 'class WelcomeController < ApplicationController', lines[17]
153 assert_equal 'class WelcomeController < ApplicationController', lines[17]
154 end
154 end
155 assert_nil @adapter.cat('sources/welcome_controller.rb')
155 assert_nil @adapter.cat('sources/welcome_controller.rb')
156 end
156 end
157
157
158 def test_annotate
158 def test_annotate
159 assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines
159 assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines
160 [2, '400bb8672109', '400', 400].each do |r|
160 [2, '400bb8672109', '400', 400].each do |r|
161 ann = @adapter.annotate('sources/welcome_controller.rb', r)
161 ann = @adapter.annotate('sources/welcome_controller.rb', r)
162 assert ann
162 assert ann
163 assert_equal '1', ann.revisions[17].revision
163 assert_equal '1', ann.revisions[17].revision
164 assert_equal '9d5b5b004199', ann.revisions[17].identifier
164 assert_equal '9d5b5b004199', ann.revisions[17].identifier
165 assert_equal 'jsmith', ann.revisions[0].author
165 assert_equal 'jsmith', ann.revisions[0].author
166 assert_equal 25, ann.lines.length
166 assert_equal 25, ann.lines.length
167 assert_equal 'class WelcomeController < ApplicationController', ann.lines[17]
167 assert_equal 'class WelcomeController < ApplicationController', ann.lines[17]
168 end
168 end
169 end
169 end
170
170
171 def test_entries
171 def test_entries
172 assert_nil @adapter.entries(nil, '100000')
172 assert_nil @adapter.entries(nil, '100000')
173
173
174 assert_equal 1, @adapter.entries("sources", 3).size
174 assert_equal 1, @adapter.entries("sources", 3).size
175 assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
175 assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
176
176
177 [2, '400bb8672109', '400', 400].each do |r|
177 [2, '400bb8672109', '400', 400].each do |r|
178 entries1 = @adapter.entries(nil, r)
178 entries1 = @adapter.entries(nil, r)
179 assert entries1
179 assert entries1
180 assert_equal 3, entries1.size
180 assert_equal 3, entries1.size
181 assert_equal 'sources', entries1[1].name
181 assert_equal 'sources', entries1[1].name
182 assert_equal 'sources', entries1[1].path
182 assert_equal 'sources', entries1[1].path
183 assert_equal 'dir', entries1[1].kind
183 assert_equal 'dir', entries1[1].kind
184 readme = entries1[2]
184 readme = entries1[2]
185 assert_equal 'README', readme.name
185 assert_equal 'README', readme.name
186 assert_equal 'README', readme.path
186 assert_equal 'README', readme.path
187 assert_equal 'file', readme.kind
187 assert_equal 'file', readme.kind
188 assert_equal 27, readme.size
188 assert_equal 27, readme.size
189 assert_equal '1', readme.lastrev.revision
189 assert_equal '1', readme.lastrev.revision
190 assert_equal '9d5b5b004199', readme.lastrev.identifier
190 assert_equal '9d5b5b004199', readme.lastrev.identifier
191 # 2007-12-14 10:24:01 +0100
191 # 2007-12-14 10:24:01 +0100
192 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
192 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
193
193
194 entries2 = @adapter.entries('sources', r)
194 entries2 = @adapter.entries('sources', r)
195 assert entries2
195 assert entries2
196 assert_equal 2, entries2.size
196 assert_equal 2, entries2.size
197 assert_equal 'watchers_controller.rb', entries2[0].name
197 assert_equal 'watchers_controller.rb', entries2[0].name
198 assert_equal 'sources/watchers_controller.rb', entries2[0].path
198 assert_equal 'sources/watchers_controller.rb', entries2[0].path
199 assert_equal 'file', entries2[0].kind
199 assert_equal 'file', entries2[0].kind
200 assert_equal 'welcome_controller.rb', entries2[1].name
200 assert_equal 'welcome_controller.rb', entries2[1].name
201 assert_equal 'sources/welcome_controller.rb', entries2[1].path
201 assert_equal 'sources/welcome_controller.rb', entries2[1].path
202 assert_equal 'file', entries2[1].kind
202 assert_equal 'file', entries2[1].kind
203 end
203 end
204 end
204 end
205
205
206 def test_entries_tag
206 def test_entries_tag
207 entries1 = @adapter.entries(nil, 'tag_test.00')
207 entries1 = @adapter.entries(nil, 'tag_test.00')
208 assert entries1
208 assert entries1
209 assert_equal 3, entries1.size
209 assert_equal 3, entries1.size
210 assert_equal 'sources', entries1[1].name
210 assert_equal 'sources', entries1[1].name
211 assert_equal 'sources', entries1[1].path
211 assert_equal 'sources', entries1[1].path
212 assert_equal 'dir', entries1[1].kind
212 assert_equal 'dir', entries1[1].kind
213 readme = entries1[2]
213 readme = entries1[2]
214 assert_equal 'README', readme.name
214 assert_equal 'README', readme.name
215 assert_equal 'README', readme.path
215 assert_equal 'README', readme.path
216 assert_equal 'file', readme.kind
216 assert_equal 'file', readme.kind
217 assert_equal 21, readme.size
217 assert_equal 21, readme.size
218 assert_equal '0', readme.lastrev.revision
218 assert_equal '0', readme.lastrev.revision
219 assert_equal '0885933ad4f6', readme.lastrev.identifier
219 assert_equal '0885933ad4f6', readme.lastrev.identifier
220 # 2007-12-14 10:22:52 +0100
220 # 2007-12-14 10:22:52 +0100
221 assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time
221 assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time
222 end
222 end
223
223
224 def test_entries_branch
224 def test_entries_branch
225 entries1 = @adapter.entries(nil, 'test-branch-00')
225 entries1 = @adapter.entries(nil, 'test-branch-00')
226 assert entries1
226 assert entries1
227 assert_equal 5, entries1.size
227 assert_equal 5, entries1.size
228 assert_equal 'sql_escape', entries1[2].name
228 assert_equal 'sql_escape', entries1[2].name
229 assert_equal 'sql_escape', entries1[2].path
229 assert_equal 'sql_escape', entries1[2].path
230 assert_equal 'dir', entries1[2].kind
230 assert_equal 'dir', entries1[2].kind
231 readme = entries1[4]
231 readme = entries1[4]
232 assert_equal 'README', readme.name
232 assert_equal 'README', readme.name
233 assert_equal 'README', readme.path
233 assert_equal 'README', readme.path
234 assert_equal 'file', readme.kind
234 assert_equal 'file', readme.kind
235 assert_equal 365, readme.size
235 assert_equal 365, readme.size
236 assert_equal '8', readme.lastrev.revision
236 assert_equal '8', readme.lastrev.revision
237 assert_equal 'c51f5bb613cd', readme.lastrev.identifier
237 assert_equal 'c51f5bb613cd', readme.lastrev.identifier
238 # 2001-02-01 00:00:00 -0900
238 # 2001-02-01 00:00:00 -0900
239 assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time
239 assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time
240 end
240 end
241
241
242 def test_locate_on_outdated_repository
242 def test_locate_on_outdated_repository
243 assert_equal 1, @adapter.entries("images", 0).size
243 assert_equal 1, @adapter.entries("images", 0).size
244 assert_equal 2, @adapter.entries("images").size
244 assert_equal 2, @adapter.entries("images").size
245 assert_equal 2, @adapter.entries("images", 2).size
245 assert_equal 2, @adapter.entries("images", 2).size
246 end
246 end
247
247
248 def test_access_by_nodeid
248 def test_access_by_nodeid
249 path = 'sources/welcome_controller.rb'
249 path = 'sources/welcome_controller.rb'
250 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
250 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
251 end
251 end
252
252
253 def test_access_by_fuzzy_nodeid
253 def test_access_by_fuzzy_nodeid
254 path = 'sources/welcome_controller.rb'
254 path = 'sources/welcome_controller.rb'
255 # falls back to nodeid
255 # falls back to nodeid
256 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
256 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
257 end
257 end
258
258
259 def test_tags
259 def test_tags
260 assert_equal [@tag_char_1, 'tag_test.00', 'tag-init-revision'], @adapter.tags
260 assert_equal [@tag_char_1, 'tag_test.00', 'tag-init-revision'], @adapter.tags
261 end
261 end
262
262
263 def test_tagmap
263 def test_tagmap
264 tm = {
264 tm = {
265 @tag_char_1 => 'adf805632193',
265 @tag_char_1 => 'adf805632193',
266 'tag_test.00' => '6987191f453a',
266 'tag_test.00' => '6987191f453a',
267 'tag-init-revision' => '0885933ad4f6',
267 'tag-init-revision' => '0885933ad4f6',
268 }
268 }
269 assert_equal tm, @adapter.tagmap
269 assert_equal tm, @adapter.tagmap
270 end
270 end
271
271
272 def test_branches
272 def test_branches
273 assert_equal [
273 brs = []
274 'default',
274 @adapter.branches.each do |b|
275 'test-branch-01',
275 brs << b
276 @branch_char_1,
276 end
277 'branch (1)[2]&,%.-3_4',
277 assert_equal 7, brs.length
278 @branch_char_0,
278 assert_equal 'default', brs[0].to_s
279 'test_branch.latin-1',
279 assert_equal '31', brs[0].revision
280 'test-branch-00',
280 assert_equal '31eeee7395c8', brs[0].scmid
281 ], @adapter.branches
281 assert_equal 'test-branch-01', brs[1].to_s
282 assert_equal '30', brs[1].revision
283 assert_equal 'ad4dc4f80284', brs[1].scmid
284 assert_equal @branch_char_1, brs[2].to_s
285 assert_equal '27', brs[2].revision
286 assert_equal '7bbf4c738e71', brs[2].scmid
287 assert_equal 'branch (1)[2]&,%.-3_4', brs[3].to_s
288 assert_equal '25', brs[3].revision
289 assert_equal 'afc61e85bde7', brs[3].scmid
290 assert_equal @branch_char_0, brs[4].to_s
291 assert_equal '23', brs[4].revision
292 assert_equal 'c8d3e4887474', brs[4].scmid
293 assert_equal 'test_branch.latin-1', brs[5].to_s
294 assert_equal '22', brs[5].revision
295 assert_equal 'c2ffe7da686a', brs[5].scmid
296 assert_equal 'test-branch-00', brs[6].to_s
297 assert_equal '13', brs[6].revision
298 assert_equal '3a330eb32958', brs[6].scmid
282 end
299 end
283
300
284 def test_branchmap
301 def test_branchmap
285 bm = {
302 bm = {
286 'default' => '31eeee7395c8',
303 'default' => '31eeee7395c8',
287 'test_branch.latin-1' => 'c2ffe7da686a',
304 'test_branch.latin-1' => 'c2ffe7da686a',
288 'branch (1)[2]&,%.-3_4' => 'afc61e85bde7',
305 'branch (1)[2]&,%.-3_4' => 'afc61e85bde7',
289 'test-branch-00' => '3a330eb32958',
306 'test-branch-00' => '3a330eb32958',
290 "test-branch-01" => 'ad4dc4f80284',
307 "test-branch-01" => 'ad4dc4f80284',
291 @branch_char_0 => 'c8d3e4887474',
308 @branch_char_0 => 'c8d3e4887474',
292 @branch_char_1 => '7bbf4c738e71',
309 @branch_char_1 => '7bbf4c738e71',
293 }
310 }
294 assert_equal bm, @adapter.branchmap
311 assert_equal bm, @adapter.branchmap
295 end
312 end
296
313
297 def test_path_space
314 def test_path_space
298 p = 'README (1)[2]&,%.-3_4'
315 p = 'README (1)[2]&,%.-3_4'
299 [15, '933ca60293d7'].each do |r1|
316 [15, '933ca60293d7'].each do |r1|
300 assert @adapter.diff(p, r1)
317 assert @adapter.diff(p, r1)
301 assert @adapter.cat(p, r1)
318 assert @adapter.cat(p, r1)
302 assert_equal 1, @adapter.annotate(p, r1).lines.length
319 assert_equal 1, @adapter.annotate(p, r1).lines.length
303 [25, 'afc61e85bde7'].each do |r2|
320 [25, 'afc61e85bde7'].each do |r2|
304 assert @adapter.diff(p, r1, r2)
321 assert @adapter.diff(p, r1, r2)
305 end
322 end
306 end
323 end
307 end
324 end
308
325
309 def test_tag_non_ascii
326 def test_tag_non_ascii
310 p = "latin-1-dir/test-#{@char_1}-1.txt"
327 p = "latin-1-dir/test-#{@char_1}-1.txt"
311 assert @adapter.cat(p, @tag_char_1)
328 assert @adapter.cat(p, @tag_char_1)
312 assert_equal 1, @adapter.annotate(p, @tag_char_1).lines.length
329 assert_equal 1, @adapter.annotate(p, @tag_char_1).lines.length
313 end
330 end
314
331
315 def test_branch_non_ascii
332 def test_branch_non_ascii
316 p = "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-1.txt"
333 p = "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-1.txt"
317 assert @adapter.cat(p, @branch_char_1)
334 assert @adapter.cat(p, @branch_char_1)
318 assert_equal 1, @adapter.annotate(p, @branch_char_1).lines.length
335 assert_equal 1, @adapter.annotate(p, @branch_char_1).lines.length
319 end
336 end
320
337
321 def test_nodes_in_branch
338 def test_nodes_in_branch
322 [
339 [
323 'default',
340 'default',
324 @branch_char_1,
341 @branch_char_1,
325 'branch (1)[2]&,%.-3_4',
342 'branch (1)[2]&,%.-3_4',
326 @branch_char_0,
343 @branch_char_0,
327 'test_branch.latin-1',
344 'test_branch.latin-1',
328 'test-branch-00',
345 'test-branch-00',
329 ].each do |bra|
346 ].each do |bra|
330 nib0 = @adapter.nodes_in_branch(bra)
347 nib0 = @adapter.nodes_in_branch(bra)
331 assert nib0
348 assert nib0
332 nib1 = @adapter.nodes_in_branch(bra, :limit => 1)
349 nib1 = @adapter.nodes_in_branch(bra, :limit => 1)
333 assert_equal 1, nib1.size
350 assert_equal 1, nib1.size
334 case bra
351 case bra
335 when 'branch (1)[2]&,%.-3_4'
352 when 'branch (1)[2]&,%.-3_4'
336 if @adapter.class.client_version_above?([1, 6])
353 if @adapter.class.client_version_above?([1, 6])
337 assert_equal 3, nib0.size
354 assert_equal 3, nib0.size
338 assert_equal nib0[0], 'afc61e85bde7'
355 assert_equal nib0[0], 'afc61e85bde7'
339 nib2 = @adapter.nodes_in_branch(bra, :limit => 2)
356 nib2 = @adapter.nodes_in_branch(bra, :limit => 2)
340 assert_equal 2, nib2.size
357 assert_equal 2, nib2.size
341 assert_equal nib2[1], '933ca60293d7'
358 assert_equal nib2[1], '933ca60293d7'
342 end
359 end
343 when @branch_char_1
360 when @branch_char_1
344 if @adapter.class.client_version_above?([1, 6])
361 if @adapter.class.client_version_above?([1, 6])
345 assert_equal 2, nib0.size
362 assert_equal 2, nib0.size
346 assert_equal nib0[1], '08ff3227303e'
363 assert_equal nib0[1], '08ff3227303e'
347 nib2 = @adapter.nodes_in_branch(bra, :limit => 1)
364 nib2 = @adapter.nodes_in_branch(bra, :limit => 1)
348 assert_equal 1, nib2.size
365 assert_equal 1, nib2.size
349 assert_equal nib2[0], '7bbf4c738e71'
366 assert_equal nib2[0], '7bbf4c738e71'
350 end
367 end
351 end
368 end
352 end
369 end
353 end
370 end
354
371
355 def test_path_encoding_default_utf8
372 def test_path_encoding_default_utf8
356 adpt1 = Redmine::Scm::Adapters::MercurialAdapter.new(
373 adpt1 = Redmine::Scm::Adapters::MercurialAdapter.new(
357 REPOSITORY_PATH
374 REPOSITORY_PATH
358 )
375 )
359 assert_equal "UTF-8", adpt1.path_encoding
376 assert_equal "UTF-8", adpt1.path_encoding
360 adpt2 = Redmine::Scm::Adapters::MercurialAdapter.new(
377 adpt2 = Redmine::Scm::Adapters::MercurialAdapter.new(
361 REPOSITORY_PATH,
378 REPOSITORY_PATH,
362 nil,
379 nil,
363 nil,
380 nil,
364 nil,
381 nil,
365 ""
382 ""
366 )
383 )
367 assert_equal "UTF-8", adpt2.path_encoding
384 assert_equal "UTF-8", adpt2.path_encoding
368 end
385 end
369
386
370 private
387 private
371
388
372 def test_hgversion_for(hgversion, version)
389 def test_hgversion_for(hgversion, version)
373 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
390 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
374 assert_equal version, @adapter.class.hgversion
391 assert_equal version, @adapter.class.hgversion
375 end
392 end
376
393
377 def test_template_path_for(version, template)
394 def test_template_path_for(version, template)
378 assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
395 assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
379 @adapter.class.template_path_for(version)
396 @adapter.class.template_path_for(version)
380 assert File.exist?(@adapter.class.template_path_for(version))
397 assert File.exist?(@adapter.class.template_path_for(version))
381 end
398 end
382 else
399 else
383 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
400 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
384 def test_fake; assert true end
401 def test_fake; assert true end
385 end
402 end
386 end
403 end
387 rescue LoadError
404 rescue LoadError
388 class MercurialMochaFake < ActiveSupport::TestCase
405 class MercurialMochaFake < ActiveSupport::TestCase
389 def test_fake; assert(false, "Requires mocha to run those tests") end
406 def test_fake; assert(false, "Requires mocha to run those tests") end
390 end
407 end
391 end
408 end
General Comments 0
You need to be logged in to leave comments. Login now