##// END OF EJS Templates
scm: git: add unit adapter test of default path_encoding is UTF-8 (#5251)....
Toshi MARUYAMA -
r5751:61fb6d6e103b
parent child
Show More
@@ -1,354 +1,369
1 # encoding: utf-8
1 # encoding: utf-8
2
2
3 # This file includes UTF-8 "Felix Schäfer".
3 # This file includes UTF-8 "Felix Schäfer".
4 # We need to consider Ruby 1.9 compatibility.
4 # We need to consider Ruby 1.9 compatibility.
5
5
6 require File.expand_path('../../../../../../test_helper', __FILE__)
6 require File.expand_path('../../../../../../test_helper', __FILE__)
7 begin
7 begin
8 require 'mocha'
8 require 'mocha'
9
9
10 class GitAdapterTest < ActiveSupport::TestCase
10 class GitAdapterTest < ActiveSupport::TestCase
11 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
11 REPOSITORY_PATH = RAILS_ROOT.gsub(%r{config\/\.\.}, '') + '/tmp/test/git_repository'
12
12
13 FELIX_UTF8 = "Felix Schäfer"
13 FELIX_UTF8 = "Felix Schäfer"
14 FELIX_HEX = "Felix Sch\xC3\xA4fer"
14 FELIX_HEX = "Felix Sch\xC3\xA4fer"
15 CHAR_1_HEX = "\xc3\x9c"
15 CHAR_1_HEX = "\xc3\x9c"
16
16
17 ## Ruby uses ANSI api to fork a process on Windows.
17 ## Ruby uses ANSI api to fork a process on Windows.
18 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
18 ## Japanese Shift_JIS and Traditional Chinese Big5 have 0x5c(backslash) problem
19 ## and these are incompatible with ASCII.
19 ## and these are incompatible with ASCII.
20 # WINDOWS_PASS = Redmine::Platform.mswin?
20 # WINDOWS_PASS = Redmine::Platform.mswin?
21 WINDOWS_PASS = false
21 WINDOWS_PASS = false
22
22
23 if File.directory?(REPOSITORY_PATH)
23 if File.directory?(REPOSITORY_PATH)
24 def setup
24 def setup
25 adapter_class = Redmine::Scm::Adapters::GitAdapter
25 adapter_class = Redmine::Scm::Adapters::GitAdapter
26 assert adapter_class
26 assert adapter_class
27 assert adapter_class.client_command
27 assert adapter_class.client_command
28 assert_equal true, adapter_class.client_available
28 assert_equal true, adapter_class.client_available
29 assert_equal true, adapter_class.client_version_above?([1])
29 assert_equal true, adapter_class.client_version_above?([1])
30 assert_equal true, adapter_class.client_version_above?([1, 0])
30 assert_equal true, adapter_class.client_version_above?([1, 0])
31
31
32 @adapter = Redmine::Scm::Adapters::GitAdapter.new(
32 @adapter = Redmine::Scm::Adapters::GitAdapter.new(
33 REPOSITORY_PATH,
33 REPOSITORY_PATH,
34 nil,
34 nil,
35 nil,
35 nil,
36 nil,
36 nil,
37 'ISO-8859-1'
37 'ISO-8859-1'
38 )
38 )
39 assert @adapter
39 assert @adapter
40 @char_1 = CHAR_1_HEX.dup
40 @char_1 = CHAR_1_HEX.dup
41 if @char_1.respond_to?(:force_encoding)
41 if @char_1.respond_to?(:force_encoding)
42 @char_1.force_encoding('UTF-8')
42 @char_1.force_encoding('UTF-8')
43 end
43 end
44 end
44 end
45
45
46 def test_scm_version
46 def test_scm_version
47 to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
47 to_test = { "git version 1.7.3.4\n" => [1,7,3,4],
48 "1.6.1\n1.7\n1.8" => [1,6,1],
48 "1.6.1\n1.7\n1.8" => [1,6,1],
49 "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
49 "1.6.2\r\n1.8.1\r\n1.9.1" => [1,6,2]}
50 to_test.each do |s, v|
50 to_test.each do |s, v|
51 test_scm_version_for(s, v)
51 test_scm_version_for(s, v)
52 end
52 end
53 end
53 end
54
54
55 def test_branches
55 def test_branches
56 assert_equal [
56 assert_equal [
57 'latin-1-path-encoding',
57 'latin-1-path-encoding',
58 'master',
58 'master',
59 'test-latin-1',
59 'test-latin-1',
60 'test_branch',
60 'test_branch',
61 ], @adapter.branches
61 ], @adapter.branches
62 end
62 end
63
63
64 def test_tags
64 def test_tags
65 assert_equal [
65 assert_equal [
66 "tag00.lightweight",
66 "tag00.lightweight",
67 "tag01.annotated",
67 "tag01.annotated",
68 ], @adapter.tags
68 ], @adapter.tags
69 end
69 end
70
70
71 def test_getting_all_revisions
71 def test_getting_all_revisions
72 assert_equal 21, @adapter.revisions('',nil,nil,:all => true).length
72 assert_equal 21, @adapter.revisions('',nil,nil,:all => true).length
73 end
73 end
74
74
75 def test_getting_certain_revisions
75 def test_getting_certain_revisions
76 assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
76 assert_equal 1, @adapter.revisions('','899a15d^','899a15d').length
77 end
77 end
78
78
79 def test_revisions_reverse
79 def test_revisions_reverse
80 revs1 = @adapter.revisions('',nil,nil,{:all => true, :reverse => true })
80 revs1 = @adapter.revisions('',nil,nil,{:all => true, :reverse => true })
81 assert_equal 21, revs1.length
81 assert_equal 21, revs1.length
82 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[0].identifier
82 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[0].identifier
83 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[20].identifier
83 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[20].identifier
84 end
84 end
85
85
86 def test_revisions_reverse_with_time
86 def test_revisions_reverse_with_time
87 since2 = Time.gm(2010, 9, 30, 0, 0, 0)
87 since2 = Time.gm(2010, 9, 30, 0, 0, 0)
88 revs2 = @adapter.revisions('', nil, nil,
88 revs2 = @adapter.revisions('', nil, nil,
89 {:all => true, :since => since2, :reverse => true})
89 {:all => true, :since => since2, :reverse => true})
90 assert_equal 6, revs2.length
90 assert_equal 6, revs2.length
91 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', revs2[0].identifier
91 assert_equal '67e7792ce20ccae2e4bb73eed09bb397819c8834', revs2[0].identifier
92 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[5].identifier
92 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[5].identifier
93 end
93 end
94
94
95 def test_revisions_master_all
95 def test_revisions_master_all
96 revs1 = []
96 revs1 = []
97 @adapter.revisions('', nil, "master",{}) do |rev|
97 @adapter.revisions('', nil, "master",{}) do |rev|
98 revs1 << rev
98 revs1 << rev
99 end
99 end
100 assert_equal 15, revs1.length
100 assert_equal 15, revs1.length
101 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier
101 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[ 0].identifier
102 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
102 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
103
103
104 revs2 = []
104 revs2 = []
105 @adapter.revisions('', nil, "master",
105 @adapter.revisions('', nil, "master",
106 {:reverse => true}) do |rev|
106 {:reverse => true}) do |rev|
107 revs2 << rev
107 revs2 << rev
108 end
108 end
109 assert_equal 15, revs2.length
109 assert_equal 15, revs2.length
110 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
110 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
111 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
111 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
112 end
112 end
113
113
114 def test_revisions_master_merged_rev
114 def test_revisions_master_merged_rev
115 revs1 = []
115 revs1 = []
116 @adapter.revisions('',
116 @adapter.revisions('',
117 "713f4944648826f558cf548222f813dabe7cbb04",
117 "713f4944648826f558cf548222f813dabe7cbb04",
118 "master",
118 "master",
119 {:reverse => true}) do |rev|
119 {:reverse => true}) do |rev|
120 revs1 << rev
120 revs1 << rev
121 end
121 end
122 assert_equal 8, revs1.length
122 assert_equal 8, revs1.length
123 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier
123 assert_equal 'fba357b886984ee71185ad2065e65fc0417d9b92', revs1[ 0].identifier
124 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier
124 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs1[ 1].identifier
125 # 4a07fe31b is not a child of 713f49446
125 # 4a07fe31b is not a child of 713f49446
126 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier
126 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs1[ 2].identifier
127 # Merged revision
127 # Merged revision
128 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier
128 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs1[ 3].identifier
129 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
129 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs1[-1].identifier
130
130
131 revs2 = []
131 revs2 = []
132 @adapter.revisions('',
132 @adapter.revisions('',
133 "fba357b886984ee71185ad2065e65fc0417d9b92",
133 "fba357b886984ee71185ad2065e65fc0417d9b92",
134 "master",
134 "master",
135 {:reverse => true}) do |rev|
135 {:reverse => true}) do |rev|
136 revs2 << rev
136 revs2 << rev
137 end
137 end
138 assert_equal 7, revs2.length
138 assert_equal 7, revs2.length
139 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier
139 assert_equal '7e61ac704deecde634b51e59daa8110435dcb3da', revs2[ 0].identifier
140 # 4a07fe31b is not a child of fba357b8869
140 # 4a07fe31b is not a child of fba357b8869
141 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier
141 assert_equal '4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8', revs2[ 1].identifier
142 # Merged revision
142 # Merged revision
143 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier
143 assert_equal '32ae898b720c2f7eec2723d5bdd558b4cb2d3ddf', revs2[ 2].identifier
144 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
144 assert_equal '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c', revs2[-1].identifier
145 end
145 end
146
146
147 def test_revisions_branch_latin_1_path_encoding_all
147 def test_revisions_branch_latin_1_path_encoding_all
148 revs1 = []
148 revs1 = []
149 @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev|
149 @adapter.revisions('', nil, "latin-1-path-encoding",{}) do |rev|
150 revs1 << rev
150 revs1 << rev
151 end
151 end
152 assert_equal 8, revs1.length
152 assert_equal 8, revs1.length
153 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier
153 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[ 0].identifier
154 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
154 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs1[-1].identifier
155
155
156 revs2 = []
156 revs2 = []
157 @adapter.revisions('', nil, "latin-1-path-encoding",
157 @adapter.revisions('', nil, "latin-1-path-encoding",
158 {:reverse => true}) do |rev|
158 {:reverse => true}) do |rev|
159 revs2 << rev
159 revs2 << rev
160 end
160 end
161 assert_equal 8, revs2.length
161 assert_equal 8, revs2.length
162 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
162 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
163 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
163 assert_equal '7234cb2750b63f47bff735edc50a1c0a433c2518', revs2[ 0].identifier
164 end
164 end
165
165
166 def test_revisions_branch_latin_1_path_encoding_with_rev
166 def test_revisions_branch_latin_1_path_encoding_with_rev
167 revs1 = []
167 revs1 = []
168 @adapter.revisions('',
168 @adapter.revisions('',
169 '7234cb2750b63f47bff735edc50a1c0a433c2518',
169 '7234cb2750b63f47bff735edc50a1c0a433c2518',
170 "latin-1-path-encoding",
170 "latin-1-path-encoding",
171 {:reverse => true}) do |rev|
171 {:reverse => true}) do |rev|
172 revs1 << rev
172 revs1 << rev
173 end
173 end
174 assert_equal 7, revs1.length
174 assert_equal 7, revs1.length
175 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier
175 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', revs1[ 0].identifier
176 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
176 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs1[-1].identifier
177
177
178 revs2 = []
178 revs2 = []
179 @adapter.revisions('',
179 @adapter.revisions('',
180 '57ca437c0acbbcb749821fdf3726a1367056d364',
180 '57ca437c0acbbcb749821fdf3726a1367056d364',
181 "latin-1-path-encoding",
181 "latin-1-path-encoding",
182 {:reverse => true}) do |rev|
182 {:reverse => true}) do |rev|
183 revs2 << rev
183 revs2 << rev
184 end
184 end
185 assert_equal 3, revs2.length
185 assert_equal 3, revs2.length
186 assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier
186 assert_equal '4fc55c43bf3d3dc2efb66145365ddc17639ce81e', revs2[ 0].identifier
187 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
187 assert_equal '1ca7f5ed374f3cb31a93ae5215c2e25cc6ec5127', revs2[-1].identifier
188 end
188 end
189
189
190 def test_revisions_invalid_rev
190 def test_revisions_invalid_rev
191 revs1 = []
191 revs1 = []
192 @adapter.revisions('',
192 @adapter.revisions('',
193 '1234abcd',
193 '1234abcd',
194 "master",
194 "master",
195 {:reverse => true}) do |rev|
195 {:reverse => true}) do |rev|
196 revs1 << rev
196 revs1 << rev
197 end
197 end
198 assert_equal [], revs1
198 assert_equal [], revs1
199 end
199 end
200
200
201 def test_getting_revisions_with_spaces_in_filename
201 def test_getting_revisions_with_spaces_in_filename
202 assert_equal 1, @adapter.revisions("filemane with spaces.txt",
202 assert_equal 1, @adapter.revisions("filemane with spaces.txt",
203 nil, nil, :all => true).length
203 nil, nil, :all => true).length
204 end
204 end
205
205
206 def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
206 def test_getting_revisions_with_leading_and_trailing_spaces_in_filename
207 assert_equal " filename with a leading space.txt ",
207 assert_equal " filename with a leading space.txt ",
208 @adapter.revisions(" filename with a leading space.txt ",
208 @adapter.revisions(" filename with a leading space.txt ",
209 nil, nil, :all => true)[0].paths[0][:path]
209 nil, nil, :all => true)[0].paths[0][:path]
210 end
210 end
211
211
212 def test_getting_entries_with_leading_and_trailing_spaces_in_filename
212 def test_getting_entries_with_leading_and_trailing_spaces_in_filename
213 assert_equal " filename with a leading space.txt ",
213 assert_equal " filename with a leading space.txt ",
214 @adapter.entries('',
214 @adapter.entries('',
215 '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
215 '83ca5fd546063a3c7dc2e568ba3355661a9e2b2c')[3].name
216 end
216 end
217
217
218 def test_annotate
218 def test_annotate
219 annotate = @adapter.annotate('sources/watchers_controller.rb')
219 annotate = @adapter.annotate('sources/watchers_controller.rb')
220 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
220 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
221 assert_equal 41, annotate.lines.size
221 assert_equal 41, annotate.lines.size
222 assert_equal "# This program is free software; you can redistribute it and/or",
222 assert_equal "# This program is free software; you can redistribute it and/or",
223 annotate.lines[4].strip
223 annotate.lines[4].strip
224 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
224 assert_equal "7234cb2750b63f47bff735edc50a1c0a433c2518",
225 annotate.revisions[4].identifier
225 annotate.revisions[4].identifier
226 assert_equal "jsmith", annotate.revisions[4].author
226 assert_equal "jsmith", annotate.revisions[4].author
227 end
227 end
228
228
229 def test_annotate_moved_file
229 def test_annotate_moved_file
230 annotate = @adapter.annotate('renamed_test.txt')
230 annotate = @adapter.annotate('renamed_test.txt')
231 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
231 assert_kind_of Redmine::Scm::Adapters::Annotate, annotate
232 assert_equal 2, annotate.lines.size
232 assert_equal 2, annotate.lines.size
233 end
233 end
234
234
235 def test_last_rev
235 def test_last_rev
236 last_rev = @adapter.lastrev("README",
236 last_rev = @adapter.lastrev("README",
237 "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
237 "4f26664364207fa8b1af9f8722647ab2d4ac5d43")
238 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
238 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.scmid
239 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
239 assert_equal "4a07fe31bffcf2888791f3e6cbc9c4545cefe3e8", last_rev.identifier
240 assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author
240 assert_equal "Adam Soltys <asoltys@gmail.com>", last_rev.author
241 assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
241 assert_equal "2009-06-24 05:27:38".to_time, last_rev.time
242 end
242 end
243
243
244 def test_last_rev_with_spaces_in_filename
244 def test_last_rev_with_spaces_in_filename
245 last_rev = @adapter.lastrev("filemane with spaces.txt",
245 last_rev = @adapter.lastrev("filemane with spaces.txt",
246 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
246 "ed5bb786bbda2dee66a2d50faf51429dbc043a7b")
247 str_felix_utf8 = FELIX_UTF8.dup
247 str_felix_utf8 = FELIX_UTF8.dup
248 str_felix_hex = FELIX_HEX.dup
248 str_felix_hex = FELIX_HEX.dup
249 last_rev_author = last_rev.author
249 last_rev_author = last_rev.author
250 if last_rev_author.respond_to?(:force_encoding)
250 if last_rev_author.respond_to?(:force_encoding)
251 last_rev_author.force_encoding('UTF-8')
251 last_rev_author.force_encoding('UTF-8')
252 end
252 end
253 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
253 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.scmid
254 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
254 assert_equal "ed5bb786bbda2dee66a2d50faf51429dbc043a7b", last_rev.identifier
255 assert_equal "#{str_felix_utf8} <felix@fachschaften.org>",
255 assert_equal "#{str_felix_utf8} <felix@fachschaften.org>",
256 last_rev.author
256 last_rev.author
257 assert_equal "#{str_felix_hex} <felix@fachschaften.org>",
257 assert_equal "#{str_felix_hex} <felix@fachschaften.org>",
258 last_rev.author
258 last_rev.author
259 assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
259 assert_equal "2010-09-18 19:59:46".to_time, last_rev.time
260 end
260 end
261
261
262 def test_latin_1_path
262 def test_latin_1_path
263 if WINDOWS_PASS
263 if WINDOWS_PASS
264 #
264 #
265 else
265 else
266 p2 = "latin-1-dir/test-#{@char_1}-2.txt"
266 p2 = "latin-1-dir/test-#{@char_1}-2.txt"
267 ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1|
267 ['4fc55c43bf3d3dc2efb66145365ddc17639ce81e', '4fc55c43bf3'].each do |r1|
268 assert @adapter.diff(p2, r1)
268 assert @adapter.diff(p2, r1)
269 assert @adapter.cat(p2, r1)
269 assert @adapter.cat(p2, r1)
270 assert_equal 1, @adapter.annotate(p2, r1).lines.length
270 assert_equal 1, @adapter.annotate(p2, r1).lines.length
271 ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2|
271 ['64f1f3e89ad1cb57976ff0ad99a107012ba3481d', '64f1f3e89ad1cb5797'].each do |r2|
272 assert @adapter.diff(p2, r1, r2)
272 assert @adapter.diff(p2, r1, r2)
273 end
273 end
274 end
274 end
275 end
275 end
276 end
276 end
277
277
278 def test_entries_tag
278 def test_entries_tag
279 entries1 = @adapter.entries(nil, 'tag01.annotated',
279 entries1 = @adapter.entries(nil, 'tag01.annotated',
280 options = {:report_last_commit => true})
280 options = {:report_last_commit => true})
281 assert entries1
281 assert entries1
282 assert_equal 3, entries1.size
282 assert_equal 3, entries1.size
283 assert_equal 'sources', entries1[1].name
283 assert_equal 'sources', entries1[1].name
284 assert_equal 'sources', entries1[1].path
284 assert_equal 'sources', entries1[1].path
285 assert_equal 'dir', entries1[1].kind
285 assert_equal 'dir', entries1[1].kind
286 readme = entries1[2]
286 readme = entries1[2]
287 assert_equal 'README', readme.name
287 assert_equal 'README', readme.name
288 assert_equal 'README', readme.path
288 assert_equal 'README', readme.path
289 assert_equal 'file', readme.kind
289 assert_equal 'file', readme.kind
290 assert_equal 27, readme.size
290 assert_equal 27, readme.size
291 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier
291 assert_equal '899a15dba03a3b350b89c3f537e4bbe02a03cdc9', readme.lastrev.identifier
292 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
292 assert_equal Time.gm(2007, 12, 14, 9, 24, 1), readme.lastrev.time
293 end
293 end
294
294
295 def test_entries_branch
295 def test_entries_branch
296 entries1 = @adapter.entries(nil, 'test_branch',
296 entries1 = @adapter.entries(nil, 'test_branch',
297 options = {:report_last_commit => true})
297 options = {:report_last_commit => true})
298 assert entries1
298 assert entries1
299 assert_equal 4, entries1.size
299 assert_equal 4, entries1.size
300 assert_equal 'sources', entries1[1].name
300 assert_equal 'sources', entries1[1].name
301 assert_equal 'sources', entries1[1].path
301 assert_equal 'sources', entries1[1].path
302 assert_equal 'dir', entries1[1].kind
302 assert_equal 'dir', entries1[1].kind
303 readme = entries1[2]
303 readme = entries1[2]
304 assert_equal 'README', readme.name
304 assert_equal 'README', readme.name
305 assert_equal 'README', readme.path
305 assert_equal 'README', readme.path
306 assert_equal 'file', readme.kind
306 assert_equal 'file', readme.kind
307 assert_equal 159, readme.size
307 assert_equal 159, readme.size
308 assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier
308 assert_equal '713f4944648826f558cf548222f813dabe7cbb04', readme.lastrev.identifier
309 assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time
309 assert_equal Time.gm(2009, 6, 19, 4, 37, 23), readme.lastrev.time
310 end
310 end
311
311
312 def test_entries_latin_1_files
312 def test_entries_latin_1_files
313 entries1 = @adapter.entries('latin-1-dir', '64f1f3e8')
313 entries1 = @adapter.entries('latin-1-dir', '64f1f3e8')
314 assert entries1
314 assert entries1
315 assert_equal 3, entries1.size
315 assert_equal 3, entries1.size
316 f1 = entries1[1]
316 f1 = entries1[1]
317 assert_equal "test-#{@char_1}-2.txt", f1.name
317 assert_equal "test-#{@char_1}-2.txt", f1.name
318 assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
318 assert_equal "latin-1-dir/test-#{@char_1}-2.txt", f1.path
319 assert_equal 'file', f1.kind
319 assert_equal 'file', f1.kind
320 end
320 end
321
321
322 def test_entries_latin_1_dir
322 def test_entries_latin_1_dir
323 if WINDOWS_PASS
323 if WINDOWS_PASS
324 #
324 #
325 else
325 else
326 entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir",
326 entries1 = @adapter.entries("latin-1-dir/test-#{@char_1}-subdir",
327 '1ca7f5ed')
327 '1ca7f5ed')
328 assert entries1
328 assert entries1
329 assert_equal 3, entries1.size
329 assert_equal 3, entries1.size
330 f1 = entries1[1]
330 f1 = entries1[1]
331 assert_equal "test-#{@char_1}-2.txt", f1.name
331 assert_equal "test-#{@char_1}-2.txt", f1.name
332 assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path
332 assert_equal "latin-1-dir/test-#{@char_1}-subdir/test-#{@char_1}-2.txt", f1.path
333 assert_equal 'file', f1.kind
333 assert_equal 'file', f1.kind
334 end
334 end
335 end
335 end
336
336
337 def test_path_encoding_default_utf8
338 adpt1 = Redmine::Scm::Adapters::GitAdapter.new(
339 REPOSITORY_PATH
340 )
341 assert_equal "UTF-8", adpt1.path_encoding
342 adpt2 = Redmine::Scm::Adapters::GitAdapter.new(
343 REPOSITORY_PATH,
344 nil,
345 nil,
346 nil,
347 ""
348 )
349 assert_equal "UTF-8", adpt2.path_encoding
350 end
351
337 private
352 private
338
353
339 def test_scm_version_for(scm_command_version, version)
354 def test_scm_version_for(scm_command_version, version)
340 @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
355 @adapter.class.expects(:scm_version_from_command_line).returns(scm_command_version)
341 assert_equal version, @adapter.class.scm_command_version
356 assert_equal version, @adapter.class.scm_command_version
342 end
357 end
343
358
344 else
359 else
345 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
360 puts "Git test repository NOT FOUND. Skipping unit tests !!!"
346 def test_fake; assert true end
361 def test_fake; assert true end
347 end
362 end
348 end
363 end
349
364
350 rescue LoadError
365 rescue LoadError
351 class GitMochaFake < ActiveSupport::TestCase
366 class GitMochaFake < ActiveSupport::TestCase
352 def test_fake; assert(false, "Requires mocha to run those tests") end
367 def test_fake; assert(false, "Requires mocha to run those tests") end
353 end
368 end
354 end
369 end
General Comments 0
You need to be logged in to leave comments. Login now