##// END OF EJS Templates
scm: mercurial: unit lib test for entries accept both of revision number and changeset id (#3724, #3421)...
Toshi MARUYAMA -
r4585:7a35682cd9ac
parent child
Show More
@@ -1,130 +1,156
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 TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_DIR
7 TEMPLATES_DIR = Redmine::Scm::Adapters::MercurialAdapter::TEMPLATES_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 end
16 end
17
17
18 def test_hgversion
18 def test_hgversion
19 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5],
19 to_test = { "Mercurial Distributed SCM (version 0.9.5)\n" => [0,9,5],
20 "Mercurial Distributed SCM (1.0)\n" => [1,0],
20 "Mercurial Distributed SCM (1.0)\n" => [1,0],
21 "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
21 "Mercurial Distributed SCM (1e4ddc9ac9f7+20080325)\n" => nil,
22 "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
22 "Mercurial Distributed SCM (1.0.1+20080525)\n" => [1,0,1],
23 "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
23 "Mercurial Distributed SCM (1916e629a29d)\n" => nil,
24 "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
24 "Mercurial SCM Distribuito (versione 0.9.5)\n" => [0,9,5],
25 "(1.6)\n(1.7)\n(1.8)" => [1,6],
25 "(1.6)\n(1.7)\n(1.8)" => [1,6],
26 "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
26 "(1.7.1)\r\n(1.8.1)\r\n(1.9.1)" => [1,7,1]}
27
27
28 to_test.each do |s, v|
28 to_test.each do |s, v|
29 test_hgversion_for(s, v)
29 test_hgversion_for(s, v)
30 end
30 end
31 end
31 end
32
32
33 def test_template_path
33 def test_template_path
34 to_test = { [0,9,5] => "0.9.5",
34 to_test = { [0,9,5] => "0.9.5",
35 [1,0] => "1.0",
35 [1,0] => "1.0",
36 [] => "1.0",
36 [] => "1.0",
37 [1,0,1] => "1.0",
37 [1,0,1] => "1.0",
38 [1,7] => "1.0",
38 [1,7] => "1.0",
39 [1,7,1] => "1.0" }
39 [1,7,1] => "1.0" }
40 to_test.each do |v, template|
40 to_test.each do |v, template|
41 test_template_path_for(v, template)
41 test_template_path_for(v, template)
42 end
42 end
43 end
43 end
44
44
45 def test_diff
45 def test_diff
46 if @adapter.class.client_version_above?([1, 2])
46 if @adapter.class.client_version_above?([1, 2])
47 assert_nil @adapter.diff(nil, '100000')
47 assert_nil @adapter.diff(nil, '100000')
48 end
48 end
49 assert_nil @adapter.diff(nil, '100000', '200000')
49 assert_nil @adapter.diff(nil, '100000', '200000')
50 [2, '400bb8672109', '400', 400].each do |r1|
50 [2, '400bb8672109', '400', 400].each do |r1|
51 diff1 = @adapter.diff(nil, r1)
51 diff1 = @adapter.diff(nil, r1)
52 if @adapter.class.client_version_above?([1, 2])
52 if @adapter.class.client_version_above?([1, 2])
53 assert_equal 28, diff1.size
53 assert_equal 28, diff1.size
54 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
54 buf = diff1[24].gsub(/\r\n|\r|\n/, "")
55 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
55 assert_equal "+ return true unless klass.respond_to?('watched_by')", buf
56 else
56 else
57 assert_equal 0, diff1.size
57 assert_equal 0, diff1.size
58 end
58 end
59 [4, 'def6d2f1254a'].each do |r2|
59 [4, 'def6d2f1254a'].each do |r2|
60 diff2 = @adapter.diff(nil,r1,r2)
60 diff2 = @adapter.diff(nil,r1,r2)
61 assert_equal 49, diff2.size
61 assert_equal 49, diff2.size
62 buf = diff2[41].gsub(/\r\n|\r|\n/, "")
62 buf = diff2[41].gsub(/\r\n|\r|\n/, "")
63 assert_equal "+class WelcomeController < ApplicationController", buf
63 assert_equal "+class WelcomeController < ApplicationController", buf
64 diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2)
64 diff3 = @adapter.diff('sources/watchers_controller.rb', r1, r2)
65 assert_equal 20, diff3.size
65 assert_equal 20, diff3.size
66 buf = diff3[12].gsub(/\r\n|\r|\n/, "")
66 buf = diff3[12].gsub(/\r\n|\r|\n/, "")
67 assert_equal "+ @watched.remove_watcher(user)", buf
67 assert_equal "+ @watched.remove_watcher(user)", buf
68 end
68 end
69 end
69 end
70 end
70 end
71
71
72 def test_cat
72 def test_cat
73 [2, '400bb8672109', '400', 400].each do |r|
73 [2, '400bb8672109', '400', 400].each do |r|
74 buf = @adapter.cat('sources/welcome_controller.rb', r)
74 buf = @adapter.cat('sources/welcome_controller.rb', r)
75 assert buf
75 assert buf
76 lines = buf.split("\r\n")
76 lines = buf.split("\r\n")
77 assert_equal 25, lines.length
77 assert_equal 25, lines.length
78 assert_equal 'class WelcomeController < ApplicationController', lines[17]
78 assert_equal 'class WelcomeController < ApplicationController', lines[17]
79 end
79 end
80 assert_nil @adapter.cat('sources/welcome_controller.rb')
80 assert_nil @adapter.cat('sources/welcome_controller.rb')
81 end
81 end
82
82
83 def test_annotate
83 def test_annotate
84 assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines
84 assert_equal [], @adapter.annotate("sources/welcome_controller.rb").lines
85 [2, '400bb8672109', '400', 400].each do |r|
85 [2, '400bb8672109', '400', 400].each do |r|
86 ann = @adapter.annotate('sources/welcome_controller.rb', r)
86 ann = @adapter.annotate('sources/welcome_controller.rb', r)
87 assert ann
87 assert ann
88 assert_equal '1', ann.revisions[17].revision
88 assert_equal '1', ann.revisions[17].revision
89 assert_equal '9d5b5b004199', ann.revisions[17].identifier
89 assert_equal '9d5b5b004199', ann.revisions[17].identifier
90 assert_equal 'jsmith', ann.revisions[0].author
90 assert_equal 'jsmith', ann.revisions[0].author
91 assert_equal 25, ann.lines.length
91 assert_equal 25, ann.lines.length
92 assert_equal 'class WelcomeController < ApplicationController', ann.lines[17]
92 assert_equal 'class WelcomeController < ApplicationController', ann.lines[17]
93 end
93 end
94 end
94 end
95
95
96 # TODO filesize etc.
97 def test_entries
98 assert_nil @adapter.entries(nil, '100000')
99 [2, '400bb8672109', '400', 400].each do |r|
100 entries1 = @adapter.entries(nil, r)
101 assert entries1
102 assert_equal 3, entries1.size
103 assert_equal 'sources', entries1[1].name
104 assert_equal 'sources', entries1[1].path
105 assert_equal 'dir', entries1[1].kind
106 assert_equal 'README', entries1[2].name
107 assert_equal 'README', entries1[2].path
108 assert_equal 'file', entries1[2].kind
109
110 entries2 = @adapter.entries('sources', r)
111 assert entries2
112 assert_equal 2, entries2.size
113 assert_equal 'watchers_controller.rb', entries2[0].name
114 assert_equal 'sources/watchers_controller.rb', entries2[0].path
115 assert_equal 'file', entries2[0].kind
116 assert_equal 'welcome_controller.rb', entries2[1].name
117 assert_equal 'sources/welcome_controller.rb', entries2[1].path
118 assert_equal 'file', entries2[1].kind
119 end
120 end
121
96 def test_access_by_nodeid
122 def test_access_by_nodeid
97 path = 'sources/welcome_controller.rb'
123 path = 'sources/welcome_controller.rb'
98 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
124 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400bb8672109')
99 end
125 end
100
126
101 def test_access_by_fuzzy_nodeid
127 def test_access_by_fuzzy_nodeid
102 path = 'sources/welcome_controller.rb'
128 path = 'sources/welcome_controller.rb'
103 # falls back to nodeid
129 # falls back to nodeid
104 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
130 assert_equal @adapter.cat(path, 2), @adapter.cat(path, '400')
105 end
131 end
106
132
107 private
133 private
108
134
109 def test_hgversion_for(hgversion, version)
135 def test_hgversion_for(hgversion, version)
110 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
136 @adapter.class.expects(:hgversion_from_command_line).returns(hgversion)
111 assert_equal version, @adapter.class.hgversion
137 assert_equal version, @adapter.class.hgversion
112 end
138 end
113
139
114 def test_template_path_for(version, template)
140 def test_template_path_for(version, template)
115 assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
141 assert_equal "#{TEMPLATES_DIR}/#{TEMPLATE_NAME}-#{template}.#{TEMPLATE_EXTENSION}",
116 @adapter.class.template_path_for(version)
142 @adapter.class.template_path_for(version)
117 assert File.exist?(@adapter.class.template_path_for(version))
143 assert File.exist?(@adapter.class.template_path_for(version))
118 end
144 end
119 else
145 else
120 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
146 puts "Mercurial test repository NOT FOUND. Skipping unit tests !!!"
121 def test_fake; assert true end
147 def test_fake; assert true end
122 end
148 end
123 end
149 end
124
150
125 rescue LoadError
151 rescue LoadError
126 class MercurialMochaFake < ActiveSupport::TestCase
152 class MercurialMochaFake < ActiveSupport::TestCase
127 def test_fake; assert(false, "Requires mocha to run those tests") end
153 def test_fake; assert(false, "Requires mocha to run those tests") end
128 end
154 end
129 end
155 end
130
156
General Comments 0
You need to be logged in to leave comments. Login now