101 self.hybridencode(b'data/foo/auxy.hg', b'data/foo/auxy.hg') |
140 self.hybridencode(b'data/foo/auxy.hg', b'data/foo/auxy.hg') |
102 self.hybridencode(b'data/foo/auxy.i', b'data/foo/auxy.i') |
141 self.hybridencode(b'data/foo/auxy.i', b'data/foo/auxy.i') |
103 self.hybridencode(b'data/foo/auxy.d', b'data/foo/auxy.d') |
142 self.hybridencode(b'data/foo/auxy.d', b'data/foo/auxy.d') |
104 |
143 |
105 # plain .hg, .i and .d directories have the leading dot encoded |
144 # plain .hg, .i and .d directories have the leading dot encoded |
106 self.hybridencode(b'data/.hg/.i/.d/foo', |
145 self.hybridencode( |
107 b'data/~2ehg.hg/~2ei.hg/~2ed.hg/foo') |
146 b'data/.hg/.i/.d/foo', b'data/~2ehg.hg/~2ei.hg/~2ed.hg/foo' |
|
147 ) |
108 |
148 |
109 def testmisclongcases(self): |
149 def testmisclongcases(self): |
110 self.hybridencode( |
150 self.hybridencode( |
111 (b'data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/' |
151 ( |
112 b'coma/foo.NUL/normal.c.i'), |
152 b'data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/' |
113 (b'data/au~78.bla/bla.aux/pr~6e/_p_r_n/lpt/co~6d3' |
153 b'coma/foo.NUL/normal.c.i' |
114 b'/nu~6c/coma/foo._n_u_l/normal.c.i')) |
154 ), |
115 self.hybridencode( |
155 ( |
116 (b'data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH' |
156 b'data/au~78.bla/bla.aux/pr~6e/_p_r_n/lpt/co~6d3' |
117 b'/TENTH/ELEVENTH/LOREMIPSUM.TXT.i'), |
157 b'/nu~6c/coma/foo._n_u_l/normal.c.i' |
118 (b'dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/' |
158 ), |
119 b'nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i')) |
159 ) |
120 self.hybridencode( |
160 self.hybridencode( |
121 (b'data/enterprise/openesbaddons/contrib-imola/corba-bc/' |
161 ( |
122 b'netbeansplugin/wsdlExtension/src/main/java/META-INF/services' |
162 b'data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH' |
123 b'/org.netbeans.modules.xml.wsdl.bindingsupport.spi.' |
163 b'/TENTH/ELEVENTH/LOREMIPSUM.TXT.i' |
124 b'ExtensibilityElementTemplateProvider.i'), |
164 ), |
125 (b'dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/' |
165 ( |
126 b'main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i')) |
166 b'dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/' |
127 self.hybridencode( |
167 b'nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i' |
128 (b'data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-' |
168 ), |
129 b'QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i'), |
169 ) |
130 (b'dh/au~78.the-quick-brown-fox-ju~3amps-over-the-lazy-dog-the-' |
170 self.hybridencode( |
131 b'quick-brown-fox-jud4dcadd033000ab2b26eb66bae1906bcb15d4a70.i')) |
171 ( |
132 self.hybridencode( |
172 b'data/enterprise/openesbaddons/contrib-imola/corba-bc/' |
133 (b'data/Project Planning/Resources/AnotherLongDirectoryName/Follow' |
173 b'netbeansplugin/wsdlExtension/src/main/java/META-INF/services' |
134 b'edbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'), |
174 b'/org.netbeans.modules.xml.wsdl.bindingsupport.spi.' |
135 (b'dh/project_/resource/anotherl/followed/andanoth/andthenanextrem' |
175 b'ExtensibilityElementTemplateProvider.i' |
136 b'elylongfilenaf93030515d9849cfdca52937c2204d19f83913e5.txt')) |
176 ), |
137 self.hybridencode( |
177 ( |
138 (b'data/Project.Planning/Resources/AnotherLongDirectoryName/Follo' |
178 b'dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/' |
139 b'wedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'), |
179 b'main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i' |
140 (b'dh/project_/resource/anotherl/followed/andanoth/andthenanextre' |
180 ), |
141 b'melylongfilena0fd7c506f5c9d58204444fc67e9499006bd2d445.txt')) |
181 ) |
|
182 self.hybridencode( |
|
183 ( |
|
184 b'data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-' |
|
185 b'QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i' |
|
186 ), |
|
187 ( |
|
188 b'dh/au~78.the-quick-brown-fox-ju~3amps-over-the-lazy-dog-the-' |
|
189 b'quick-brown-fox-jud4dcadd033000ab2b26eb66bae1906bcb15d4a70.i' |
|
190 ), |
|
191 ) |
|
192 self.hybridencode( |
|
193 ( |
|
194 b'data/Project Planning/Resources/AnotherLongDirectoryName/Follow' |
|
195 b'edbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt' |
|
196 ), |
|
197 ( |
|
198 b'dh/project_/resource/anotherl/followed/andanoth/andthenanextrem' |
|
199 b'elylongfilenaf93030515d9849cfdca52937c2204d19f83913e5.txt' |
|
200 ), |
|
201 ) |
|
202 self.hybridencode( |
|
203 ( |
|
204 b'data/Project.Planning/Resources/AnotherLongDirectoryName/Follo' |
|
205 b'wedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt' |
|
206 ), |
|
207 ( |
|
208 b'dh/project_/resource/anotherl/followed/andanoth/andthenanextre' |
|
209 b'melylongfilena0fd7c506f5c9d58204444fc67e9499006bd2d445.txt' |
|
210 ), |
|
211 ) |
142 self.hybridencode( |
212 self.hybridencode( |
143 b'data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i', |
213 b'data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i', |
144 (b'data/foo..~2e/foo ~20/~20/a~2e/__.~20/____/~2ex.~2e/~20 bla/' |
214 ( |
145 b'~2e_f_o_o/something.i')) |
215 b'data/foo..~2e/foo ~20/~20/a~2e/__.~20/____/~2ex.~2e/~20 bla/' |
|
216 b'~2e_f_o_o/something.i' |
|
217 ), |
|
218 ) |
146 self.hybridencode( |
219 self.hybridencode( |
147 b'data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9', |
220 b'data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9', |
148 (b'data/c/co/com/com0/co~6d1/co~6d2/co~6d3/co~6d4/co~6d5/co~6d6/' |
221 ( |
149 b'co~6d7/co~6d8/co~6d9')) |
222 b'data/c/co/com/com0/co~6d1/co~6d2/co~6d3/co~6d4/co~6d5/co~6d6/' |
|
223 b'co~6d7/co~6d8/co~6d9' |
|
224 ), |
|
225 ) |
150 self.hybridencode( |
226 self.hybridencode( |
151 b'data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9', |
227 b'data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9', |
152 (b'data/_c/_c_o/_c_o_m/_c_o_m0/_c_o_m1/_c_o_m2/_c_o_m3/_c_o_m4/' |
228 ( |
153 b'_c_o_m5/_c_o_m6/_c_o_m7/_c_o_m8/_c_o_m9')) |
229 b'data/_c/_c_o/_c_o_m/_c_o_m0/_c_o_m1/_c_o_m2/_c_o_m3/_c_o_m4/' |
154 self.hybridencode( |
230 b'_c_o_m5/_c_o_m6/_c_o_m7/_c_o_m8/_c_o_m9' |
155 (b'data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x/' |
231 ), |
156 b'com6.x/com7.x/com8.x/com9.x'), |
232 ) |
157 (b'data/c.x/co.x/com.x/com0.x/co~6d1.x/co~6d2.x/co~6d3.x/co~6d4.x' |
233 self.hybridencode( |
158 b'/co~6d5.x/co~6d6.x/co~6d7.x/co~6d8.x/co~6d9.x')) |
234 ( |
159 self.hybridencode( |
235 b'data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x/' |
160 (b'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6' |
236 b'com6.x/com7.x/com8.x/com9.x' |
161 b'/x.com7/x.com8/x.com9'), |
237 ), |
162 (b'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6' |
238 ( |
163 b'/x.com7/x.com8/x.com9')) |
239 b'data/c.x/co.x/com.x/com0.x/co~6d1.x/co~6d2.x/co~6d3.x/co~6d4.x' |
164 self.hybridencode( |
240 b'/co~6d5.x/co~6d6.x/co~6d7.x/co~6d8.x/co~6d9.x' |
165 (b'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/' |
241 ), |
166 b'com7x/com8x/com9x'), |
242 ) |
167 (b'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/' |
243 self.hybridencode( |
168 b'com7x/com8x/com9x')) |
244 ( |
169 self.hybridencode( |
245 b'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6' |
170 (b'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/' |
246 b'/x.com7/x.com8/x.com9' |
171 b'xcom8/xcom9'), |
247 ), |
172 (b'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/' |
248 ( |
173 b'xcom8/xcom9')) |
249 b'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6' |
|
250 b'/x.com7/x.com8/x.com9' |
|
251 ), |
|
252 ) |
|
253 self.hybridencode( |
|
254 ( |
|
255 b'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/' |
|
256 b'com7x/com8x/com9x' |
|
257 ), |
|
258 ( |
|
259 b'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/' |
|
260 b'com7x/com8x/com9x' |
|
261 ), |
|
262 ) |
|
263 self.hybridencode( |
|
264 ( |
|
265 b'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/' |
|
266 b'xcom8/xcom9' |
|
267 ), |
|
268 ( |
|
269 b'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/' |
|
270 b'xcom8/xcom9' |
|
271 ), |
|
272 ) |
174 self.hybridencode( |
273 self.hybridencode( |
175 b'data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9', |
274 b'data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9', |
176 (b'data/l/lp/lpt/lpt0/lp~741/lp~742/lp~743/lp~744/lp~745/lp~746/' |
275 ( |
177 b'lp~747/lp~748/lp~749')) |
276 b'data/l/lp/lpt/lpt0/lp~741/lp~742/lp~743/lp~744/lp~745/lp~746/' |
|
277 b'lp~747/lp~748/lp~749' |
|
278 ), |
|
279 ) |
178 self.hybridencode( |
280 self.hybridencode( |
179 b'data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9', |
281 b'data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9', |
180 (b'data/_l/_l_p/_l_p_t/_l_p_t0/_l_p_t1/_l_p_t2/_l_p_t3/_l_p_t4/' |
282 ( |
181 b'_l_p_t5/_l_p_t6/_l_p_t7/_l_p_t8/_l_p_t9')) |
283 b'data/_l/_l_p/_l_p_t/_l_p_t0/_l_p_t1/_l_p_t2/_l_p_t3/_l_p_t4/' |
182 self.hybridencode( |
284 b'_l_p_t5/_l_p_t6/_l_p_t7/_l_p_t8/_l_p_t9' |
183 (b'data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x/' |
285 ), |
184 b'lpt6.x/lpt7.x/lpt8.x/lpt9.x'), |
286 ) |
185 (b'data/l.x/lp.x/lpt.x/lpt0.x/lp~741.x/lp~742.x/lp~743.x/lp~744.x/' |
287 self.hybridencode( |
186 b'lp~745.x/lp~746.x/lp~747.x/lp~748.x/lp~749.x')) |
288 ( |
187 self.hybridencode( |
289 b'data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x/' |
188 (b'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/' |
290 b'lpt6.x/lpt7.x/lpt8.x/lpt9.x' |
189 b'x.lpt6/x.lpt7/x.lpt8/x.lpt9'), |
291 ), |
190 (b'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5' |
292 ( |
191 b'/x.lpt6/x.lpt7/x.lpt8/x.lpt9')) |
293 b'data/l.x/lp.x/lpt.x/lpt0.x/lp~741.x/lp~742.x/lp~743.x/lp~744.x/' |
192 self.hybridencode( |
294 b'lp~745.x/lp~746.x/lp~747.x/lp~748.x/lp~749.x' |
193 (b'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/' |
295 ), |
194 b'lpt7x/lpt8x/lpt9x'), |
296 ) |
195 (b'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/' |
297 self.hybridencode( |
196 b'lpt7x/lpt8x/lpt9x')) |
298 ( |
197 self.hybridencode( |
299 b'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/' |
198 (b'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/' |
300 b'x.lpt6/x.lpt7/x.lpt8/x.lpt9' |
199 b'xlpt7/xlpt8/xlpt9'), |
301 ), |
200 (b'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/' |
302 ( |
201 b'xlpt7/xlpt8/xlpt9')) |
303 b'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5' |
202 self.hybridencode(b'data/con/p/pr/prn/a/au/aux/n/nu/nul', |
304 b'/x.lpt6/x.lpt7/x.lpt8/x.lpt9' |
203 b'data/co~6e/p/pr/pr~6e/a/au/au~78/n/nu/nu~6c') |
305 ), |
|
306 ) |
|
307 self.hybridencode( |
|
308 ( |
|
309 b'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/' |
|
310 b'lpt7x/lpt8x/lpt9x' |
|
311 ), |
|
312 ( |
|
313 b'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/' |
|
314 b'lpt7x/lpt8x/lpt9x' |
|
315 ), |
|
316 ) |
|
317 self.hybridencode( |
|
318 ( |
|
319 b'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/' |
|
320 b'xlpt7/xlpt8/xlpt9' |
|
321 ), |
|
322 ( |
|
323 b'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/' |
|
324 b'xlpt7/xlpt8/xlpt9' |
|
325 ), |
|
326 ) |
|
327 self.hybridencode( |
|
328 b'data/con/p/pr/prn/a/au/aux/n/nu/nul', |
|
329 b'data/co~6e/p/pr/pr~6e/a/au/au~78/n/nu/nu~6c', |
|
330 ) |
204 self.hybridencode( |
331 self.hybridencode( |
205 b'data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL', |
332 b'data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL', |
206 b'data/_c_o_n/_p/_p_r/_p_r_n/_a/_a_u/_a_u_x/_n/_n_u/_n_u_l') |
333 b'data/_c_o_n/_p/_p_r/_p_r_n/_a/_a_u/_a_u_x/_n/_n_u/_n_u_l', |
|
334 ) |
207 self.hybridencode( |
335 self.hybridencode( |
208 b'data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x', |
336 b'data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x', |
209 b'data/co~6e.x/p.x/pr.x/pr~6e.x/a.x/au.x/au~78.x/n.x/nu.x/nu~6c.x') |
337 b'data/co~6e.x/p.x/pr.x/pr~6e.x/a.x/au.x/au~78.x/n.x/nu.x/nu~6c.x', |
|
338 ) |
210 self.hybridencode( |
339 self.hybridencode( |
211 b'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul', |
340 b'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul', |
212 b'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul') |
341 b'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul', |
213 self.hybridencode(b'data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx', |
342 ) |
214 b'data/conx/px/prx/prnx/ax/au~78/auxx/nx/nux/nulx') |
343 self.hybridencode( |
215 self.hybridencode(b'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul', |
344 b'data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx', |
216 b'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul') |
345 b'data/conx/px/prx/prnx/ax/au~78/auxx/nx/nux/nulx', |
217 self.hybridencode(b'data/a./au./aux./auxy./aux.', |
346 ) |
218 b'data/a~2e/au~2e/au~78~2e/auxy~2e/au~78~2e') |
347 self.hybridencode( |
219 self.hybridencode(b'data/c./co./con./cony./con.', |
348 b'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul', |
220 b'data/c~2e/co~2e/co~6e~2e/cony~2e/co~6e~2e') |
349 b'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul', |
221 self.hybridencode(b'data/p./pr./prn./prny./prn.', |
350 ) |
222 b'data/p~2e/pr~2e/pr~6e~2e/prny~2e/pr~6e~2e') |
351 self.hybridencode( |
223 self.hybridencode(b'data/n./nu./nul./nuly./nul.', |
352 b'data/a./au./aux./auxy./aux.', |
224 b'data/n~2e/nu~2e/nu~6c~2e/nuly~2e/nu~6c~2e') |
353 b'data/a~2e/au~2e/au~78~2e/auxy~2e/au~78~2e', |
|
354 ) |
|
355 self.hybridencode( |
|
356 b'data/c./co./con./cony./con.', |
|
357 b'data/c~2e/co~2e/co~6e~2e/cony~2e/co~6e~2e', |
|
358 ) |
|
359 self.hybridencode( |
|
360 b'data/p./pr./prn./prny./prn.', |
|
361 b'data/p~2e/pr~2e/pr~6e~2e/prny~2e/pr~6e~2e', |
|
362 ) |
|
363 self.hybridencode( |
|
364 b'data/n./nu./nul./nuly./nul.', |
|
365 b'data/n~2e/nu~2e/nu~6c~2e/nuly~2e/nu~6c~2e', |
|
366 ) |
225 self.hybridencode( |
367 self.hybridencode( |
226 b'data/l./lp./lpt./lpt1./lpt1y./lpt1.', |
368 b'data/l./lp./lpt./lpt1./lpt1y./lpt1.', |
227 b'data/l~2e/lp~2e/lpt~2e/lp~741~2e/lpt1y~2e/lp~741~2e') |
369 b'data/l~2e/lp~2e/lpt~2e/lp~741~2e/lpt1y~2e/lp~741~2e', |
228 self.hybridencode(b'data/lpt9./lpt9y./lpt9.', |
370 ) |
229 b'data/lp~749~2e/lpt9y~2e/lp~749~2e') |
371 self.hybridencode( |
230 self.hybridencode(b'data/com./com1./com1y./com1.', |
372 b'data/lpt9./lpt9y./lpt9.', b'data/lp~749~2e/lpt9y~2e/lp~749~2e' |
231 b'data/com~2e/co~6d1~2e/com1y~2e/co~6d1~2e') |
373 ) |
232 self.hybridencode(b'data/com9./com9y./com9.', |
374 self.hybridencode( |
233 b'data/co~6d9~2e/com9y~2e/co~6d9~2e') |
375 b'data/com./com1./com1y./com1.', |
234 self.hybridencode(b'data/a /au /aux /auxy /aux ', |
376 b'data/com~2e/co~6d1~2e/com1y~2e/co~6d1~2e', |
235 b'data/a~20/au~20/aux~20/auxy~20/aux~20') |
377 ) |
|
378 self.hybridencode( |
|
379 b'data/com9./com9y./com9.', b'data/co~6d9~2e/com9y~2e/co~6d9~2e' |
|
380 ) |
|
381 self.hybridencode( |
|
382 b'data/a /au /aux /auxy /aux ', |
|
383 b'data/a~20/au~20/aux~20/auxy~20/aux~20', |
|
384 ) |
236 |
385 |
237 def testhashingboundarycases(self): |
386 def testhashingboundarycases(self): |
238 # largest unhashed path |
387 # largest unhashed path |
239 self.hybridencode( |
388 self.hybridencode( |
240 (b'data/123456789-123456789-123456789-123456789-123456789-unhashed' |
389 ( |
241 b'--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'), |
390 b'data/123456789-123456789-123456789-123456789-123456789-unhashed' |
242 (b'data/123456789-123456789-123456789-123456789-123456789-unhashed' |
391 b'--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345' |
243 b'--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345')) |
392 ), |
|
393 ( |
|
394 b'data/123456789-123456789-123456789-123456789-123456789-unhashed' |
|
395 b'--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345' |
|
396 ), |
|
397 ) |
244 # shortest hashed path |
398 # shortest hashed path |
245 self.hybridencode( |
399 self.hybridencode( |
246 (b'data/123456789-123456789-123456789-123456789-123456789-hashed' |
400 ( |
247 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
401 b'data/123456789-123456789-123456789-123456789-123456789-hashed' |
248 (b'dh/123456789-123456789-123456789-123456789-123456789-hashed---' |
402 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
249 b'-xxxxxxxxx-xxxxxxxe9c55002b50bf5181e7a6fc1f60b126e2a6fcf71')) |
403 ), |
|
404 ( |
|
405 b'dh/123456789-123456789-123456789-123456789-123456789-hashed---' |
|
406 b'-xxxxxxxxx-xxxxxxxe9c55002b50bf5181e7a6fc1f60b126e2a6fcf71' |
|
407 ), |
|
408 ) |
250 |
409 |
251 def testhashing(self): |
410 def testhashing(self): |
252 # changing one char in part that's hashed away produces a different hash |
411 # changing one char in part that's hashed away produces a different hash |
253 self.hybridencode( |
412 self.hybridencode( |
254 (b'data/123456789-123456789-123456789-123456789-123456789-hashed' |
413 ( |
255 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-123456789-123456'), |
414 b'data/123456789-123456789-123456789-123456789-123456789-hashed' |
256 (b'dh/123456789-123456789-123456789-123456789-123456789-hashed---' |
415 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-123456789-123456' |
257 b'-xxxxxxxxx-xxxxxxxd24fa4455faf8a94350c18e5eace7c2bb17af706')) |
416 ), |
|
417 ( |
|
418 b'dh/123456789-123456789-123456789-123456789-123456789-hashed---' |
|
419 b'-xxxxxxxxx-xxxxxxxd24fa4455faf8a94350c18e5eace7c2bb17af706' |
|
420 ), |
|
421 ) |
258 # uppercase hitting length limit due to encoding |
422 # uppercase hitting length limit due to encoding |
259 self.hybridencode( |
423 self.hybridencode( |
260 (b'data/A23456789-123456789-123456789-123456789-123456789-' |
424 ( |
261 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
425 b'data/A23456789-123456789-123456789-123456789-123456789-' |
262 b'123456789-12345'), |
426 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
263 (b'dh/a23456789-123456789-123456789-123456789-123456789-' |
427 b'123456789-12345' |
264 b'xxxxxxxxx-xxxxxxxxx-xxxxxxx' |
428 ), |
265 b'cbbc657029b41b94ed510d05feb6716a5c03bc6b')) |
429 ( |
266 self.hybridencode( |
430 b'dh/a23456789-123456789-123456789-123456789-123456789-' |
267 (b'data/Z23456789-123456789-123456789-123456789-123456789-' |
431 b'xxxxxxxxx-xxxxxxxxx-xxxxxxx' |
268 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
432 b'cbbc657029b41b94ed510d05feb6716a5c03bc6b' |
269 b'123456789-12345'), |
433 ), |
270 (b'dh/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx' |
434 ) |
271 b'-xxxxxxxxx-xxxxxxx938f32a725c89512833fb96b6602dd9ebff51ddd')) |
435 self.hybridencode( |
|
436 ( |
|
437 b'data/Z23456789-123456789-123456789-123456789-123456789-' |
|
438 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
|
439 b'123456789-12345' |
|
440 ), |
|
441 ( |
|
442 b'dh/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx' |
|
443 b'-xxxxxxxxx-xxxxxxx938f32a725c89512833fb96b6602dd9ebff51ddd' |
|
444 ), |
|
445 ) |
272 # compare with lowercase not hitting limit |
446 # compare with lowercase not hitting limit |
273 self.hybridencode( |
447 self.hybridencode( |
274 (b'data/a23456789-123456789-123456789-123456789-123456789-' |
448 ( |
275 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
449 b'data/a23456789-123456789-123456789-123456789-123456789-' |
276 b'12345'), |
450 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
277 (b'data/a23456789-123456789-123456789-123456789-123456789-' |
451 b'12345' |
278 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
452 ), |
279 b'12345')) |
453 ( |
280 self.hybridencode( |
454 b'data/a23456789-123456789-123456789-123456789-123456789-' |
281 (b'data/z23456789-123456789-123456789-123456789-123456789' |
455 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
282 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789' |
456 b'12345' |
283 b'-12345'), |
457 ), |
284 (b'data/z23456789-123456789-123456789-123456789-123456789' |
458 ) |
285 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
459 self.hybridencode( |
286 b'12345')) |
460 ( |
|
461 b'data/z23456789-123456789-123456789-123456789-123456789' |
|
462 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789' |
|
463 b'-12345' |
|
464 ), |
|
465 ( |
|
466 b'data/z23456789-123456789-123456789-123456789-123456789' |
|
467 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
|
468 b'12345' |
|
469 ), |
|
470 ) |
287 # not hitting limit with any of these |
471 # not hitting limit with any of these |
288 self.hybridencode( |
472 self.hybridencode( |
289 (b'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}' |
473 ( |
290 b'xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'), |
474 b'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}' |
291 (b'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}' |
475 b'xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345' |
292 b'xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345')) |
476 ), |
|
477 ( |
|
478 b'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}' |
|
479 b'xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345' |
|
480 ), |
|
481 ) |
293 # underbar hitting length limit due to encoding |
482 # underbar hitting length limit due to encoding |
294 self.hybridencode( |
483 self.hybridencode( |
295 (b'data/_23456789-123456789-123456789-123456789-123456789-' |
484 ( |
296 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
485 b'data/_23456789-123456789-123456789-123456789-123456789-' |
297 b'12345'), |
486 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
298 (b'dh/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-' |
487 b'12345' |
299 b'xxxxxxxxx-xxxxxxx9921a01af50feeabc060ce00eee4cba6efc31d2b')) |
488 ), |
|
489 ( |
|
490 b'dh/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-' |
|
491 b'xxxxxxxxx-xxxxxxx9921a01af50feeabc060ce00eee4cba6efc31d2b' |
|
492 ), |
|
493 ) |
300 |
494 |
301 # tilde hitting length limit due to encoding |
495 # tilde hitting length limit due to encoding |
302 self.hybridencode( |
496 self.hybridencode( |
303 (b'data/~23456789-123456789-123456789-123456789-123456789-' |
497 ( |
304 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
498 b'data/~23456789-123456789-123456789-123456789-123456789-' |
305 b'12345'), |
499 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
306 (b'dh/~7e23456789-123456789-123456789-123456789-123456789' |
500 b'12345' |
307 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
501 ), |
308 b'9cec6f97d569c10995f785720044ea2e4227481b')) |
502 ( |
|
503 b'dh/~7e23456789-123456789-123456789-123456789-123456789' |
|
504 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
505 b'9cec6f97d569c10995f785720044ea2e4227481b' |
|
506 ), |
|
507 ) |
309 |
508 |
310 def testwinreservedoverlimit(self): |
509 def testwinreservedoverlimit(self): |
311 # Windows reserved characters hitting length limit |
510 # Windows reserved characters hitting length limit |
312 self.hybridencode( |
511 self.hybridencode( |
313 (b'data/<23456789-123456789-123456789-123456789-123456789' |
512 ( |
314 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
513 b'data/<23456789-123456789-123456789-123456789-123456789' |
315 b'-123456789-12345'), |
514 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
316 (b'dh/~3c23456789-123456789-123456789-123456789-123456789' |
515 b'-123456789-12345' |
317 b'-xxxxxxxxx-xxxxxxxxx-xxxxxee' |
516 ), |
318 b'67d8f275876ca1ef2500fc542e63c885c4e62d')) |
517 ( |
319 self.hybridencode( |
518 b'dh/~3c23456789-123456789-123456789-123456789-123456789' |
320 (b'data/>23456789-123456789-123456789-123456789-123456789-' |
519 b'-xxxxxxxxx-xxxxxxxxx-xxxxxee' |
321 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
520 b'67d8f275876ca1ef2500fc542e63c885c4e62d' |
322 b'123456789-12345'), |
521 ), |
323 (b'dh/~3e23456789-123456789-123456789-123456789-123456789' |
522 ) |
324 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
523 self.hybridencode( |
325 b'387a85a5b1547cc9136310c974df716818458ddb')) |
524 ( |
326 self.hybridencode( |
525 b'data/>23456789-123456789-123456789-123456789-123456789-' |
327 (b'data/:23456789-123456789-123456789-123456789-123456789' |
526 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
328 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
527 b'123456789-12345' |
329 b'123456789-12345'), |
528 ), |
330 (b'dh/~3a23456789-123456789-123456789-123456789-123456789' |
529 ( |
331 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
530 b'dh/~3e23456789-123456789-123456789-123456789-123456789' |
332 b'2e4154fb571d13d22399c58cc4ef4858e4b75999')) |
531 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
333 self.hybridencode( |
532 b'387a85a5b1547cc9136310c974df716818458ddb' |
334 (b'data/"23456789-123456789-123456789-123456789-123456789' |
533 ), |
335 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
534 ) |
336 b'-123456789-12345'), |
535 self.hybridencode( |
337 (b'dh/~2223456789-123456789-123456789-123456789-123456789' |
536 ( |
338 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
537 b'data/:23456789-123456789-123456789-123456789-123456789' |
339 b'fc7e3ec7b0687ee06ed8c32fef0eb0c1980259f5')) |
538 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
340 self.hybridencode( |
539 b'123456789-12345' |
341 (b'data/\\23456789-123456789-123456789-123456789-123456789' |
540 ), |
342 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
541 ( |
343 b'123456789-12345'), |
542 b'dh/~3a23456789-123456789-123456789-123456789-123456789' |
344 (b'dh/~5c23456789-123456789-123456789-123456789-123456789' |
543 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
345 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
544 b'2e4154fb571d13d22399c58cc4ef4858e4b75999' |
346 b'944e1f2b7110687e116e0d151328ac648b06ab4a')) |
545 ), |
347 self.hybridencode( |
546 ) |
348 (b'data/|23456789-123456789-123456789-123456789-123456789' |
547 self.hybridencode( |
349 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
548 ( |
350 b'-123456789-12345'), |
549 b'data/"23456789-123456789-123456789-123456789-123456789' |
351 (b'dh/~7c23456789-123456789-123456789-123456789-123456789' |
550 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
352 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
551 b'-123456789-12345' |
353 b'28b23dd3fd0242946334126ab62bcd772aac32f4')) |
552 ), |
354 self.hybridencode( |
553 ( |
355 (b'data/?23456789-123456789-123456789-123456789-123456789' |
554 b'dh/~2223456789-123456789-123456789-123456789-123456789' |
356 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
555 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
357 b'-123456789-12345'), |
556 b'fc7e3ec7b0687ee06ed8c32fef0eb0c1980259f5' |
358 (b'dh/~3f23456789-123456789-123456789-123456789-123456789' |
557 ), |
359 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
558 ) |
360 b'a263022d3994d2143d98f94f431eef8b5e7e0f8a')) |
559 self.hybridencode( |
361 self.hybridencode( |
560 ( |
362 (b'data/*23456789-123456789-123456789-123456789-123456789' |
561 b'data/\\23456789-123456789-123456789-123456789-123456789' |
363 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
562 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
364 b'123456789-12345'), |
563 b'123456789-12345' |
365 (b'dh/~2a23456789-123456789-123456789-123456789-123456789' |
564 ), |
366 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
565 ( |
367 b'0e7e6020e3c00ba7bb7893d84ca2966fbf53e140')) |
566 b'dh/~5c23456789-123456789-123456789-123456789-123456789' |
|
567 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
568 b'944e1f2b7110687e116e0d151328ac648b06ab4a' |
|
569 ), |
|
570 ) |
|
571 self.hybridencode( |
|
572 ( |
|
573 b'data/|23456789-123456789-123456789-123456789-123456789' |
|
574 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
|
575 b'-123456789-12345' |
|
576 ), |
|
577 ( |
|
578 b'dh/~7c23456789-123456789-123456789-123456789-123456789' |
|
579 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
580 b'28b23dd3fd0242946334126ab62bcd772aac32f4' |
|
581 ), |
|
582 ) |
|
583 self.hybridencode( |
|
584 ( |
|
585 b'data/?23456789-123456789-123456789-123456789-123456789' |
|
586 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
|
587 b'-123456789-12345' |
|
588 ), |
|
589 ( |
|
590 b'dh/~3f23456789-123456789-123456789-123456789-123456789' |
|
591 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
592 b'a263022d3994d2143d98f94f431eef8b5e7e0f8a' |
|
593 ), |
|
594 ) |
|
595 self.hybridencode( |
|
596 ( |
|
597 b'data/*23456789-123456789-123456789-123456789-123456789' |
|
598 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
|
599 b'123456789-12345' |
|
600 ), |
|
601 ( |
|
602 b'dh/~2a23456789-123456789-123456789-123456789-123456789' |
|
603 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
604 b'0e7e6020e3c00ba7bb7893d84ca2966fbf53e140' |
|
605 ), |
|
606 ) |
368 |
607 |
369 def testinitialspacelenlimit(self): |
608 def testinitialspacelenlimit(self): |
370 # initial space hitting length limit |
609 # initial space hitting length limit |
371 self.hybridencode( |
610 self.hybridencode( |
372 (b'data/ 23456789-123456789-123456789-123456789-123456789' |
611 ( |
373 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
612 b'data/ 23456789-123456789-123456789-123456789-123456789' |
374 b'123456789-12345'), |
613 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
375 (b'dh/~2023456789-123456789-123456789-123456789-123456789' |
614 b'123456789-12345' |
376 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
615 ), |
377 b'92acbc78ef8c0b796111629a02601f07d8aec4ea')) |
616 ( |
|
617 b'dh/~2023456789-123456789-123456789-123456789-123456789' |
|
618 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
619 b'92acbc78ef8c0b796111629a02601f07d8aec4ea' |
|
620 ), |
|
621 ) |
378 |
622 |
379 def testinitialdotlenlimit(self): |
623 def testinitialdotlenlimit(self): |
380 # initial dot hitting length limit |
624 # initial dot hitting length limit |
381 self.hybridencode( |
625 self.hybridencode( |
382 (b'data/.23456789-123456789-123456789-123456789-123456789' |
626 ( |
383 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
627 b'data/.23456789-123456789-123456789-123456789-123456789' |
384 b'-123456789-12345'), |
628 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
385 (b'dh/~2e23456789-123456789-123456789-123456789-123456789' |
629 b'-123456789-12345' |
386 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
630 ), |
387 b'dbe19cc6505b3515ab9228cebf877ad07075168f')) |
631 ( |
|
632 b'dh/~2e23456789-123456789-123456789-123456789-123456789' |
|
633 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
634 b'dbe19cc6505b3515ab9228cebf877ad07075168f' |
|
635 ), |
|
636 ) |
388 |
637 |
389 def testtrailingspacelenlimit(self): |
638 def testtrailingspacelenlimit(self): |
390 # trailing space in filename hitting length limit |
639 # trailing space in filename hitting length limit |
391 self.hybridencode( |
640 self.hybridencode( |
392 (b'data/123456789-123456789-123456789-123456789-123456789' |
641 ( |
393 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
642 b'data/123456789-123456789-123456789-123456789-123456789' |
394 b'123456789-1234 '), |
643 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
395 (b'dh/123456789-123456789-123456789-123456789-123456789' |
644 b'123456789-1234 ' |
396 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxx' |
645 ), |
397 b'0025dc73e04f97426db4893e3bf67d581dc6d066')) |
646 ( |
|
647 b'dh/123456789-123456789-123456789-123456789-123456789' |
|
648 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxx' |
|
649 b'0025dc73e04f97426db4893e3bf67d581dc6d066' |
|
650 ), |
|
651 ) |
398 |
652 |
399 def testtrailingdotlenlimit(self): |
653 def testtrailingdotlenlimit(self): |
400 # trailing dot in filename hitting length limit |
654 # trailing dot in filename hitting length limit |
401 self.hybridencode( |
655 self.hybridencode( |
402 (b'data/123456789-123456789-123456789-123456789-123456789' |
656 ( |
403 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
657 b'data/123456789-123456789-123456789-123456789-123456789' |
404 b'1234.'), |
658 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
405 (b'dh/123456789-123456789-123456789-123456789-123456789' |
659 b'1234.' |
406 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxx' |
660 ), |
407 b'85a16cf03ee7feba8a5abc626f1ba9886d01e89d')) |
661 ( |
|
662 b'dh/123456789-123456789-123456789-123456789-123456789' |
|
663 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxx' |
|
664 b'85a16cf03ee7feba8a5abc626f1ba9886d01e89d' |
|
665 ), |
|
666 ) |
408 |
667 |
409 def testinitialspacedirlenlimit(self): |
668 def testinitialspacedirlenlimit(self): |
410 # initial space in directory hitting length limit |
669 # initial space in directory hitting length limit |
411 self.hybridencode( |
670 self.hybridencode( |
412 (b'data/ x/456789-123456789-123456789-123456789-123456789' |
671 ( |
413 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
672 b'data/ x/456789-123456789-123456789-123456789-123456789' |
414 b'-123456789-12345'), |
673 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
415 (b'dh/~20x/456789-123456789-123456789-123456789-123456789' |
674 b'-123456789-12345' |
416 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
675 ), |
417 b'1b3a3b712b2ac00d6af14ae8b4c14fdbf904f516')) |
676 ( |
|
677 b'dh/~20x/456789-123456789-123456789-123456789-123456789' |
|
678 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
679 b'1b3a3b712b2ac00d6af14ae8b4c14fdbf904f516' |
|
680 ), |
|
681 ) |
418 |
682 |
419 def testinitialdotdirlenlimit(self): |
683 def testinitialdotdirlenlimit(self): |
420 # initial dot in directory hitting length limit |
684 # initial dot in directory hitting length limit |
421 self.hybridencode( |
685 self.hybridencode( |
422 (b'data/.x/456789-123456789-123456789-123456789-123456789' |
686 ( |
423 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
687 b'data/.x/456789-123456789-123456789-123456789-123456789' |
424 b'-123456789-12345'), |
688 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
425 (b'dh/~2ex/456789-123456789-123456789-123456789-123456789' |
689 b'-123456789-12345' |
426 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
690 ), |
427 b'39dbc4c193a5643a8936fc69c3363cd7ac91ab14')) |
691 ( |
|
692 b'dh/~2ex/456789-123456789-123456789-123456789-123456789' |
|
693 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
694 b'39dbc4c193a5643a8936fc69c3363cd7ac91ab14' |
|
695 ), |
|
696 ) |
428 |
697 |
429 def testtrailspacedirlenlimit(self): |
698 def testtrailspacedirlenlimit(self): |
430 # trailing space in directory hitting length limit |
699 # trailing space in directory hitting length limit |
431 self.hybridencode( |
700 self.hybridencode( |
432 (b'data/x /456789-123456789-123456789-123456789-123456789' |
701 ( |
433 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
702 b'data/x /456789-123456789-123456789-123456789-123456789' |
434 b'-123456789-12345'), |
703 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
435 (b'dh/x~20/456789-123456789-123456789-123456789-123456789' |
704 b'-123456789-12345' |
436 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
705 ), |
437 b'2253c341df0b5290790ad312cd8499850f2273e5')) |
706 ( |
|
707 b'dh/x~20/456789-123456789-123456789-123456789-123456789' |
|
708 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
709 b'2253c341df0b5290790ad312cd8499850f2273e5' |
|
710 ), |
|
711 ) |
438 |
712 |
439 def testtrailingdotdirlenlimit(self): |
713 def testtrailingdotdirlenlimit(self): |
440 # trailing dot in directory hitting length limit |
714 # trailing dot in directory hitting length limit |
441 self.hybridencode( |
715 self.hybridencode( |
442 (b'data/x./456789-123456789-123456789-123456789-123456789' |
716 ( |
443 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
717 b'data/x./456789-123456789-123456789-123456789-123456789' |
444 b'123456789-12345'), |
718 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
445 (b'dh/x~2e/456789-123456789-123456789-123456789-123456789' |
719 b'123456789-12345' |
446 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
720 ), |
447 b'cc0324d696d34562b44b5138db08ee1594ccc583')) |
721 ( |
|
722 b'dh/x~2e/456789-123456789-123456789-123456789-123456789' |
|
723 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
724 b'cc0324d696d34562b44b5138db08ee1594ccc583' |
|
725 ), |
|
726 ) |
448 |
727 |
449 def testdirencodinglenlimit(self): |
728 def testdirencodinglenlimit(self): |
450 # with directories that need direncoding, hitting length limit |
729 # with directories that need direncoding, hitting length limit |
451 self.hybridencode( |
730 self.hybridencode( |
452 (b'data/x.i/56789-123456789-123456789-123456789-123456789' |
731 ( |
453 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
732 b'data/x.i/56789-123456789-123456789-123456789-123456789' |
454 b'12345'), |
733 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-' |
455 (b'dh/x.i.hg/56789-123456789-123456789-123456789-123456789' |
734 b'12345' |
456 b'-xxxxxxxxx-xxxxxxxxx-xxxx' |
735 ), |
457 b'a4c4399bdf81c67dbbbb7060aa0124d8dea94f74')) |
736 ( |
458 self.hybridencode( |
737 b'dh/x.i.hg/56789-123456789-123456789-123456789-123456789' |
459 (b'data/x.d/56789-123456789-123456789-123456789-123456789' |
738 b'-xxxxxxxxx-xxxxxxxxx-xxxx' |
460 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
739 b'a4c4399bdf81c67dbbbb7060aa0124d8dea94f74' |
461 b'-123456789-12345'), |
740 ), |
462 (b'dh/x.d.hg/56789-123456789-123456789-123456789-123456789' |
741 ) |
463 b'-xxxxxxxxx-xxxxxxxxx-xxxx' |
742 self.hybridencode( |
464 b'1303fa90473b230615f5b3ea7b660e881ae5270a')) |
743 ( |
465 self.hybridencode( |
744 b'data/x.d/56789-123456789-123456789-123456789-123456789' |
466 (b'data/x.hg/5789-123456789-123456789-123456789-123456789' |
745 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
467 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
746 b'-123456789-12345' |
468 b'-123456789-12345'), |
747 ), |
469 (b'dh/x.hg.hg/5789-123456789-123456789-123456789-123456789' |
748 ( |
470 b'-xxxxxxxxx-xxxxxxxxx-xxxx' |
749 b'dh/x.d.hg/56789-123456789-123456789-123456789-123456789' |
471 b'26d724a8af68e7a4e4455e6602ea9adbd0eb801f')) |
750 b'-xxxxxxxxx-xxxxxxxxx-xxxx' |
|
751 b'1303fa90473b230615f5b3ea7b660e881ae5270a' |
|
752 ), |
|
753 ) |
|
754 self.hybridencode( |
|
755 ( |
|
756 b'data/x.hg/5789-123456789-123456789-123456789-123456789' |
|
757 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
|
758 b'-123456789-12345' |
|
759 ), |
|
760 ( |
|
761 b'dh/x.hg.hg/5789-123456789-123456789-123456789-123456789' |
|
762 b'-xxxxxxxxx-xxxxxxxxx-xxxx' |
|
763 b'26d724a8af68e7a4e4455e6602ea9adbd0eb801f' |
|
764 ), |
|
765 ) |
472 |
766 |
473 def testwinreservedfilenameslimit(self): |
767 def testwinreservedfilenameslimit(self): |
474 # Windows reserved filenames, hitting length limit |
768 # Windows reserved filenames, hitting length limit |
475 self.hybridencode( |
769 self.hybridencode( |
476 (b'data/con/56789-123456789-123456789-123456789-123456789' |
770 ( |
477 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
771 b'data/con/56789-123456789-123456789-123456789-123456789' |
478 b'123456789-12345'), |
772 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
479 (b'dh/co~6e/56789-123456789-123456789-123456789-123456789' |
773 b'123456789-12345' |
480 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
774 ), |
481 b'c0794d4f4c605a2617900eb2563d7113cf6ea7d3')) |
775 ( |
482 self.hybridencode( |
776 b'dh/co~6e/56789-123456789-123456789-123456789-123456789' |
483 (b'data/prn/56789-123456789-123456789-123456789-123456789' |
777 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
484 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
778 b'c0794d4f4c605a2617900eb2563d7113cf6ea7d3' |
485 b'-123456789-12345'), |
779 ), |
486 (b'dh/pr~6e/56789-123456789-123456789-123456789-123456789' |
780 ) |
487 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
781 self.hybridencode( |
488 b'64db876e1a9730e27236cb9b167aff942240e932')) |
782 ( |
489 self.hybridencode( |
783 b'data/prn/56789-123456789-123456789-123456789-123456789' |
490 (b'data/aux/56789-123456789-123456789-123456789-123456789' |
784 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
491 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
785 b'-123456789-12345' |
492 b'-123456789-12345'), |
786 ), |
493 (b'dh/au~78/56789-123456789-123456789-123456789-123456789' |
787 ( |
494 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
788 b'dh/pr~6e/56789-123456789-123456789-123456789-123456789' |
495 b'8a178558405ca6fb4bbd75446dfa186f06751a0d')) |
789 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
496 self.hybridencode( |
790 b'64db876e1a9730e27236cb9b167aff942240e932' |
497 (b'data/nul/56789-123456789-123456789-123456789-123456789' |
791 ), |
498 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
792 ) |
499 b'-123456789-12345'), |
793 self.hybridencode( |
500 (b'dh/nu~6c/56789-123456789-123456789-123456789-123456789' |
794 ( |
501 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
795 b'data/aux/56789-123456789-123456789-123456789-123456789' |
502 b'c5e51b6fec1bd07bd243b053a0c3f7209855b886')) |
796 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
503 self.hybridencode( |
797 b'-123456789-12345' |
504 (b'data/com1/6789-123456789-123456789-123456789-123456789' |
798 ), |
505 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
799 ( |
506 b'-123456789-12345'), |
800 b'dh/au~78/56789-123456789-123456789-123456789-123456789' |
507 (b'dh/co~6d1/6789-123456789-123456789-123456789-123456789' |
801 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
508 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
802 b'8a178558405ca6fb4bbd75446dfa186f06751a0d' |
509 b'32f5f44ece3bb62b9327369ca84cc19c86259fcd')) |
803 ), |
510 self.hybridencode( |
804 ) |
511 (b'data/com9/6789-123456789-123456789-123456789-123456789' |
805 self.hybridencode( |
512 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
806 ( |
513 b'-123456789-12345'), |
807 b'data/nul/56789-123456789-123456789-123456789-123456789' |
514 (b'dh/co~6d9/6789-123456789-123456789-123456789-123456789' |
808 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
515 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
809 b'-123456789-12345' |
516 b'734360b28c66a3230f55849fe8926206d229f990')) |
810 ), |
517 self.hybridencode( |
811 ( |
518 (b'data/lpt1/6789-123456789-123456789-123456789-123456789' |
812 b'dh/nu~6c/56789-123456789-123456789-123456789-123456789' |
519 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
813 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
520 b'-123456789-12345'), |
814 b'c5e51b6fec1bd07bd243b053a0c3f7209855b886' |
521 (b'dh/lp~741/6789-123456789-123456789-123456789-123456789' |
815 ), |
522 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
816 ) |
523 b'e6f16ab4b6b0637676b2842b3345c9836df46ef7')) |
817 self.hybridencode( |
524 self.hybridencode( |
818 ( |
525 (b'data/lpt9/6789-123456789-123456789-123456789-123456789' |
819 b'data/com1/6789-123456789-123456789-123456789-123456789' |
526 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
820 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
527 b'-123456789-12345'), |
821 b'-123456789-12345' |
528 (b'dh/lp~749/6789-123456789-123456789-123456789-123456789' |
822 ), |
529 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
823 ( |
530 b'a475814c51acead3e44f2ff801f0c4903f986157')) |
824 b'dh/co~6d1/6789-123456789-123456789-123456789-123456789' |
|
825 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
826 b'32f5f44ece3bb62b9327369ca84cc19c86259fcd' |
|
827 ), |
|
828 ) |
|
829 self.hybridencode( |
|
830 ( |
|
831 b'data/com9/6789-123456789-123456789-123456789-123456789' |
|
832 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
|
833 b'-123456789-12345' |
|
834 ), |
|
835 ( |
|
836 b'dh/co~6d9/6789-123456789-123456789-123456789-123456789' |
|
837 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
838 b'734360b28c66a3230f55849fe8926206d229f990' |
|
839 ), |
|
840 ) |
|
841 self.hybridencode( |
|
842 ( |
|
843 b'data/lpt1/6789-123456789-123456789-123456789-123456789' |
|
844 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
|
845 b'-123456789-12345' |
|
846 ), |
|
847 ( |
|
848 b'dh/lp~741/6789-123456789-123456789-123456789-123456789' |
|
849 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
850 b'e6f16ab4b6b0637676b2842b3345c9836df46ef7' |
|
851 ), |
|
852 ) |
|
853 self.hybridencode( |
|
854 ( |
|
855 b'data/lpt9/6789-123456789-123456789-123456789-123456789' |
|
856 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
|
857 b'-123456789-12345' |
|
858 ), |
|
859 ( |
|
860 b'dh/lp~749/6789-123456789-123456789-123456789-123456789' |
|
861 b'-xxxxxxxxx-xxxxxxxxx-xxxxx' |
|
862 b'a475814c51acead3e44f2ff801f0c4903f986157' |
|
863 ), |
|
864 ) |
531 |
865 |
532 def testnonreservednolimit(self): |
866 def testnonreservednolimit(self): |
533 # non-reserved names, just not hitting limit |
867 # non-reserved names, just not hitting limit |
534 self.hybridencode( |
868 self.hybridencode( |
535 (b'data/123456789-123456789-123456789-123456789-123456789-' |
869 ( |
536 b'/com/com0/lpt/lpt0/' |
870 b'data/123456789-123456789-123456789-123456789-123456789-' |
537 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'), |
871 b'/com/com0/lpt/lpt0/' |
538 (b'data/123456789-123456789-123456789-123456789-123456789-' |
872 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345' |
539 b'/com/com0/lpt/lpt0/' |
873 ), |
540 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345')) |
874 ( |
|
875 b'data/123456789-123456789-123456789-123456789-123456789-' |
|
876 b'/com/com0/lpt/lpt0/' |
|
877 b'-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345' |
|
878 ), |
|
879 ) |
541 |
880 |
542 def testhashedpathuntrucfirst(self): |
881 def testhashedpathuntrucfirst(self): |
543 # hashed path with largest untruncated 1st dir |
882 # hashed path with largest untruncated 1st dir |
544 self.hybridencode( |
883 self.hybridencode( |
545 (b'data/12345678/-123456789-123456789-123456789-123456789-hashed' |
884 ( |
546 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
885 b'data/12345678/-123456789-123456789-123456789-123456789-hashed' |
547 (b'dh/12345678/-123456789-123456789-123456789-123456789-hashed' |
886 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
548 b'----xxxxxxxxx-xxxxxxx4e9e9e384d00929a93b6835fbf976eb32321ff3c')) |
887 ), |
|
888 ( |
|
889 b'dh/12345678/-123456789-123456789-123456789-123456789-hashed' |
|
890 b'----xxxxxxxxx-xxxxxxx4e9e9e384d00929a93b6835fbf976eb32321ff3c' |
|
891 ), |
|
892 ) |
549 |
893 |
550 def testhashedpathsmallesttrucdir(self): |
894 def testhashedpathsmallesttrucdir(self): |
551 # hashed path with smallest truncated 1st dir |
895 # hashed path with smallest truncated 1st dir |
552 self.hybridencode( |
896 self.hybridencode( |
553 (b'data/123456789/123456789-123456789-123456789-123456789-hashed' |
897 ( |
554 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
898 b'data/123456789/123456789-123456789-123456789-123456789-hashed' |
555 (b'dh/12345678/123456789-123456789-123456789-123456789-hashed' |
899 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
556 b'----xxxxxxxxx-xxxxxxxx1f4e4ec5f2be76e109bfaa8e31c062fe426d5490')) |
900 ), |
|
901 ( |
|
902 b'dh/12345678/123456789-123456789-123456789-123456789-hashed' |
|
903 b'----xxxxxxxxx-xxxxxxxx1f4e4ec5f2be76e109bfaa8e31c062fe426d5490' |
|
904 ), |
|
905 ) |
557 |
906 |
558 def testhashedlargesttwountruc(self): |
907 def testhashedlargesttwountruc(self): |
559 # hashed path with largest untruncated two dirs |
908 # hashed path with largest untruncated two dirs |
560 self.hybridencode( |
909 self.hybridencode( |
561 (b'data/12345678/12345678/9-123456789-123456789-123456789-hashed' |
910 ( |
562 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
911 b'data/12345678/12345678/9-123456789-123456789-123456789-hashed' |
563 (b'dh/12345678/12345678/9-123456789-123456789-123456789-hashed' |
912 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
564 b'----xxxxxxxxx-xxxxxxx3332d8329d969cf835542a9f2cbcfb385b6cf39d')) |
913 ), |
|
914 ( |
|
915 b'dh/12345678/12345678/9-123456789-123456789-123456789-hashed' |
|
916 b'----xxxxxxxxx-xxxxxxx3332d8329d969cf835542a9f2cbcfb385b6cf39d' |
|
917 ), |
|
918 ) |
565 |
919 |
566 def testhashedpathsmallesttrunctwodirs(self): |
920 def testhashedpathsmallesttrunctwodirs(self): |
567 # hashed path with smallest truncated two dirs |
921 # hashed path with smallest truncated two dirs |
568 self.hybridencode( |
922 self.hybridencode( |
569 (b'data/123456789/123456789/123456789-123456789-123456789-hashed' |
923 ( |
570 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
924 b'data/123456789/123456789/123456789-123456789-123456789-hashed' |
571 (b'dh/12345678/12345678/123456789-123456789-123456789-hashed' |
925 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
572 b'----xxxxxxxxx-xxxxxxxxx' |
926 ), |
573 b'9699559798247dffa18717138859be5f8874840e')) |
927 ( |
|
928 b'dh/12345678/12345678/123456789-123456789-123456789-hashed' |
|
929 b'----xxxxxxxxx-xxxxxxxxx' |
|
930 b'9699559798247dffa18717138859be5f8874840e' |
|
931 ), |
|
932 ) |
574 |
933 |
575 def testhashuntruncthree(self): |
934 def testhashuntruncthree(self): |
576 # hashed path with largest untruncated three dirs |
935 # hashed path with largest untruncated three dirs |
577 self.hybridencode( |
936 self.hybridencode( |
578 (b'data/12345678/12345678/12345678/89-123456789-123456789-' |
937 ( |
579 b'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
938 b'data/12345678/12345678/12345678/89-123456789-123456789-' |
580 b'123456789-123456'), |
939 b'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
581 (b'dh/12345678/12345678/12345678/89-123456789-123456789-hashed' |
940 b'123456789-123456' |
582 b'----xxxxxxxxx-xxxxxxxf0a2b053bb1369cce02f78c217d6a7aaea18c439')) |
941 ), |
|
942 ( |
|
943 b'dh/12345678/12345678/12345678/89-123456789-123456789-hashed' |
|
944 b'----xxxxxxxxx-xxxxxxxf0a2b053bb1369cce02f78c217d6a7aaea18c439' |
|
945 ), |
|
946 ) |
583 |
947 |
584 def testhashtruncthree(self): |
948 def testhashtruncthree(self): |
585 # hashed path with smallest truncated three dirs |
949 # hashed path with smallest truncated three dirs |
586 self.hybridencode( |
950 self.hybridencode( |
587 (b'data/123456789/123456789/123456789/123456789-123456789-hashed' |
951 ( |
588 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
952 b'data/123456789/123456789/123456789/123456789-123456789-hashed' |
589 (b'dh/12345678/12345678/12345678/123456789-123456789-hashed' |
953 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
590 b'----xxxxxxxxx-xxxxxxxxx-' |
954 ), |
591 b'1c6f8284967384ec13985a046d3553179d9d03cd')) |
955 ( |
|
956 b'dh/12345678/12345678/12345678/123456789-123456789-hashed' |
|
957 b'----xxxxxxxxx-xxxxxxxxx-' |
|
958 b'1c6f8284967384ec13985a046d3553179d9d03cd' |
|
959 ), |
|
960 ) |
592 |
961 |
593 def testhashuntrucfour(self): |
962 def testhashuntrucfour(self): |
594 # hashed path with largest untruncated four dirs |
963 # hashed path with largest untruncated four dirs |
595 self.hybridencode( |
964 self.hybridencode( |
596 (b'data/12345678/12345678/12345678/12345678/789-123456789-hashed' |
965 ( |
597 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
966 b'data/12345678/12345678/12345678/12345678/789-123456789-hashed' |
598 (b'dh/12345678/12345678/12345678/12345678/789-123456789-hashed' |
967 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
599 b'----xxxxxxxxx-xxxxxxx0d30c99049d8f0ff97b94d4ef302027e8d54c6fd')) |
968 ), |
|
969 ( |
|
970 b'dh/12345678/12345678/12345678/12345678/789-123456789-hashed' |
|
971 b'----xxxxxxxxx-xxxxxxx0d30c99049d8f0ff97b94d4ef302027e8d54c6fd' |
|
972 ), |
|
973 ) |
600 |
974 |
601 def testhashtruncfour(self): |
975 def testhashtruncfour(self): |
602 # hashed path with smallest truncated four dirs |
976 # hashed path with smallest truncated four dirs |
603 self.hybridencode( |
977 self.hybridencode( |
604 (b'data/123456789/123456789/123456789/123456789/123456789-hashed' |
978 ( |
605 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
979 b'data/123456789/123456789/123456789/123456789/123456789-hashed' |
606 (b'dh/12345678/12345678/12345678/12345678/123456789-hashed' |
980 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
607 b'----xxxxxxxxx-xxxxxxxxx-x' |
981 ), |
608 b'46162779e1a771810b37a737f82ae7ed33771402')) |
982 ( |
|
983 b'dh/12345678/12345678/12345678/12345678/123456789-hashed' |
|
984 b'----xxxxxxxxx-xxxxxxxxx-x' |
|
985 b'46162779e1a771810b37a737f82ae7ed33771402' |
|
986 ), |
|
987 ) |
609 |
988 |
610 def testhashuntruncfive(self): |
989 def testhashuntruncfive(self): |
611 # hashed path with largest untruncated five dirs |
990 # hashed path with largest untruncated five dirs |
612 self.hybridencode( |
991 self.hybridencode( |
613 (b'data/12345678/12345678/12345678/12345678/12345678/6789-hashed' |
992 ( |
614 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
993 b'data/12345678/12345678/12345678/12345678/12345678/6789-hashed' |
615 (b'dh/12345678/12345678/12345678/12345678/12345678/6789-hashed' |
994 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
616 b'----xxxxxxxxx-xxxxxxxbfe752ddc8b003c2790c66a9f2eb1ea75c114390')) |
995 ), |
|
996 ( |
|
997 b'dh/12345678/12345678/12345678/12345678/12345678/6789-hashed' |
|
998 b'----xxxxxxxxx-xxxxxxxbfe752ddc8b003c2790c66a9f2eb1ea75c114390' |
|
999 ), |
|
1000 ) |
617 |
1001 |
618 def testhashtruncfive(self): |
1002 def testhashtruncfive(self): |
619 # hashed path with smallest truncated five dirs |
1003 # hashed path with smallest truncated five dirs |
620 self.hybridencode( |
1004 self.hybridencode( |
621 (b'data/123456789/123456789/123456789/123456789/123456789/hashed' |
1005 ( |
622 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1006 b'data/123456789/123456789/123456789/123456789/123456789/hashed' |
623 (b'dh/12345678/12345678/12345678/12345678/12345678/hashed' |
1007 b'----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
624 b'----xxxxxxxxx-xxxxxxxxx-xx' |
1008 ), |
625 b'b94c27b3532fa880cdd572b1c514785cab7b6ff2')) |
1009 ( |
|
1010 b'dh/12345678/12345678/12345678/12345678/12345678/hashed' |
|
1011 b'----xxxxxxxxx-xxxxxxxxx-xx' |
|
1012 b'b94c27b3532fa880cdd572b1c514785cab7b6ff2' |
|
1013 ), |
|
1014 ) |
626 |
1015 |
627 def testhashuntruncsix(self): |
1016 def testhashuntruncsix(self): |
628 # hashed path with largest untruncated six dirs |
1017 # hashed path with largest untruncated six dirs |
629 self.hybridencode( |
1018 self.hybridencode( |
630 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1019 ( |
631 b'ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1020 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
632 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/' |
1021 b'ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
633 b'ed----xxxxxxxxx-xxxxxxx' |
1022 ), |
634 b'cd8cc5483a0f3be409e0e5d4bf9e36e113c59235')) |
1023 ( |
|
1024 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1025 b'ed----xxxxxxxxx-xxxxxxx' |
|
1026 b'cd8cc5483a0f3be409e0e5d4bf9e36e113c59235' |
|
1027 ), |
|
1028 ) |
635 |
1029 |
636 def testhashtruncsix(self): |
1030 def testhashtruncsix(self): |
637 # hashed path with smallest truncated six dirs |
1031 # hashed path with smallest truncated six dirs |
638 self.hybridencode( |
1032 self.hybridencode( |
639 (b'data/123456789/123456789/123456789/123456789/123456789/' |
1033 ( |
640 b'123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
1034 b'data/123456789/123456789/123456789/123456789/123456789/' |
641 b'123456789-123456'), |
1035 b'123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
642 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/' |
1036 b'123456789-123456' |
643 b'xxxxxxxxx-xxxxxxxxx-xxx' |
1037 ), |
644 b'47dd6f616f833a142da00701b334cebbf640da06')) |
1038 ( |
|
1039 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1040 b'xxxxxxxxx-xxxxxxxxx-xxx' |
|
1041 b'47dd6f616f833a142da00701b334cebbf640da06' |
|
1042 ), |
|
1043 ) |
645 |
1044 |
646 def testhashuntrunc7(self): |
1045 def testhashuntrunc7(self): |
647 # hashed path with largest untruncated seven dirs |
1046 # hashed path with largest untruncated seven dirs |
648 self.hybridencode( |
1047 self.hybridencode( |
649 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1048 ( |
650 b'/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
1049 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
651 b'123456789-123456'), |
1050 b'/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
652 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1051 b'123456789-123456' |
653 b'/12345678/xxxxxx-xxxxxxx' |
1052 ), |
654 b'1c8ed635229fc22efe51035feeadeb4c8a0ecb82')) |
1053 ( |
|
1054 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1055 b'/12345678/xxxxxx-xxxxxxx' |
|
1056 b'1c8ed635229fc22efe51035feeadeb4c8a0ecb82' |
|
1057 ), |
|
1058 ) |
655 |
1059 |
656 def testhashtrunc7(self): |
1060 def testhashtrunc7(self): |
657 # hashed path with smallest truncated seven dirs |
1061 # hashed path with smallest truncated seven dirs |
658 self.hybridencode( |
1062 self.hybridencode( |
659 (b'data/123456789/123456789/123456789/123456789/123456789/' |
1063 ( |
660 b'123456789/123456789/' |
1064 b'data/123456789/123456789/123456789/123456789/123456789/' |
661 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1065 b'123456789/123456789/' |
662 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/123' |
1066 b'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
663 b'45678/xxxxxxxxx-xxxx298ff7d33f8ce6db57930837ffea2fb2f48bb926')) |
1067 ), |
|
1068 ( |
|
1069 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/123' |
|
1070 b'45678/xxxxxxxxx-xxxx298ff7d33f8ce6db57930837ffea2fb2f48bb926' |
|
1071 ), |
|
1072 ) |
664 |
1073 |
665 def testhashuntrunc8(self): |
1074 def testhashuntrunc8(self): |
666 # hashed path with largest untruncated eight dirs |
1075 # hashed path with largest untruncated eight dirs |
667 # (directory 8 is dropped because it hits _maxshortdirslen) |
1076 # (directory 8 is dropped because it hits _maxshortdirslen) |
668 self.hybridencode( |
1077 self.hybridencode( |
669 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1078 ( |
670 b'12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1079 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
671 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1' |
1080 b'12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
672 b'2345678/xxxxxxx-xxxxxxc8996ccd41b471f768057181a4d59d2febe7277d')) |
1081 ), |
|
1082 ( |
|
1083 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1' |
|
1084 b'2345678/xxxxxxx-xxxxxxc8996ccd41b471f768057181a4d59d2febe7277d' |
|
1085 ), |
|
1086 ) |
673 |
1087 |
674 def testhashtrunc8(self): |
1088 def testhashtrunc8(self): |
675 # hashed path with smallest truncated eight dirs |
1089 # hashed path with smallest truncated eight dirs |
676 # (directory 8 is dropped because it hits _maxshortdirslen) |
1090 # (directory 8 is dropped because it hits _maxshortdirslen) |
677 self.hybridencode( |
1091 self.hybridencode( |
678 (b'data/123456789/123456789/123456789/123456789/123456789/' |
1092 ( |
679 b'123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-' |
1093 b'data/123456789/123456789/123456789/123456789/123456789/' |
680 b'123456789-123456'), |
1094 b'123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-' |
681 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1095 b'123456789-123456' |
682 b'/12345678/xxxxxxxxx-xxxx' |
1096 ), |
683 b'4fa04a839a6bda93e1c21c713f2edcbd16e8890d')) |
1097 ( |
|
1098 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1099 b'/12345678/xxxxxxxxx-xxxx' |
|
1100 b'4fa04a839a6bda93e1c21c713f2edcbd16e8890d' |
|
1101 ), |
|
1102 ) |
684 |
1103 |
685 def testhashnondropped8(self): |
1104 def testhashnondropped8(self): |
686 # hashed path with largest non-dropped directory 8 |
1105 # hashed path with largest non-dropped directory 8 |
687 # (just not hitting the _maxshortdirslen boundary) |
1106 # (just not hitting the _maxshortdirslen boundary) |
688 self.hybridencode( |
1107 self.hybridencode( |
689 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1108 ( |
690 b'/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789' |
1109 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
691 b'-123456'), |
1110 b'/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789' |
692 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1111 b'-123456' |
693 b'/12345678/12345/-xxxxxxx' |
1112 ), |
694 b'4d43d1ccaa20efbfe99ec779dc063611536ff2c5')) |
1113 ( |
|
1114 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1115 b'/12345678/12345/-xxxxxxx' |
|
1116 b'4d43d1ccaa20efbfe99ec779dc063611536ff2c5' |
|
1117 ), |
|
1118 ) |
695 # ...adding one truncated char to dir 1..7 won't drop dir 8 |
1119 # ...adding one truncated char to dir 1..7 won't drop dir 8 |
696 self.hybridencode( |
1120 self.hybridencode( |
697 (b'data/12345678x/12345678/12345678/12345678/12345678/12345678' |
1121 ( |
698 b'/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1122 b'data/12345678x/12345678/12345678/12345678/12345678/12345678' |
699 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
1123 b'/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
700 b'5678/12345/xxxxxxxx0f9efce65189cc60fd90fe4ffd49d7b58bbe0f2e')) |
1124 ), |
701 self.hybridencode( |
1125 ( |
702 (b'data/12345678/12345678x/12345678/12345678/12345678/12345678' |
1126 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
703 b'/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1127 b'5678/12345/xxxxxxxx0f9efce65189cc60fd90fe4ffd49d7b58bbe0f2e' |
704 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
1128 ), |
705 b'5678/12345/xxxxxxxx945ca395708cafdd54a94501859beabd3e243921')) |
1129 ) |
706 self.hybridencode( |
1130 self.hybridencode( |
707 (b'data/12345678/12345678/12345678x/12345678/12345678/12345678/12' |
1131 ( |
708 b'345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1132 b'data/12345678/12345678x/12345678/12345678/12345678/12345678' |
709 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
1133 b'/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
710 b'5678/12345/xxxxxxxxac62bf6898c4fd0502146074547c11caa751a327')) |
1134 ), |
711 self.hybridencode( |
1135 ( |
712 (b'data/12345678/12345678/12345678/12345678x/12345678/12345678/12' |
1136 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
713 b'345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1137 b'5678/12345/xxxxxxxx945ca395708cafdd54a94501859beabd3e243921' |
714 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
1138 ), |
715 b'5678/12345/xxxxxxxx2ae5a2baed7983fae8974d0ca06c6bf08b9aee92')) |
1139 ) |
716 self.hybridencode( |
1140 self.hybridencode( |
717 (b'data/12345678/12345678/12345678/12345678/12345678x/12345678/' |
1141 ( |
718 b'12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1142 b'data/12345678/12345678/12345678x/12345678/12345678/12345678/12' |
719 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
1143 b'345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
720 b'5678/12345/xxxxxxxx214aba07b6687532a43d1e9eaf6e88cfca96b68c')) |
1144 ), |
721 self.hybridencode( |
1145 ( |
722 (b'data/12345678/12345678/12345678/12345678/12345678/12345678x' |
1146 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
723 b'/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1147 b'5678/12345/xxxxxxxxac62bf6898c4fd0502146074547c11caa751a327' |
724 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
1148 ), |
725 b'5678/12345/xxxxxxxxe7a022ae82f0f55cf4e0498e55ba59ea4ebb55bf')) |
1149 ) |
726 self.hybridencode( |
1150 self.hybridencode( |
727 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1151 ( |
728 b'12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1152 b'data/12345678/12345678/12345678/12345678x/12345678/12345678/12' |
729 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345' |
1153 b'345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
730 b'678/12345/xxxxxxxxb51ce61164996a80f36ce3cfe64b62d519aedae3')) |
1154 ), |
|
1155 ( |
|
1156 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
|
1157 b'5678/12345/xxxxxxxx2ae5a2baed7983fae8974d0ca06c6bf08b9aee92' |
|
1158 ), |
|
1159 ) |
|
1160 self.hybridencode( |
|
1161 ( |
|
1162 b'data/12345678/12345678/12345678/12345678/12345678x/12345678/' |
|
1163 b'12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
|
1164 ), |
|
1165 ( |
|
1166 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
|
1167 b'5678/12345/xxxxxxxx214aba07b6687532a43d1e9eaf6e88cfca96b68c' |
|
1168 ), |
|
1169 ) |
|
1170 self.hybridencode( |
|
1171 ( |
|
1172 b'data/12345678/12345678/12345678/12345678/12345678/12345678x' |
|
1173 b'/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
|
1174 ), |
|
1175 ( |
|
1176 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/1234' |
|
1177 b'5678/12345/xxxxxxxxe7a022ae82f0f55cf4e0498e55ba59ea4ebb55bf' |
|
1178 ), |
|
1179 ) |
|
1180 self.hybridencode( |
|
1181 ( |
|
1182 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1183 b'12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
|
1184 ), |
|
1185 ( |
|
1186 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345' |
|
1187 b'678/12345/xxxxxxxxb51ce61164996a80f36ce3cfe64b62d519aedae3' |
|
1188 ), |
|
1189 ) |
731 |
1190 |
732 def testhashedpathshortestdropped8(self): |
1191 def testhashedpathshortestdropped8(self): |
733 # hashed path with shortest dropped directory 8 |
1192 # hashed path with shortest dropped directory 8 |
734 # (just hitting the _maxshortdirslen boundary) |
1193 # (just hitting the _maxshortdirslen boundary) |
735 self.hybridencode( |
1194 self.hybridencode( |
736 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1195 ( |
737 b'/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
1196 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
738 b'123456789-123456'), |
1197 b'/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
739 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1198 b'123456789-123456' |
740 b'/12345678/xxxxxxxxx-xxxx' |
1199 ), |
741 b'11fa9873cc6c3215eae864528b5530a04efc6cfe')) |
1200 ( |
|
1201 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1202 b'/12345678/xxxxxxxxx-xxxx' |
|
1203 b'11fa9873cc6c3215eae864528b5530a04efc6cfe' |
|
1204 ), |
|
1205 ) |
742 |
1206 |
743 def testhashedpathdropsdir8fortrailingdotspace(self): |
1207 def testhashedpathdropsdir8fortrailingdotspace(self): |
744 # hashed path that drops dir 8 due to dot or space at end is |
1208 # hashed path that drops dir 8 due to dot or space at end is |
745 # encoded, and thus causing to hit _maxshortdirslen |
1209 # encoded, and thus causing to hit _maxshortdirslen |
746 self.hybridencode( |
1210 self.hybridencode( |
747 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1211 ( |
748 b'/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
1212 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
749 b'123456789-123456'), |
1213 b'/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
750 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1214 b'123456789-123456' |
751 b'/12345678/-xxxxxxxxx-xxx' |
1215 ), |
752 b'602df9b45bec564e2e1f0645d5140dddcc76ed58')) |
1216 ( |
753 self.hybridencode( |
1217 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
754 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1218 b'/12345678/-xxxxxxxxx-xxx' |
755 b'/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
1219 b'602df9b45bec564e2e1f0645d5140dddcc76ed58' |
756 b'123456789-123456'), |
1220 ), |
757 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1221 ) |
758 b'/12345678/-xxxxxxxxx-xxx' |
1222 self.hybridencode( |
759 b'd99ff212bc84b4d1f70cd6b0071e3ef69d4e12ce')) |
1223 ( |
|
1224 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1225 b'/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-' |
|
1226 b'123456789-123456' |
|
1227 ), |
|
1228 ( |
|
1229 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1230 b'/12345678/-xxxxxxxxx-xxx' |
|
1231 b'd99ff212bc84b4d1f70cd6b0071e3ef69d4e12ce' |
|
1232 ), |
|
1233 ) |
760 # ... with dir 8 short enough for encoding |
1234 # ... with dir 8 short enough for encoding |
761 self.hybridencode( |
1235 self.hybridencode( |
762 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1236 ( |
763 b'/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
1237 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
764 b'-123456789-123456'), |
1238 b'/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx' |
765 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1239 b'-123456789-123456' |
766 b'/12345678/12~2e/' |
1240 ), |
767 b'xx-xxxxx7baeb5ed7f14a586ee1cacecdbcbff70032d1b3c')) |
1241 ( |
768 self.hybridencode( |
1242 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
769 (b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
1243 b'/12345678/12~2e/' |
770 b'/12345678/12 ' |
1244 b'xx-xxxxx7baeb5ed7f14a586ee1cacecdbcbff70032d1b3c' |
771 b'/xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'), |
1245 ), |
772 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
1246 ) |
773 b'/12345678/12~20/' |
1247 self.hybridencode( |
774 b'xx-xxxxxcf79ca9795f77d7f75745da36807e5d772bd5182')) |
1248 ( |
|
1249 b'data/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1250 b'/12345678/12 ' |
|
1251 b'/xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456' |
|
1252 ), |
|
1253 ( |
|
1254 b'dh/12345678/12345678/12345678/12345678/12345678/12345678' |
|
1255 b'/12345678/12~20/' |
|
1256 b'xx-xxxxxcf79ca9795f77d7f75745da36807e5d772bd5182' |
|
1257 ), |
|
1258 ) |
775 |
1259 |
776 def testextensionsreplicatedonhashedpaths(self): |
1260 def testextensionsreplicatedonhashedpaths(self): |
777 # Extensions are replicated on hashed paths. Note that |
1261 # Extensions are replicated on hashed paths. Note that |
778 # we only get to encode files that end in .i or .d inside the |
1262 # we only get to encode files that end in .i or .d inside the |
779 # store. Encoded filenames are thus bound in length. |
1263 # store. Encoded filenames are thus bound in length. |
780 self.hybridencode( |
1264 self.hybridencode( |
781 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1265 ( |
782 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1266 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
783 b'45.i'), |
1267 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
784 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1268 b'45.i' |
785 b'345678/12345/-xxxxxc10ad03b5755ed524f5286aab1815dfe07729438.i')) |
1269 ), |
786 self.hybridencode( |
1270 ( |
787 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1271 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
788 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1272 b'345678/12345/-xxxxxc10ad03b5755ed524f5286aab1815dfe07729438.i' |
789 b'45.d'), |
1273 ), |
790 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1274 ) |
791 b'345678/12345/-xxxxx9eec83381f2b39ef5ac8b4ecdf2c94f7983f57c8.d')) |
1275 self.hybridencode( |
792 self.hybridencode( |
1276 ( |
793 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1277 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
794 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1278 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
795 b'456.i'), |
1279 b'45.d' |
796 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1280 ), |
797 b'345678/12345/-xxxxxb7796dc7d175cfb0bb8a7728f58f6ebec9042568.i')) |
1281 ( |
798 self.hybridencode( |
1282 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
799 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1283 b'345678/12345/-xxxxx9eec83381f2b39ef5ac8b4ecdf2c94f7983f57c8.d' |
800 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1284 ), |
801 b'4567.i'), |
1285 ) |
802 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1286 self.hybridencode( |
803 b'345678/12345/-xxxxxb515857a6bfeef017c4894d8df42458ac65d55b8.i')) |
1287 ( |
804 self.hybridencode( |
1288 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
805 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1289 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
806 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1290 b'456.i' |
807 b'45678.i'), |
1291 ), |
808 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1292 ( |
809 b'345678/12345/-xxxxxb05a0f247bc0a776211cd6a32ab714fd9cc09f2b.i')) |
1293 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
810 self.hybridencode( |
1294 b'345678/12345/-xxxxxb7796dc7d175cfb0bb8a7728f58f6ebec9042568.i' |
811 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1295 ), |
812 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1296 ) |
813 b'456789.i'), |
1297 self.hybridencode( |
814 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1298 ( |
815 b'345678/12345/-xxxxxf192b48bff08d9e0e12035fb52bc58c70de72c94.i')) |
1299 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
816 self.hybridencode( |
1300 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
817 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1301 b'4567.i' |
818 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1302 ), |
819 b'456789-.i'), |
1303 ( |
820 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1304 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
821 b'345678/12345/-xxxxx435551e0ed4c7b083b9ba83cee916670e02e80ad.i')) |
1305 b'345678/12345/-xxxxxb515857a6bfeef017c4894d8df42458ac65d55b8.i' |
822 self.hybridencode( |
1306 ), |
823 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1307 ) |
824 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1308 self.hybridencode( |
825 b'456789-1.i'), |
1309 ( |
826 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1310 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
827 b'345678/12345/-xxxxxa7f74eb98d8d58b716356dfd26e2f9aaa65d6a9a.i')) |
1311 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
828 self.hybridencode( |
1312 b'45678.i' |
829 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1313 ), |
830 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1314 ( |
831 b'456789-12.i'), |
1315 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
832 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1316 b'345678/12345/-xxxxxb05a0f247bc0a776211cd6a32ab714fd9cc09f2b.i' |
833 b'345678/12345/-xxxxxed68d9bd43b931f0b100267fee488d65a0c66f62.i')) |
1317 ), |
834 self.hybridencode( |
1318 ) |
835 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1319 self.hybridencode( |
836 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1320 ( |
837 b'456789-123.i'), |
1321 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
838 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1322 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
839 b'345678/12345/-xxxxx5cea44de2b642d2ba2b4a30693ffb1049644d698.i')) |
1323 b'456789.i' |
840 self.hybridencode( |
1324 ), |
841 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1325 ( |
842 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1326 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
843 b'456789-1234.i'), |
1327 b'345678/12345/-xxxxxf192b48bff08d9e0e12035fb52bc58c70de72c94.i' |
844 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1328 ), |
845 b'345678/12345/-xxxxx68462f62a7f230b39c1b5400d73ec35920990b7e.i')) |
1329 ) |
846 self.hybridencode( |
1330 self.hybridencode( |
847 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1331 ( |
848 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1332 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
849 b'456789-12345.i'), |
1333 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
850 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1334 b'456789-.i' |
851 b'345678/12345/-xxxxx4cb852a314c6da240a83eec94761cdd71c6ec22e.i')) |
1335 ), |
852 self.hybridencode( |
1336 ( |
853 (b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
1337 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
854 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
1338 b'345678/12345/-xxxxx435551e0ed4c7b083b9ba83cee916670e02e80ad.i' |
855 b'456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-' |
1339 ), |
856 b'abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTUVWXYZ' |
1340 ) |
857 b'-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx' |
1341 self.hybridencode( |
858 b'-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww' |
1342 ( |
859 b'-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww.i'), |
1343 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
860 (b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
1344 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
861 b'345678/12345/-xxxxx93352aa50377751d9e5ebdf52da1e6e69a6887a6.i')) |
1345 b'456789-1.i' |
|
1346 ), |
|
1347 ( |
|
1348 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
|
1349 b'345678/12345/-xxxxxa7f74eb98d8d58b716356dfd26e2f9aaa65d6a9a.i' |
|
1350 ), |
|
1351 ) |
|
1352 self.hybridencode( |
|
1353 ( |
|
1354 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1355 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
|
1356 b'456789-12.i' |
|
1357 ), |
|
1358 ( |
|
1359 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
|
1360 b'345678/12345/-xxxxxed68d9bd43b931f0b100267fee488d65a0c66f62.i' |
|
1361 ), |
|
1362 ) |
|
1363 self.hybridencode( |
|
1364 ( |
|
1365 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1366 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
|
1367 b'456789-123.i' |
|
1368 ), |
|
1369 ( |
|
1370 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
|
1371 b'345678/12345/-xxxxx5cea44de2b642d2ba2b4a30693ffb1049644d698.i' |
|
1372 ), |
|
1373 ) |
|
1374 self.hybridencode( |
|
1375 ( |
|
1376 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1377 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
|
1378 b'456789-1234.i' |
|
1379 ), |
|
1380 ( |
|
1381 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
|
1382 b'345678/12345/-xxxxx68462f62a7f230b39c1b5400d73ec35920990b7e.i' |
|
1383 ), |
|
1384 ) |
|
1385 self.hybridencode( |
|
1386 ( |
|
1387 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1388 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
|
1389 b'456789-12345.i' |
|
1390 ), |
|
1391 ( |
|
1392 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
|
1393 b'345678/12345/-xxxxx4cb852a314c6da240a83eec94761cdd71c6ec22e.i' |
|
1394 ), |
|
1395 ) |
|
1396 self.hybridencode( |
|
1397 ( |
|
1398 b'data/12345678/12345678/12345678/12345678/12345678/12345678/' |
|
1399 b'12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3' |
|
1400 b'456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-' |
|
1401 b'abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTUVWXYZ' |
|
1402 b'-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx' |
|
1403 b'-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww' |
|
1404 b'-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww.i' |
|
1405 ), |
|
1406 ( |
|
1407 b'dh/12345678/12345678/12345678/12345678/12345678/12345678/12' |
|
1408 b'345678/12345/-xxxxx93352aa50377751d9e5ebdf52da1e6e69a6887a6.i' |
|
1409 ), |
|
1410 ) |
862 |
1411 |
863 def testpathsoutsidedata(self): |
1412 def testpathsoutsidedata(self): |
864 # paths outside data/ can be encoded |
1413 # paths outside data/ can be encoded |
865 self.hybridencode(b'metadata/dir/00manifest.i', |
1414 self.hybridencode( |
866 b'metadata/dir/00manifest.i') |
1415 b'metadata/dir/00manifest.i', b'metadata/dir/00manifest.i' |
867 self.hybridencode( |
1416 ) |
868 (b'metadata/12345678/12345678/12345678/12345678/12345678' |
1417 self.hybridencode( |
869 b'/12345678/12345678/12345678/12345678/12345678/12345678' |
1418 ( |
870 b'/12345678/12345678/00manifest.i'), |
1419 b'metadata/12345678/12345678/12345678/12345678/12345678' |
871 (b'dh/ata/12345678/12345678/12345678/12345678/12345678' |
1420 b'/12345678/12345678/12345678/12345678/12345678/12345678' |
872 b'/12345678/12345678/00manife' |
1421 b'/12345678/12345678/00manifest.i' |
873 b'0a4da1f89aa2aa9eb0896eb451288419049781b4.i')) |
1422 ), |
|
1423 ( |
|
1424 b'dh/ata/12345678/12345678/12345678/12345678/12345678' |
|
1425 b'/12345678/12345678/00manife' |
|
1426 b'0a4da1f89aa2aa9eb0896eb451288419049781b4.i' |
|
1427 ), |
|
1428 ) |
|
1429 |
874 |
1430 |
875 if __name__ == '__main__': |
1431 if __name__ == '__main__': |
876 import silenttestrunner |
1432 import silenttestrunner |
|
1433 |
877 silenttestrunner.main(__name__) |
1434 silenttestrunner.main(__name__) |