##// END OF EJS Templates
scm: mercurial: entries unit lib test for named branch (#7246)....
Toshi MARUYAMA -
r4747:d393306a0cf6
parent child
Show More
@@ -1,226 +1,244
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
6
7 HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR
7 HELPERS_DIR = Redmine::Scm::Adapters::MercurialAdapter::HELPERS_DIR
8 TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
8 TEMPLATE_NAME = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_NAME
9 TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION
9 TEMPLATE_EXTENSION = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATE_EXTENSION
10
10
11 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
11 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/mercurial_repository'
12
12
13 if File.directory?(REPOSITORY_PATH)
13 if File.directory?(REPOSITORY_PATH)
14 def setup
14 def setup
15 @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH)
15 @adapter = Redmine::Scm::Adapters::MercurialAdapter.new(REPOSITORY_PATH)
16 @diff_c_support = true
16 @diff_c_support = true
17 end
17 end
18
18
19 def test_hgversion
19 def test_hgversion
20 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5],
20 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5],
21 "Mercurial Distributed SCM (1.0)\n" => [1,0],
21 "Mercurial Distributed SCM (1.0)\n" => [1,0],
22 "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
22 "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
23 "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
23 "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
24 "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
24 "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
25 "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
25 "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
26 "(1.6)\n(1.7)\n(1.8)" => [1,6],
26 "(1.6)\n(1.7)\n(1.8)" => [1,6],
27 "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
27 "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
28
28
29 to_test.each do |s, v|
29 to_test.each do |s, v|
30 test_hgversion_for(s, v)
30 test_hgversion_for(s, v)
31 end
31 end
32 end
32 end
33
33
34 def test_template_path
34 def test_template_path
35 to_test = { [0,9,5] => "0.9.5",
35 to_test = { [0,9,5] => "0.9.5",
36 [1,0] => "1.0",
36 [1,0] => "1.0",
37 [] => "1.0",
37 [] => "1.0",
38 [1,0,1] => "1.0",
38 [1,0,1] => "1.0",
39 [1,7] => "1.0",
39 [1,7] => "1.0",
40 [1,7,1] => "1.0" }
40 [1,7,1] => "1.0" }
41 to_test.each do |v, template|
41 to_test.each do |v, template|
42 test_template_path_for(v, template)
42 test_template_path_for(v, template)
43 end
43 end
44 end
44 end
45
45
46 def test_info
46 def test_info
47 [REPOSITORY_PATH, REPOSITORY_PATH + "/",
47 [REPOSITORY_PATH, REPOSITORY_PATH + "/",
48 REPOSITORY_PATH + "//"].each do |repo|
48 REPOSITORY_PATH + "//"].each do |repo|
49 adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo)
49 adp = Redmine::Scm::Adapters::MercurialAdapter.new(repo)
50 repo_path = adp.info.root_url.gsub(/\\/, "/")
50 repo_path = adp.info.root_url.gsub(/\\/, "/")
51 assert_equal REPOSITORY_PATH, repo_path
51 assert_equal REPOSITORY_PATH, repo_path
52 assert_equal '16', adp.info.lastrev.revision
52 assert_equal '16', adp.info.lastrev.revision
53 assert_equal '4cddb4e45f52',adp.info.lastrev.scmid
53 assert_equal '4cddb4e45f52',adp.info.lastrev.scmid
54 end
54 end
55 end
55 end
56
56
57 def test_revisions
57 def test_revisions
58 revisions = @adapter.revisions(nil, 2, 4)
58 revisions = @adapter.revisions(nil, 2, 4)
59 assert_equal 3, revisions.size
59 assert_equal 3, revisions.size
60 assert_equal '2', revisions[0].revision
60 assert_equal '2', revisions[0].revision
61 assert_equal '400bb8672109', revisions[0].scmid
61 assert_equal '400bb8672109', revisions[0].scmid
62 assert_equal '4', revisions[2].revision
62 assert_equal '4', revisions[2].revision
63 assert_equal 'def6d2f1254a', revisions[2].scmid
63 assert_equal 'def6d2f1254a', revisions[2].scmid
64
64
65 revisions = @adapter.revisions(nil, 2, 4, {:limit => 2})
65 revisions = @adapter.revisions(nil, 2, 4, {:limit => 2})
66 assert_equal 2, revisions.size
66 assert_equal 2, revisions.size
67 assert_equal '2', revisions[0].revision
67 assert_equal '2', revisions[0].revision
68 assert_equal '400bb8672109', revisions[0].scmid
68 assert_equal '400bb8672109', revisions[0].scmid
69 end
69 end
70
70
71 def test_diff
71 def test_diff
72 if @adapter.class.client_version_above?([1, 2])
72 if @adapter.class.client_version_above?([1, 2])
73 assert_nil @adapter.diff(nil, '100000')
73 assert_nil @adapter.diff(nil, '100000')
74 end
74 end
75 assert_nil @adapter.diff(nil, '100000', '200000')
75 assert_nil @adapter.diff(nil, '100000', '200000')
76 [2, '400bb8672109', '400', 400].each do |r1|
76 [2, '400bb8672109', '400', 400].each do |r1|
77 diff1 = @adapter.diff(nil, r1)
77 diff1 = @adapter.diff(nil, r1)
78 if @diff_c_support
78 if @diff_c_support
79 assert_equal 28, diff1.size
79 assert_equal 28, diff1.size
80 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
80 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
81 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
81 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
82 else
82 else
83 assert_equal 0, diff1.size
83 assert_equal 0, diff1.size
84 end
84 end
85 [4, 'def6d2f1254a'].each do |r2|
85 [4, 'def6d2f1254a'].each do |r2|
86 diff2 = @adapter.diff(nil,r1,r2)
86 diff2 = @adapter.diff(nil,r1,r2)
87 assert_equal 49, diff2.size
87 assert_equal 49, diff2.size
88 buf = diff2[41].gsub(/\r\n|\r|\n/, "")
88 buf = diff2[41].gsub(/\r\n|\r|\n/, "")
89 assert_equal "+class WelcomeController < ApplicationController", buf
89 assert_equal "+class WelcomeController < ApplicationController", buf
90 diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2)
90 diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2)
91 assert_equal 20, diff3.size
91 assert_equal 20, diff3.size
92 buf = diff3[12].gsub(/\r\n|\r|\n/, "")
92 buf = diff3[12].gsub(/\r\n|\r|\n/, "")
93 assert_equal "+ @watched.remove_watcher(user)", buf
93 assert_equal "+ @watched.remove_watcher(user)", buf
94 end
94 end
95 end
95 end
96 end
96 end
97
97
98 def test_diff_made_by_revision
98 def test_diff_made_by_revision
99 if @diff_c_support
99 if @diff_c_support
100 [16, '16', '4cddb4e45f52'].each do |r1|
100 [16, '16', '4cddb4e45f52'].each do |r1|
101 diff1 = @adapter.diff(nil, r1)
101 diff1 = @adapter.diff(nil, r1)
102 assert_equal 5, diff1.size
102 assert_equal 5, diff1.size
103 buf = diff1[4].gsub(/\r\n|\r|\n/, "")
103 buf = diff1[4].gsub(/\r\n|\r|\n/, "")
104 assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf
104 assert_equal '+0885933ad4f68d77c2649cd11f8311276e7ef7ce tag-init-revision', buf
105 end
105 end
106 end
106 end
107 end
107 end
108
108
109 def test_cat
109 def test_cat
110 [2, '400bb8672109', '400', 400].each do |r|
110 [2, '400bb8672109', '400', 400].each do |r|
111 buf = @adapter.cat('sources/welcome_controller.rb', r)
111 buf = @adapter.cat('sources/welcome_controller.rb', r)
112 assert buf
112 assert buf
113 lines = buf.split("\r\n")
113 lines = buf.split("\r\n")
114 assert_equal 25, lines.length
114 assert_equal 25, lines.length
115 assert_equal 'class WelcomeController < ApplicationController', lines[17]
115 assert_equal 'class WelcomeController < ApplicationController', lines[17]
116 end
116 end
117 assert_nil @adapter.cat('sources/welcome_controller.rb')
117 assert_nil @adapter.cat('sources/welcome_controller.rb')
118 end
118 end
119
119
120 def test_annotate
120 def test_annotate
121 assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines
121 assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines
122 [2, '400bb8672109', '400', 400].each do |r|
122 [2, '400bb8672109', '400', 400].each do |r|
123 ann = @adapter.annotate('sources/welcome_controller.rb', r)
123 ann = @adapter.annotate('sources/welcome_controller.rb', r)
124 assert ann
124 assert ann
125 assert_equal '1', ann.revisions[17].revision
125 assert_equal '1', ann.revisions[17].revision
126 assert_equal '9d5b5b004199', ann.revisions[17].identifier
126 assert_equal '9d5b5b004199', ann.revisions[17].identifier
127 assert_equal 'jsmith', ann.revisions[0].author
127 assert_equal 'jsmith', ann.revisions[0].author
128 assert_equal 25, ann.lines.length
128 assert_equal 25, ann.lines.length
129 assert_equal 'class WelcomeController < ApplicationController', ann.lines[17]
129 assert_equal 'class WelcomeController < ApplicationController', ann.lines[17]
130 end
130 end
131 end
131 end
132
132
133 def test_entries
133 def test_entries
134 assert_nil @adapter.entries(nil, '100000')
134 assert_nil @adapter.entries(nil, '100000')
135
135
136 assert_equal 1, @adapter.entries("sources", 3).size
136 assert_equal 1, @adapter.entries("sources", 3).size
137 assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
137 assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
138
138
139 [2, '400bb8672109', '400', 400].each do |r|
139 [2, '400bb8672109', '400', 400].each do |r|
140 entries1 = @adapter.entries(nil, r)
140 entries1 = @adapter.entries(nil, r)
141 assert entries1
141 assert entries1
142 assert_equal 3, entries1.size
142 assert_equal 3, entries1.size
143 assert_equal 'sources', entries1[1].name
143 assert_equal 'sources', entries1[1].name
144 assert_equal 'sources', entries1[1].path
144 assert_equal 'sources', entries1[1].path
145 assert_equal 'dir', entries1[1].kind
145 assert_equal 'dir', entries1[1].kind
146 readme = entries1[2]
146 readme = entries1[2]
147 assert_equal 'README', readme.name
147 assert_equal 'README', readme.name
148 assert_equal 'README', readme.path
148 assert_equal 'README', readme.path
149 assert_equal 'file', readme.kind
149 assert_equal 'file', readme.kind
150 assert_equal 27, readme.size
150 assert_equal 27, readme.size
151 assert_equal '1', readme.lastrev.revision
151 assert_equal '1', readme.lastrev.revision
152 assert_equal '9d5b5b004199', readme.lastrev.identifier
152 assert_equal '9d5b5b004199', readme.lastrev.identifier
153 # 2007-12-14 10:24:01 +0100
153 # 2007-12-14 10:24:01 +0100
154 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
154 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
155
155
156 entries2 = @adapter.entries('sources', r)
156 entries2 = @adapter.entries('sources', r)
157 assert entries2
157 assert entries2
158 assert_equal 2, entries2.size
158 assert_equal 2, entries2.size
159 assert_equal 'watchers_controller.rb', entries2[0].name
159 assert_equal 'watchers_controller.rb', entries2[0].name
160 assert_equal 'sources/watchers_controller.rb', entries2[0].path
160 assert_equal 'sources/watchers_controller.rb', entries2[0].path
161 assert_equal 'file', entries2[0].kind
161 assert_equal 'file', entries2[0].kind
162 assert_equal 'welcome_controller.rb', entries2[1].name
162 assert_equal 'welcome_controller.rb', entries2[1].name
163 assert_equal 'sources/welcome_controller.rb', entries2[1].path
163 assert_equal 'sources/welcome_controller.rb', entries2[1].path
164 assert_equal 'file', entries2[1].kind
164 assert_equal 'file', entries2[1].kind
165 end
165 end
166 end
166 end
167
167
168 def test_entries_tag
168 def test_entries_tag
169 entries1 = @adapter.entries(nil, 'tag_test.00')
169 entries1 = @adapter.entries(nil, 'tag_test.00')
170 assert entries1
170 assert entries1
171 assert_equal 3, entries1.size
171 assert_equal 3, entries1.size
172 assert_equal 'sources', entries1[1].name
172 assert_equal 'sources', entries1[1].name
173 assert_equal 'sources', entries1[1].path
173 assert_equal 'sources', entries1[1].path
174 assert_equal 'dir', entries1[1].kind
174 assert_equal 'dir', entries1[1].kind
175 readme = entries1[2]
175 readme = entries1[2]
176 assert_equal 'README', readme.name
176 assert_equal 'README', readme.name
177 assert_equal 'README', readme.path
177 assert_equal 'README', readme.path
178 assert_equal 'file', readme.kind
178 assert_equal 'file', readme.kind
179 assert_equal 21, readme.size
179 assert_equal 21, readme.size
180 assert_equal '0', readme.lastrev.revision
180 assert_equal '0', readme.lastrev.revision
181 assert_equal '0885933ad4f6', readme.lastrev.identifier
181 assert_equal '0885933ad4f6', readme.lastrev.identifier
182 # 2007-12-14 10:22:52 +0100
182 # 2007-12-14 10:22:52 +0100
183 assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time
183 assert_equal Time.gm(2007, 12, 14, 9, 22, 52), readme.lastrev.time
184 end
184 end
185
185
186 def test_entries_branch
187 entries1 = @adapter.entries(nil, 'test-branch-00')
188 assert entries1
189 assert_equal 5, entries1.size
190 assert_equal 'sql_escape', entries1[2].name
191 assert_equal 'sql_escape', entries1[2].path
192 assert_equal 'dir', entries1[2].kind
193 readme = entries1[4]
194 assert_equal 'README', readme.name
195 assert_equal 'README', readme.path
196 assert_equal 'file', readme.kind
197 assert_equal 365, readme.size
198 assert_equal '8', readme.lastrev.revision
199 assert_equal 'c51f5bb613cd', readme.lastrev.identifier
200 # 2001-02-01 00:00:00 -0900
201 assert_equal Time.gm(2001, 2, 1, 9, 0, 0), readme.lastrev.time
202 end
203
186 def test_locate_on_outdated_repository
204 def test_locate_on_outdated_repository
187 assert_equal 1, @adapter.entries("images", 0).size
205 assert_equal 1, @adapter.entries("images", 0).size
188 assert_equal 2, @adapter.entries("images").size
206 assert_equal 2, @adapter.entries("images").size
189 assert_equal 2, @adapter.entries("images", 2).size
207 assert_equal 2, @adapter.entries("images", 2).size
190 end
208 end
191
209
192 def test_access_by_nodeid
210 def test_access_by_nodeid
193 path = 'sources/welcome_controller.rb'
211 path = 'sources/welcome_controller.rb'
194 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
212 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
195 end
213 end
196
214
197 def test_access_by_fuzzy_nodeid
215 def test_access_by_fuzzy_nodeid
198 path = 'sources/welcome_controller.rb'
216 path = 'sources/welcome_controller.rb'
199 # falls back to nodeid
217 # falls back to nodeid
200 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
218 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
201 end
219 end
202
220
203 private
221 private
204
222
205 def test_hgversion_for(hgversion, version)
223 def test_hgversion_for(hgversion, version)
206 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
224 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
207 assert_equal version, @adapter.class.hgversion
225 assert_equal version, @adapter.class.hgversion
208 end
226 end
209
227
210 def test_template_path_for(version, template)
228 def test_template_path_for(version, template)
211 assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
229 assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
212 @adapter.class.template_path_for(version)
230 @adapter.class.template_path_for(version)
213 assert File.exist?(@adapter.class.template_path_for(version))
231 assert File.exist?(@adapter.class.template_path_for(version))
214 end
232 end
215 else
233 else
216 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
234 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
217 def test_fake; assert true end
235 def test_fake; assert true end
218 end
236 end
219 end
237 end
220
238
221 rescue LoadError
239 rescue LoadError
222 class MercurialMochaFake < ActiveSupport::TestCase
240 class MercurialMochaFake < ActiveSupport::TestCase
223 def test_fake; assert(false, "Requires mocha to run those tests") end
241 def test_fake; assert(false, "Requires mocha to run those tests") end
224 end
242 end
225 end
243 end
226
244
General Comments 0
You need to be logged in to leave comments. Login now