##// END OF EJS Templates
scm: mercurial: remove "TODO" comment and fix indent of unit lib test....
Toshi MARUYAMA -
r4745:55fdc23981f7
parent child
Show More
@@ -1,209 +1,208
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 # TODO filesize etc.
134 def test_entries
133 def test_entries
135 assert_nil @adapter.entries(nil, '100000')
134 assert_nil @adapter.entries(nil, '100000')
136
135
137 assert_equal 1, @adapter.entries("sources", 3).size
136 assert_equal 1, @adapter.entries("sources", 3).size
138 assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
137 assert_equal 1, @adapter.entries("sources", 'b3a615152df8').size
139
138
140 [2, '400bb8672109', '400', 400].each do |r|
139 [2, '400bb8672109', '400', 400].each do |r|
141 entries1 = @adapter.entries(nil, r)
140 entries1 = @adapter.entries(nil, r)
142 assert entries1
141 assert entries1
143 assert_equal 3, entries1.size
142 assert_equal 3, entries1.size
144 assert_equal 'sources', entries1[1].name
143 assert_equal 'sources', entries1[1].name
145 assert_equal 'sources', entries1[1].path
144 assert_equal 'sources', entries1[1].path
146 assert_equal 'dir', entries1[1].kind
145 assert_equal 'dir', entries1[1].kind
147 readme = entries1[2]
146 readme = entries1[2]
148 assert_equal 'README', readme.name
147 assert_equal 'README', readme.name
149 assert_equal 'README', readme.path
148 assert_equal 'README', readme.path
150 assert_equal 'file', readme.kind
149 assert_equal 'file', readme.kind
151 assert_equal 27, readme.size
150 assert_equal 27, readme.size
152 assert_equal '1', readme.lastrev.revision
151 assert_equal '1', readme.lastrev.revision
153 assert_equal '9d5b5b004199', readme.lastrev.identifier
152 assert_equal '9d5b5b004199', readme.lastrev.identifier
154 # 2007-12-14 10:24:01 +0100
153 # 2007-12-14 10:24:01 +0100
155 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
156
155
157 entries2 = @adapter.entries('sources', r)
156 entries2 = @adapter.entries('sources', r)
158 assert entries2
157 assert entries2
159 assert_equal 2, entries2.size
158 assert_equal 2, entries2.size
160 assert_equal 'watchers_controller.rb', entries2[0].name
159 assert_equal 'watchers_controller.rb', entries2[0].name
161 assert_equal 'sources/watchers_controller.rb', entries2[0].path
160 assert_equal 'sources/watchers_controller.rb', entries2[0].path
162 assert_equal 'file', entries2[0].kind
161 assert_equal 'file', entries2[0].kind
163 assert_equal 'welcome_controller.rb', entries2[1].name
162 assert_equal 'welcome_controller.rb', entries2[1].name
164 assert_equal 'sources/welcome_controller.rb', entries2[1].path
163 assert_equal 'sources/welcome_controller.rb', entries2[1].path
165 assert_equal 'file', entries2[1].kind
164 assert_equal 'file', entries2[1].kind
166 end
165 end
167 end
166 end
168
167
169 def test_locate_on_outdated_repository
168 def test_locate_on_outdated_repository
170 assert_equal 1, @adapter.entries("images", 0).size
169 assert_equal 1, @adapter.entries("images", 0).size
171 assert_equal 2, @adapter.entries("images").size
170 assert_equal 2, @adapter.entries("images").size
172 assert_equal 2, @adapter.entries("images", 2).size
171 assert_equal 2, @adapter.entries("images", 2).size
173 end
172 end
174
173
175 def test_access_by_nodeid
174 def test_access_by_nodeid
176 path = 'sources/welcome_controller.rb'
175 path = 'sources/welcome_controller.rb'
177 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
176 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
178 end
177 end
179
178
180 def test_access_by_fuzzy_nodeid
179 def test_access_by_fuzzy_nodeid
181 path = 'sources/welcome_controller.rb'
180 path = 'sources/welcome_controller.rb'
182 # falls back to nodeid
181 # falls back to nodeid
183 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
182 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
184 end
183 end
185
184
186 private
185 private
187
186
188 def test_hgversion_for(hgversion, version)
187 def test_hgversion_for(hgversion, version)
189 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
188 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
190 assert_equal version, @adapter.class.hgversion
189 assert_equal version, @adapter.class.hgversion
191 end
190 end
192
191
193 def test_template_path_for(version, template)
192 def test_template_path_for(version, template)
194 assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
193 assert_equal "#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
195 @adapter.class.template_path_for(version)
194 @adapter.class.template_path_for(version)
196 assert File.exist?(@adapter.class.template_path_for(version))
195 assert File.exist?(@adapter.class.template_path_for(version))
197 end
196 end
198 else
197 else
199 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
198 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
200 def test_fake; assert true end
199 def test_fake; assert true end
201 end
200 end
202 end
201 end
203
202
204 rescue LoadError
203 rescue LoadError
205 class MercurialMochaFake < ActiveSupport::TestCase
204 class MercurialMochaFake < ActiveSupport::TestCase
206 def test_fake; assert(false, "Requires mocha to run those tests") end
205 def test_fake; assert(false, "Requires mocha to run those tests") end
207 end
206 end
208 end
207 end
209
208
General Comments 0
You need to be logged in to leave comments. Login now