##// END OF EJS Templates
test-hybridencode: in practice, extensions aren't really unbound in length...
Adrian Buehlmann -
r17690:eb7f8359 default
parent child Browse files
Show More
@@ -1,457 +1,462 b''
1 from mercurial import store
1 from mercurial import store
2
2
3 def show(s):
3 def show(s):
4 # show test input
4 # show test input
5 print "A = '%s'" % s.encode("string_escape")
5 print "A = '%s'" % s.encode("string_escape")
6
6
7 # show the result of the C implementation, if available
7 # show the result of the C implementation, if available
8 h = store._dothybridencode(s)
8 h = store._dothybridencode(s)
9 print "B = '%s'" % h.encode("string_escape")
9 print "B = '%s'" % h.encode("string_escape")
10
10
11 # compare it with reference implementation in Python
11 # compare it with reference implementation in Python
12 r = store._hybridencode(s, True)
12 r = store._hybridencode(s, True)
13 if h != r:
13 if h != r:
14 print "R = '%s'" % r.encode("string_escape")
14 print "R = '%s'" % r.encode("string_escape")
15 print
15 print
16
16
17 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;=[]^`{}")
17 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;=[]^`{}")
18
18
19 print "uppercase char X is encoded as _x"
19 print "uppercase char X is encoded as _x"
20 show("data/ABCDEFGHIJKLMNOPQRSTUVWXYZ")
20 show("data/ABCDEFGHIJKLMNOPQRSTUVWXYZ")
21
21
22 print "underbar is doubled"
22 print "underbar is doubled"
23 show("data/_")
23 show("data/_")
24
24
25 print "tilde is character-encoded"
25 print "tilde is character-encoded"
26 show("data/~")
26 show("data/~")
27
27
28 print "characters in ASCII code range 1..31"
28 print "characters in ASCII code range 1..31"
29 show('data/\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
29 show('data/\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f'
30 '\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')
30 '\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f')
31
31
32 print "characters in ASCII code range 126..255"
32 print "characters in ASCII code range 126..255"
33 show('data/\x7e\x7f'
33 show('data/\x7e\x7f'
34 '\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f'
34 '\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f'
35 '\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f')
35 '\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f')
36 show('data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf'
36 show('data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf'
37 '\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf')
37 '\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf')
38 show('data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf'
38 show('data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf'
39 '\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf')
39 '\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf')
40 show('data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef'
40 show('data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef'
41 '\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')
41 '\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')
42
42
43 print "Windows reserved characters"
43 print "Windows reserved characters"
44 show('data/less <, greater >, colon :, double-quote ", backslash \\'
44 show('data/less <, greater >, colon :, double-quote ", backslash \\'
45 ', pipe |, question-mark ?, asterisk *')
45 ', pipe |, question-mark ?, asterisk *')
46
46
47 print "encoding directories ending in .hg, .i or .d with '.hg' suffix"
47 print "encoding directories ending in .hg, .i or .d with '.hg' suffix"
48 show('data/x.h.i/x.hg/x.i/x.d/foo')
48 show('data/x.h.i/x.hg/x.i/x.d/foo')
49 show('data/a.hg/a.i/a.d/foo')
49 show('data/a.hg/a.i/a.d/foo')
50 show('data/au.hg/au.i/au.d/foo')
50 show('data/au.hg/au.i/au.d/foo')
51 show('data/aux.hg/aux.i/aux.d/foo')
51 show('data/aux.hg/aux.i/aux.d/foo')
52 show('data/auxy.hg/auxy.i/auxy.d/foo')
52 show('data/auxy.hg/auxy.i/auxy.d/foo')
53
53
54 print "but these are not encoded on *filenames*"
54 print "but these are not encoded on *filenames*"
55 show('data/foo/x.hg')
55 show('data/foo/x.hg')
56 show('data/foo/x.i')
56 show('data/foo/x.i')
57 show('data/foo/x.d')
57 show('data/foo/x.d')
58 show('data/foo/a.hg')
58 show('data/foo/a.hg')
59 show('data/foo/a.i')
59 show('data/foo/a.i')
60 show('data/foo/a.d')
60 show('data/foo/a.d')
61 show('data/foo/au.hg')
61 show('data/foo/au.hg')
62 show('data/foo/au.i')
62 show('data/foo/au.i')
63 show('data/foo/au.d')
63 show('data/foo/au.d')
64 show('data/foo/aux.hg')
64 show('data/foo/aux.hg')
65 show('data/foo/aux.i')
65 show('data/foo/aux.i')
66 show('data/foo/aux.d')
66 show('data/foo/aux.d')
67 show('data/foo/auxy.hg')
67 show('data/foo/auxy.hg')
68 show('data/foo/auxy.i')
68 show('data/foo/auxy.i')
69 show('data/foo/auxy.d')
69 show('data/foo/auxy.d')
70
70
71 print "plain .hg, .i and .d directories have the leading dot encoded"
71 print "plain .hg, .i and .d directories have the leading dot encoded"
72 show('data/.hg/.i/.d/foo')
72 show('data/.hg/.i/.d/foo')
73
73
74 show('data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i')
74 show('data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i')
75
75
76 show('data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/'
76 show('data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/'
77 'TENTH/ELEVENTH/LOREMIPSUM.TXT.i')
77 'TENTH/ELEVENTH/LOREMIPSUM.TXT.i')
78 show('data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/'
78 show('data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/'
79 'wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules'
79 'wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules'
80 '.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i')
80 '.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i')
81 show('data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-'
81 show('data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-'
82 'BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i')
82 'BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i')
83 show('data/Project Planning/Resources/AnotherLongDirectoryName/'
83 show('data/Project Planning/Resources/AnotherLongDirectoryName/'
84 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
84 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
85 show('data/Project.Planning/Resources/AnotherLongDirectoryName/'
85 show('data/Project.Planning/Resources/AnotherLongDirectoryName/'
86 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
86 'Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt')
87 show('data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i')
87 show('data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i')
88
88
89 show('data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9')
89 show('data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9')
90 show('data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9')
90 show('data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9')
91 show('data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x'
91 show('data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x'
92 '/com6.x/com7.x/com8.x/com9.x')
92 '/com6.x/com7.x/com8.x/com9.x')
93 show('data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5'
93 show('data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5'
94 '/x.com6/x.com7/x.com8/x.com9')
94 '/x.com6/x.com7/x.com8/x.com9')
95 show('data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x'
95 show('data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x'
96 '/com6x/com7x/com8x/com9x')
96 '/com6x/com7x/com8x/com9x')
97 show('data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5'
97 show('data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5'
98 '/xcom6/xcom7/xcom8/xcom9')
98 '/xcom6/xcom7/xcom8/xcom9')
99
99
100 show('data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9')
100 show('data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9')
101 show('data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9')
101 show('data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9')
102 show('data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x'
102 show('data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x'
103 '/lpt6.x/lpt7.x/lpt8.x/lpt9.x')
103 '/lpt6.x/lpt7.x/lpt8.x/lpt9.x')
104 show('data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5'
104 show('data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5'
105 '/x.lpt6/x.lpt7/x.lpt8/x.lpt9')
105 '/x.lpt6/x.lpt7/x.lpt8/x.lpt9')
106 show('data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x'
106 show('data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x'
107 '/lpt6x/lpt7x/lpt8x/lpt9x')
107 '/lpt6x/lpt7x/lpt8x/lpt9x')
108 show('data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5'
108 show('data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5'
109 '/xlpt6/xlpt7/xlpt8/xlpt9')
109 '/xlpt6/xlpt7/xlpt8/xlpt9')
110
110
111 show('data/con/p/pr/prn/a/au/aux/n/nu/nul')
111 show('data/con/p/pr/prn/a/au/aux/n/nu/nul')
112 show('data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL')
112 show('data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL')
113 show('data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x')
113 show('data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x')
114 show('data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul')
114 show('data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul')
115 show('data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx')
115 show('data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx')
116 show('data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul')
116 show('data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul')
117
117
118 show('data/a./au./aux./auxy./aux.')
118 show('data/a./au./aux./auxy./aux.')
119 show('data/c./co./con./cony./con.')
119 show('data/c./co./con./cony./con.')
120 show('data/p./pr./prn./prny./prn.')
120 show('data/p./pr./prn./prny./prn.')
121 show('data/n./nu./nul./nuly./nul.')
121 show('data/n./nu./nul./nuly./nul.')
122 show('data/l./lp./lpt./lpt1./lpt1y./lpt1.')
122 show('data/l./lp./lpt./lpt1./lpt1y./lpt1.')
123 show('data/lpt9./lpt9y./lpt9.')
123 show('data/lpt9./lpt9y./lpt9.')
124 show('data/com./com1./com1y./com1.')
124 show('data/com./com1./com1y./com1.')
125 show('data/com9./com9y./com9.')
125 show('data/com9./com9y./com9.')
126
126
127 show('data/a /au /aux /auxy /aux ')
127 show('data/a /au /aux /auxy /aux ')
128
128
129 print "largest unhashed path"
129 print "largest unhashed path"
130 show('data/123456789-123456789-123456789-123456789-123456789-'
130 show('data/123456789-123456789-123456789-123456789-123456789-'
131 'unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
131 'unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
132 '123456789-12345')
132 '123456789-12345')
133
133
134 print "shortest hashed path"
134 print "shortest hashed path"
135 show('data/123456789-123456789-123456789-123456789-123456789-'
135 show('data/123456789-123456789-123456789-123456789-123456789-'
136 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
136 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
137 '123456789-123456')
137 '123456789-123456')
138
138
139 print "changing one char in part that's hashed away produces a different hash"
139 print "changing one char in part that's hashed away produces a different hash"
140 show('data/123456789-123456789-123456789-123456789-123456789-'
140 show('data/123456789-123456789-123456789-123456789-123456789-'
141 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-'
141 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-'
142 '123456789-123456')
142 '123456789-123456')
143
143
144 print "uppercase hitting length limit due to encoding"
144 print "uppercase hitting length limit due to encoding"
145 show('data/A23456789-123456789-123456789-123456789-123456789-'
145 show('data/A23456789-123456789-123456789-123456789-123456789-'
146 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
146 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
147 '123456789-12345')
147 '123456789-12345')
148 show('data/Z23456789-123456789-123456789-123456789-123456789-'
148 show('data/Z23456789-123456789-123456789-123456789-123456789-'
149 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
149 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
150 '123456789-12345')
150 '123456789-12345')
151
151
152 print "compare with lowercase not hitting limit"
152 print "compare with lowercase not hitting limit"
153 show('data/a23456789-123456789-123456789-123456789-123456789-'
153 show('data/a23456789-123456789-123456789-123456789-123456789-'
154 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
154 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
155 '123456789-12345')
155 '123456789-12345')
156 show('data/z23456789-123456789-123456789-123456789-123456789-'
156 show('data/z23456789-123456789-123456789-123456789-123456789-'
157 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
157 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
158 '123456789-12345')
158 '123456789-12345')
159
159
160 print "not hitting limit with any of these"
160 print "not hitting limit with any of these"
161 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;="
161 show("data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&'()+,-.;="
162 "[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-"
162 "[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-"
163 "123456789-12345")
163 "123456789-12345")
164
164
165 print "underbar hitting length limit due to encoding"
165 print "underbar hitting length limit due to encoding"
166 show('data/_23456789-123456789-123456789-123456789-123456789-'
166 show('data/_23456789-123456789-123456789-123456789-123456789-'
167 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
167 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
168 '123456789-12345')
168 '123456789-12345')
169
169
170 print "tilde hitting length limit due to encoding"
170 print "tilde hitting length limit due to encoding"
171 show('data/~23456789-123456789-123456789-123456789-123456789-'
171 show('data/~23456789-123456789-123456789-123456789-123456789-'
172 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
172 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
173 '123456789-12345')
173 '123456789-12345')
174
174
175 print "Windows reserved characters hitting length limit"
175 print "Windows reserved characters hitting length limit"
176 show('data/<23456789-123456789-123456789-123456789-123456789-'
176 show('data/<23456789-123456789-123456789-123456789-123456789-'
177 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
177 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
178 '123456789-12345')
178 '123456789-12345')
179 show('data/>23456789-123456789-123456789-123456789-123456789-'
179 show('data/>23456789-123456789-123456789-123456789-123456789-'
180 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
180 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
181 '123456789-12345')
181 '123456789-12345')
182 show('data/:23456789-123456789-123456789-123456789-123456789-'
182 show('data/:23456789-123456789-123456789-123456789-123456789-'
183 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
183 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
184 '123456789-12345')
184 '123456789-12345')
185 show('data/"23456789-123456789-123456789-123456789-123456789-'
185 show('data/"23456789-123456789-123456789-123456789-123456789-'
186 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
186 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
187 '123456789-12345')
187 '123456789-12345')
188 show('data/\\23456789-123456789-123456789-123456789-123456789-'
188 show('data/\\23456789-123456789-123456789-123456789-123456789-'
189 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
189 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
190 '123456789-12345')
190 '123456789-12345')
191 show('data/|23456789-123456789-123456789-123456789-123456789-'
191 show('data/|23456789-123456789-123456789-123456789-123456789-'
192 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
192 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
193 '123456789-12345')
193 '123456789-12345')
194 show('data/?23456789-123456789-123456789-123456789-123456789-'
194 show('data/?23456789-123456789-123456789-123456789-123456789-'
195 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
195 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
196 '123456789-12345')
196 '123456789-12345')
197 show('data/*23456789-123456789-123456789-123456789-123456789-'
197 show('data/*23456789-123456789-123456789-123456789-123456789-'
198 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
198 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
199 '123456789-12345')
199 '123456789-12345')
200
200
201 print "initial space hitting length limit"
201 print "initial space hitting length limit"
202 show('data/ 23456789-123456789-123456789-123456789-123456789-'
202 show('data/ 23456789-123456789-123456789-123456789-123456789-'
203 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
203 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
204 '123456789-12345')
204 '123456789-12345')
205
205
206 print "initial dot hitting length limit"
206 print "initial dot hitting length limit"
207 show('data/.23456789-123456789-123456789-123456789-123456789-'
207 show('data/.23456789-123456789-123456789-123456789-123456789-'
208 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
208 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
209 '123456789-12345')
209 '123456789-12345')
210
210
211 print "trailing space in filename hitting length limit"
211 print "trailing space in filename hitting length limit"
212 show('data/123456789-123456789-123456789-123456789-123456789-'
212 show('data/123456789-123456789-123456789-123456789-123456789-'
213 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
213 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
214 '123456789-1234 ')
214 '123456789-1234 ')
215
215
216 print "trailing dot in filename hitting length limit"
216 print "trailing dot in filename hitting length limit"
217 show('data/123456789-123456789-123456789-123456789-123456789-'
217 show('data/123456789-123456789-123456789-123456789-123456789-'
218 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
218 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
219 '123456789-1234.')
219 '123456789-1234.')
220
220
221 print "initial space in directory hitting length limit"
221 print "initial space in directory hitting length limit"
222 show('data/ x/456789-123456789-123456789-123456789-123456789-'
222 show('data/ x/456789-123456789-123456789-123456789-123456789-'
223 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
223 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
224 '123456789-12345')
224 '123456789-12345')
225
225
226 print "initial dot in directory hitting length limit"
226 print "initial dot in directory hitting length limit"
227 show('data/.x/456789-123456789-123456789-123456789-123456789-'
227 show('data/.x/456789-123456789-123456789-123456789-123456789-'
228 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
228 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
229 '123456789-12345')
229 '123456789-12345')
230
230
231 print "trailing space in directory hitting length limit"
231 print "trailing space in directory hitting length limit"
232 show('data/x /456789-123456789-123456789-123456789-123456789-'
232 show('data/x /456789-123456789-123456789-123456789-123456789-'
233 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
233 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
234 '123456789-12345')
234 '123456789-12345')
235
235
236 print "trailing dot in directory hitting length limit"
236 print "trailing dot in directory hitting length limit"
237 show('data/x./456789-123456789-123456789-123456789-123456789-'
237 show('data/x./456789-123456789-123456789-123456789-123456789-'
238 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
238 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
239 '123456789-12345')
239 '123456789-12345')
240
240
241 print "with directories that need direncoding, hitting length limit"
241 print "with directories that need direncoding, hitting length limit"
242 show('data/x.i/56789-123456789-123456789-123456789-123456789-'
242 show('data/x.i/56789-123456789-123456789-123456789-123456789-'
243 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
243 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
244 '123456789-12345')
244 '123456789-12345')
245 show('data/x.d/56789-123456789-123456789-123456789-123456789-'
245 show('data/x.d/56789-123456789-123456789-123456789-123456789-'
246 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
246 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
247 '123456789-12345')
247 '123456789-12345')
248 show('data/x.hg/5789-123456789-123456789-123456789-123456789-'
248 show('data/x.hg/5789-123456789-123456789-123456789-123456789-'
249 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
249 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
250 '123456789-12345')
250 '123456789-12345')
251
251
252 print "Windows reserved filenames, hitting length limit"
252 print "Windows reserved filenames, hitting length limit"
253 show('data/con/56789-123456789-123456789-123456789-123456789-'
253 show('data/con/56789-123456789-123456789-123456789-123456789-'
254 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
254 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
255 '123456789-12345')
255 '123456789-12345')
256 show('data/prn/56789-123456789-123456789-123456789-123456789-'
256 show('data/prn/56789-123456789-123456789-123456789-123456789-'
257 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
257 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
258 '123456789-12345')
258 '123456789-12345')
259 show('data/aux/56789-123456789-123456789-123456789-123456789-'
259 show('data/aux/56789-123456789-123456789-123456789-123456789-'
260 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
260 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
261 '123456789-12345')
261 '123456789-12345')
262 show('data/nul/56789-123456789-123456789-123456789-123456789-'
262 show('data/nul/56789-123456789-123456789-123456789-123456789-'
263 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
263 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
264 '123456789-12345')
264 '123456789-12345')
265 show('data/com1/6789-123456789-123456789-123456789-123456789-'
265 show('data/com1/6789-123456789-123456789-123456789-123456789-'
266 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
266 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
267 '123456789-12345')
267 '123456789-12345')
268 show('data/com9/6789-123456789-123456789-123456789-123456789-'
268 show('data/com9/6789-123456789-123456789-123456789-123456789-'
269 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
269 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
270 '123456789-12345')
270 '123456789-12345')
271 show('data/lpt1/6789-123456789-123456789-123456789-123456789-'
271 show('data/lpt1/6789-123456789-123456789-123456789-123456789-'
272 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
272 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
273 '123456789-12345')
273 '123456789-12345')
274 show('data/lpt9/6789-123456789-123456789-123456789-123456789-'
274 show('data/lpt9/6789-123456789-123456789-123456789-123456789-'
275 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
275 'xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
276 '123456789-12345')
276 '123456789-12345')
277
277
278 print "non-reserved names, just not hitting limit"
278 print "non-reserved names, just not hitting limit"
279 show('data/123456789-123456789-123456789-123456789-123456789-'
279 show('data/123456789-123456789-123456789-123456789-123456789-'
280 '/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
280 '/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
281 '123456789-12345')
281 '123456789-12345')
282
282
283 print "hashed path with largest untruncated 1st dir"
283 print "hashed path with largest untruncated 1st dir"
284 show('data/12345678/-123456789-123456789-123456789-123456789-'
284 show('data/12345678/-123456789-123456789-123456789-123456789-'
285 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
285 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
286 '123456789-123456')
286 '123456789-123456')
287
287
288 print "hashed path with smallest truncated 1st dir"
288 print "hashed path with smallest truncated 1st dir"
289 show('data/123456789/123456789-123456789-123456789-123456789-'
289 show('data/123456789/123456789-123456789-123456789-123456789-'
290 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
290 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
291 '123456789-123456')
291 '123456789-123456')
292
292
293 print "hashed path with largest untruncated two dirs"
293 print "hashed path with largest untruncated two dirs"
294 show('data/12345678/12345678/9-123456789-123456789-123456789-'
294 show('data/12345678/12345678/9-123456789-123456789-123456789-'
295 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
295 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
296 '123456789-123456')
296 '123456789-123456')
297
297
298 print "hashed path with smallest truncated two dirs"
298 print "hashed path with smallest truncated two dirs"
299 show('data/123456789/123456789/123456789-123456789-123456789-'
299 show('data/123456789/123456789/123456789-123456789-123456789-'
300 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
300 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
301 '123456789-123456')
301 '123456789-123456')
302
302
303 print "hashed path with largest untruncated three dirs"
303 print "hashed path with largest untruncated three dirs"
304 show('data/12345678/12345678/12345678/89-123456789-123456789-'
304 show('data/12345678/12345678/12345678/89-123456789-123456789-'
305 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
305 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
306 '123456789-123456')
306 '123456789-123456')
307
307
308 print "hashed path with smallest truncated three dirs"
308 print "hashed path with smallest truncated three dirs"
309 show('data/123456789/123456789/123456789/123456789-123456789-'
309 show('data/123456789/123456789/123456789/123456789-123456789-'
310 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
310 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
311 '123456789-123456')
311 '123456789-123456')
312
312
313 print "hashed path with largest untruncated four dirs"
313 print "hashed path with largest untruncated four dirs"
314 show('data/12345678/12345678/12345678/12345678/789-123456789-'
314 show('data/12345678/12345678/12345678/12345678/789-123456789-'
315 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
315 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
316 '123456789-123456')
316 '123456789-123456')
317
317
318 print "hashed path with smallest truncated four dirs"
318 print "hashed path with smallest truncated four dirs"
319 show('data/123456789/123456789/123456789/123456789/123456789-'
319 show('data/123456789/123456789/123456789/123456789/123456789-'
320 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
320 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
321 '123456789-123456')
321 '123456789-123456')
322
322
323 print "hashed path with largest untruncated five dirs"
323 print "hashed path with largest untruncated five dirs"
324 show('data/12345678/12345678/12345678/12345678/12345678/6789-'
324 show('data/12345678/12345678/12345678/12345678/12345678/6789-'
325 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
325 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
326 '123456789-123456')
326 '123456789-123456')
327
327
328 print "hashed path with smallest truncated five dirs"
328 print "hashed path with smallest truncated five dirs"
329 show('data/123456789/123456789/123456789/123456789/123456789/'
329 show('data/123456789/123456789/123456789/123456789/123456789/'
330 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
330 'hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
331 '123456789-123456')
331 '123456789-123456')
332
332
333 print "hashed path with largest untruncated six dirs"
333 print "hashed path with largest untruncated six dirs"
334 show('data/12345678/12345678/12345678/12345678/12345678/12345'
334 show('data/12345678/12345678/12345678/12345678/12345678/12345'
335 '678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
335 '678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
336 '123456789-123456')
336 '123456789-123456')
337
337
338 print "hashed path with smallest truncated six dirs"
338 print "hashed path with smallest truncated six dirs"
339 show('data/123456789/123456789/123456789/123456789/123456789/'
339 show('data/123456789/123456789/123456789/123456789/123456789/'
340 '123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
340 '123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
341 '123456789-123456')
341 '123456789-123456')
342
342
343 print "hashed path with largest untruncated seven dirs"
343 print "hashed path with largest untruncated seven dirs"
344 show('data/12345678/12345678/12345678/12345678/12345678/12345'
344 show('data/12345678/12345678/12345678/12345678/12345678/12345'
345 '678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
345 '678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
346 '123456789-123456')
346 '123456789-123456')
347
347
348 print "hashed path with smallest truncated seven dirs"
348 print "hashed path with smallest truncated seven dirs"
349 show('data/123456789/123456789/123456789/123456789/123456789/'
349 show('data/123456789/123456789/123456789/123456789/123456789/'
350 '123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
350 '123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
351 '123456789-123456')
351 '123456789-123456')
352
352
353 print "hashed path with largest untruncated eight dirs"
353 print "hashed path with largest untruncated eight dirs"
354 print "(directory 8 is dropped because it hits _maxshortdirslen)"
354 print "(directory 8 is dropped because it hits _maxshortdirslen)"
355 show('data/12345678/12345678/12345678/12345678/12345678/12345'
355 show('data/12345678/12345678/12345678/12345678/12345678/12345'
356 '678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-'
356 '678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-'
357 '123456789-123456')
357 '123456789-123456')
358
358
359 print "hashed path with smallest truncated eight dirs"
359 print "hashed path with smallest truncated eight dirs"
360 print "(directory 8 is dropped because it hits _maxshortdirslen)"
360 print "(directory 8 is dropped because it hits _maxshortdirslen)"
361 show('data/123456789/123456789/123456789/123456789/123456789/'
361 show('data/123456789/123456789/123456789/123456789/123456789/'
362 '123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-'
362 '123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-'
363 '123456789-123456')
363 '123456789-123456')
364
364
365 print "hashed path with largest non-dropped directory 8"
365 print "hashed path with largest non-dropped directory 8"
366 print "(just not hitting the _maxshortdirslen boundary)"
366 print "(just not hitting the _maxshortdirslen boundary)"
367 show('data/12345678/12345678/12345678/12345678/12345678/12345'
367 show('data/12345678/12345678/12345678/12345678/12345678/12345'
368 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
368 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
369 '123456789-123456')
369 '123456789-123456')
370
370
371 print "...adding one truncated char to dir 1..7 won't drop dir 8"
371 print "...adding one truncated char to dir 1..7 won't drop dir 8"
372 show('data/12345678x/12345678/12345678/12345678/12345678/12345'
372 show('data/12345678x/12345678/12345678/12345678/12345678/12345'
373 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
373 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
374 '123456789-123456')
374 '123456789-123456')
375 show('data/12345678/12345678x/12345678/12345678/12345678/12345'
375 show('data/12345678/12345678x/12345678/12345678/12345678/12345'
376 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
376 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
377 '123456789-123456')
377 '123456789-123456')
378 show('data/12345678/12345678/12345678x/12345678/12345678/12345'
378 show('data/12345678/12345678/12345678x/12345678/12345678/12345'
379 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
379 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
380 '123456789-123456')
380 '123456789-123456')
381 show('data/12345678/12345678/12345678/12345678x/12345678/12345'
381 show('data/12345678/12345678/12345678/12345678x/12345678/12345'
382 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
382 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
383 '123456789-123456')
383 '123456789-123456')
384 show('data/12345678/12345678/12345678/12345678/12345678x/12345'
384 show('data/12345678/12345678/12345678/12345678/12345678x/12345'
385 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
385 '678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
386 '123456789-123456')
386 '123456789-123456')
387 show('data/12345678/12345678/12345678/12345678/12345678/12345'
387 show('data/12345678/12345678/12345678/12345678/12345678/12345'
388 '678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
388 '678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
389 '123456789-123456')
389 '123456789-123456')
390 show('data/12345678/12345678/12345678/12345678/12345678/12345'
390 show('data/12345678/12345678/12345678/12345678/12345678/12345'
391 '678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
391 '678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
392 '123456789-123456')
392 '123456789-123456')
393
393
394 print "hashed path with shortest dropped directory 8"
394 print "hashed path with shortest dropped directory 8"
395 print "(just hitting the _maxshortdirslen boundary)"
395 print "(just hitting the _maxshortdirslen boundary)"
396 show('data/12345678/12345678/12345678/12345678/12345678/12345'
396 show('data/12345678/12345678/12345678/12345678/12345678/12345'
397 '678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
397 '678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
398 '123456789-123456')
398 '123456789-123456')
399
399
400 print "hashed path that drops dir 8 due to dot or space at end is"
400 print "hashed path that drops dir 8 due to dot or space at end is"
401 print "encoded, and thus causing to hit _maxshortdirslen"
401 print "encoded, and thus causing to hit _maxshortdirslen"
402 show('data/12345678/12345678/12345678/12345678/12345678/12345'
402 show('data/12345678/12345678/12345678/12345678/12345678/12345'
403 '678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
403 '678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
404 '123456789-123456')
404 '123456789-123456')
405 show('data/12345678/12345678/12345678/12345678/12345678/12345'
405 show('data/12345678/12345678/12345678/12345678/12345678/12345'
406 '678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
406 '678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
407 '123456789-123456')
407 '123456789-123456')
408
408
409 print "... with dir 8 short enough for encoding"
409 print "... with dir 8 short enough for encoding"
410 show('data/12345678/12345678/12345678/12345678/12345678/12345'
410 show('data/12345678/12345678/12345678/12345678/12345678/12345'
411 '678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
411 '678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
412 '123456789-123456')
412 '123456789-123456')
413 show('data/12345678/12345678/12345678/12345678/12345678/12345'
413 show('data/12345678/12345678/12345678/12345678/12345678/12345'
414 '678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
414 '678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
415 '123456789-123456')
415 '123456789-123456')
416
416
417 print "extensions are replicated on hashed paths (unbounded!)"
417 print '''Extensions are replicated on hashed paths. Note that
418 we only get to encode files that end in .i or .d inside the
419 store. Encoded filenames are thus bound in length.'''
418 show('data/12345678/12345678/12345678/12345678/12345678/12345'
420 show('data/12345678/12345678/12345678/12345678/12345678/12345'
419 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
421 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
420 '123456789-12.345')
422 '123456789-12.345.i')
421 show('data/12345678/12345678/12345678/12345678/12345678/12345'
423 show('data/12345678/12345678/12345678/12345678/12345678/12345'
422 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
424 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
423 '123456789-12.3456')
425 '123456789-12.345.d')
424 show('data/12345678/12345678/12345678/12345678/12345678/12345'
426 show('data/12345678/12345678/12345678/12345678/12345678/12345'
425 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
427 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
426 '123456789-12.34567')
428 '123456789-12.3456.i')
427 show('data/12345678/12345678/12345678/12345678/12345678/12345'
429 show('data/12345678/12345678/12345678/12345678/12345678/12345'
428 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
430 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
429 '123456789-12.345678')
431 '123456789-12.34567.i')
432 show('data/12345678/12345678/12345678/12345678/12345678/12345'
433 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
434 '123456789-12.345678.i')
430 show('data/12345678/12345678/12345678/12345678/12345678/12345'
435 show('data/12345678/12345678/12345678/12345678/12345678/12345'
431 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
436 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
432 '123456789-12.3456789')
437 '123456789-12.3456789.i')
433 show('data/12345678/12345678/12345678/12345678/12345678/12345'
438 show('data/12345678/12345678/12345678/12345678/12345678/12345'
434 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
439 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
435 '123456789-12.3456789-')
440 '123456789-12.3456789-.i')
436 show('data/12345678/12345678/12345678/12345678/12345678/12345'
441 show('data/12345678/12345678/12345678/12345678/12345678/12345'
437 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
442 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
438 '123456789-12.3456789-1')
443 '123456789-12.3456789-1.i')
439 show('data/12345678/12345678/12345678/12345678/12345678/12345'
444 show('data/12345678/12345678/12345678/12345678/12345678/12345'
440 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
445 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
441 '123456789-12.3456789-12')
446 '123456789-12.3456789-12.i')
442 show('data/12345678/12345678/12345678/12345678/12345678/12345'
447 show('data/12345678/12345678/12345678/12345678/12345678/12345'
443 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
448 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
444 '123456789-12.3456789-123')
449 '123456789-12.3456789-123.i')
445 show('data/12345678/12345678/12345678/12345678/12345678/12345'
450 show('data/12345678/12345678/12345678/12345678/12345678/12345'
446 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
451 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
447 '123456789-12.3456789-1234')
452 '123456789-12.3456789-1234.i')
448 show('data/12345678/12345678/12345678/12345678/12345678/12345'
453 show('data/12345678/12345678/12345678/12345678/12345678/12345'
449 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
454 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
450 '123456789-12.3456789-12345')
455 '123456789-12.3456789-12345.i')
451 show('data/12345678/12345678/12345678/12345678/12345678/12345'
456 show('data/12345678/12345678/12345678/12345678/12345678/12345'
452 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
457 '678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-'
453 '123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWX'
458 '123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWX'
454 'YZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTU'
459 'YZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTU'
455 'VWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxx'
460 'VWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxx'
456 'xxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwww'
461 'xxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwww'
457 'wwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww')
462 'wwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww.i')
@@ -1,488 +1,493 b''
1 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
1 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
2 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
2 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}'
3
3
4 uppercase char X is encoded as _x
4 uppercase char X is encoded as _x
5 A = 'data/ABCDEFGHIJKLMNOPQRSTUVWXYZ'
5 A = 'data/ABCDEFGHIJKLMNOPQRSTUVWXYZ'
6 B = 'data/_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z'
6 B = 'data/_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z'
7
7
8 underbar is doubled
8 underbar is doubled
9 A = 'data/_'
9 A = 'data/_'
10 B = 'data/__'
10 B = 'data/__'
11
11
12 tilde is character-encoded
12 tilde is character-encoded
13 A = 'data/~'
13 A = 'data/~'
14 B = 'data/~7e'
14 B = 'data/~7e'
15
15
16 characters in ASCII code range 1..31
16 characters in ASCII code range 1..31
17 A = 'data/\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
17 A = 'data/\x01\x02\x03\x04\x05\x06\x07\x08\t\n\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f'
18 B = 'data/~01~02~03~04~05~06~07~08~09~0a~0b~0c~0d~0e~0f~10~11~12~13~14~15~16~17~18~19~1a~1b~1c~1d~1e~1f'
18 B = 'data/~01~02~03~04~05~06~07~08~09~0a~0b~0c~0d~0e~0f~10~11~12~13~14~15~16~17~18~19~1a~1b~1c~1d~1e~1f'
19
19
20 characters in ASCII code range 126..255
20 characters in ASCII code range 126..255
21 A = 'data/~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f'
21 A = 'data/~\x7f\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f'
22 B = 'data/~7e~7f~80~81~82~83~84~85~86~87~88~89~8a~8b~8c~8d~8e~8f~90~91~92~93~94~95~96~97~98~99~9a~9b~9c~9d~9e~9f'
22 B = 'data/~7e~7f~80~81~82~83~84~85~86~87~88~89~8a~8b~8c~8d~8e~8f~90~91~92~93~94~95~96~97~98~99~9a~9b~9c~9d~9e~9f'
23
23
24 A = 'data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf'
24 A = 'data/\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf'
25 B = 'data/~a0~a1~a2~a3~a4~a5~a6~a7~a8~a9~aa~ab~ac~ad~ae~af~b0~b1~b2~b3~b4~b5~b6~b7~b8~b9~ba~bb~bc~bd~be~bf'
25 B = 'data/~a0~a1~a2~a3~a4~a5~a6~a7~a8~a9~aa~ab~ac~ad~ae~af~b0~b1~b2~b3~b4~b5~b6~b7~b8~b9~ba~bb~bc~bd~be~bf'
26
26
27 A = 'data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf'
27 A = 'data/\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf'
28 B = 'data/~c0~c1~c2~c3~c4~c5~c6~c7~c8~c9~ca~cb~cc~cd~ce~cf~d0~d1~d2~d3~d4~d5~d6~d7~d8~d9~da~db~dc~dd~de~df'
28 B = 'data/~c0~c1~c2~c3~c4~c5~c6~c7~c8~c9~ca~cb~cc~cd~ce~cf~d0~d1~d2~d3~d4~d5~d6~d7~d8~d9~da~db~dc~dd~de~df'
29
29
30 A = 'data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
30 A = 'data/\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
31 B = 'data/~e0~e1~e2~e3~e4~e5~e6~e7~e8~e9~ea~eb~ec~ed~ee~ef~f0~f1~f2~f3~f4~f5~f6~f7~f8~f9~fa~fb~fc~fd~fe~ff'
31 B = 'data/~e0~e1~e2~e3~e4~e5~e6~e7~e8~e9~ea~eb~ec~ed~ee~ef~f0~f1~f2~f3~f4~f5~f6~f7~f8~f9~fa~fb~fc~fd~fe~ff'
32
32
33 Windows reserved characters
33 Windows reserved characters
34 A = 'data/less <, greater >, colon :, double-quote ", backslash \\, pipe |, question-mark ?, asterisk *'
34 A = 'data/less <, greater >, colon :, double-quote ", backslash \\, pipe |, question-mark ?, asterisk *'
35 B = 'data/less ~3c, greater ~3e, colon ~3a, double-quote ~22, backslash ~5c, pipe ~7c, question-mark ~3f, asterisk ~2a'
35 B = 'data/less ~3c, greater ~3e, colon ~3a, double-quote ~22, backslash ~5c, pipe ~7c, question-mark ~3f, asterisk ~2a'
36
36
37 encoding directories ending in .hg, .i or .d with '.hg' suffix
37 encoding directories ending in .hg, .i or .d with '.hg' suffix
38 A = 'data/x.h.i/x.hg/x.i/x.d/foo'
38 A = 'data/x.h.i/x.hg/x.i/x.d/foo'
39 B = 'data/x.h.i.hg/x.hg.hg/x.i.hg/x.d.hg/foo'
39 B = 'data/x.h.i.hg/x.hg.hg/x.i.hg/x.d.hg/foo'
40
40
41 A = 'data/a.hg/a.i/a.d/foo'
41 A = 'data/a.hg/a.i/a.d/foo'
42 B = 'data/a.hg.hg/a.i.hg/a.d.hg/foo'
42 B = 'data/a.hg.hg/a.i.hg/a.d.hg/foo'
43
43
44 A = 'data/au.hg/au.i/au.d/foo'
44 A = 'data/au.hg/au.i/au.d/foo'
45 B = 'data/au.hg.hg/au.i.hg/au.d.hg/foo'
45 B = 'data/au.hg.hg/au.i.hg/au.d.hg/foo'
46
46
47 A = 'data/aux.hg/aux.i/aux.d/foo'
47 A = 'data/aux.hg/aux.i/aux.d/foo'
48 B = 'data/au~78.hg.hg/au~78.i.hg/au~78.d.hg/foo'
48 B = 'data/au~78.hg.hg/au~78.i.hg/au~78.d.hg/foo'
49
49
50 A = 'data/auxy.hg/auxy.i/auxy.d/foo'
50 A = 'data/auxy.hg/auxy.i/auxy.d/foo'
51 B = 'data/auxy.hg.hg/auxy.i.hg/auxy.d.hg/foo'
51 B = 'data/auxy.hg.hg/auxy.i.hg/auxy.d.hg/foo'
52
52
53 but these are not encoded on *filenames*
53 but these are not encoded on *filenames*
54 A = 'data/foo/x.hg'
54 A = 'data/foo/x.hg'
55 B = 'data/foo/x.hg'
55 B = 'data/foo/x.hg'
56
56
57 A = 'data/foo/x.i'
57 A = 'data/foo/x.i'
58 B = 'data/foo/x.i'
58 B = 'data/foo/x.i'
59
59
60 A = 'data/foo/x.d'
60 A = 'data/foo/x.d'
61 B = 'data/foo/x.d'
61 B = 'data/foo/x.d'
62
62
63 A = 'data/foo/a.hg'
63 A = 'data/foo/a.hg'
64 B = 'data/foo/a.hg'
64 B = 'data/foo/a.hg'
65
65
66 A = 'data/foo/a.i'
66 A = 'data/foo/a.i'
67 B = 'data/foo/a.i'
67 B = 'data/foo/a.i'
68
68
69 A = 'data/foo/a.d'
69 A = 'data/foo/a.d'
70 B = 'data/foo/a.d'
70 B = 'data/foo/a.d'
71
71
72 A = 'data/foo/au.hg'
72 A = 'data/foo/au.hg'
73 B = 'data/foo/au.hg'
73 B = 'data/foo/au.hg'
74
74
75 A = 'data/foo/au.i'
75 A = 'data/foo/au.i'
76 B = 'data/foo/au.i'
76 B = 'data/foo/au.i'
77
77
78 A = 'data/foo/au.d'
78 A = 'data/foo/au.d'
79 B = 'data/foo/au.d'
79 B = 'data/foo/au.d'
80
80
81 A = 'data/foo/aux.hg'
81 A = 'data/foo/aux.hg'
82 B = 'data/foo/au~78.hg'
82 B = 'data/foo/au~78.hg'
83
83
84 A = 'data/foo/aux.i'
84 A = 'data/foo/aux.i'
85 B = 'data/foo/au~78.i'
85 B = 'data/foo/au~78.i'
86
86
87 A = 'data/foo/aux.d'
87 A = 'data/foo/aux.d'
88 B = 'data/foo/au~78.d'
88 B = 'data/foo/au~78.d'
89
89
90 A = 'data/foo/auxy.hg'
90 A = 'data/foo/auxy.hg'
91 B = 'data/foo/auxy.hg'
91 B = 'data/foo/auxy.hg'
92
92
93 A = 'data/foo/auxy.i'
93 A = 'data/foo/auxy.i'
94 B = 'data/foo/auxy.i'
94 B = 'data/foo/auxy.i'
95
95
96 A = 'data/foo/auxy.d'
96 A = 'data/foo/auxy.d'
97 B = 'data/foo/auxy.d'
97 B = 'data/foo/auxy.d'
98
98
99 plain .hg, .i and .d directories have the leading dot encoded
99 plain .hg, .i and .d directories have the leading dot encoded
100 A = 'data/.hg/.i/.d/foo'
100 A = 'data/.hg/.i/.d/foo'
101 B = 'data/~2ehg.hg/~2ei.hg/~2ed.hg/foo'
101 B = 'data/~2ehg.hg/~2ei.hg/~2ed.hg/foo'
102
102
103 A = 'data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i'
103 A = 'data/aux.bla/bla.aux/prn/PRN/lpt/com3/nul/coma/foo.NUL/normal.c.i'
104 B = 'data/au~78.bla/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i'
104 B = 'data/au~78.bla/bla.aux/pr~6e/_p_r_n/lpt/co~6d3/nu~6c/coma/foo._n_u_l/normal.c.i'
105
105
106 A = 'data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT.i'
106 A = 'data/AUX/SECOND/X.PRN/FOURTH/FI:FTH/SIXTH/SEVENTH/EIGHTH/NINETH/TENTH/ELEVENTH/LOREMIPSUM.TXT.i'
107 B = 'dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i'
107 B = 'dh/au~78/second/x.prn/fourth/fi~3afth/sixth/seventh/eighth/nineth/tenth/loremia20419e358ddff1bf8751e38288aff1d7c32ec05.i'
108
108
109 A = 'data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i'
109 A = 'data/enterprise/openesbaddons/contrib-imola/corba-bc/netbeansplugin/wsdlExtension/src/main/java/META-INF/services/org.netbeans.modules.xml.wsdl.bindingsupport.spi.ExtensibilityElementTemplateProvider.i'
110 B = 'dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i'
110 B = 'dh/enterpri/openesba/contrib-/corba-bc/netbeans/wsdlexte/src/main/java/org.net7018f27961fdf338a598a40c4683429e7ffb9743.i'
111
111
112 A = 'data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i'
112 A = 'data/AUX.THE-QUICK-BROWN-FOX-JU:MPS-OVER-THE-LAZY-DOG-THE-QUICK-BROWN-FOX-JUMPS-OVER-THE-LAZY-DOG.TXT.i'
113 B = 'dh/au~78.the-quick-brown-fox-ju~3amps-over-the-lazy-dog-the-quick-brown-fox-jud4dcadd033000ab2b26eb66bae1906bcb15d4a70.i'
113 B = 'dh/au~78.the-quick-brown-fox-ju~3amps-over-the-lazy-dog-the-quick-brown-fox-jud4dcadd033000ab2b26eb66bae1906bcb15d4a70.i'
114
114
115 A = 'data/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
115 A = 'data/Project Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
116 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilenaf93030515d9849cfdca52937c2204d19f83913e5.txt'
116 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilenaf93030515d9849cfdca52937c2204d19f83913e5.txt'
117
117
118 A = 'data/Project.Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
118 A = 'data/Project.Planning/Resources/AnotherLongDirectoryName/Followedbyanother/AndAnother/AndThenAnExtremelyLongFileName.txt'
119 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilena0fd7c506f5c9d58204444fc67e9499006bd2d445.txt'
119 B = 'dh/project_/resource/anotherl/followed/andanoth/andthenanextremelylongfilena0fd7c506f5c9d58204444fc67e9499006bd2d445.txt'
120
120
121 A = 'data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i'
121 A = 'data/foo.../foo / /a./_. /__/.x../ bla/.FOO/something.i'
122 B = 'data/foo..~2e/foo ~20/~20/a~2e/__.~20/____/~2ex.~2e/~20 bla/~2e_f_o_o/something.i'
122 B = 'data/foo..~2e/foo ~20/~20/a~2e/__.~20/____/~2ex.~2e/~20 bla/~2e_f_o_o/something.i'
123
123
124 A = 'data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9'
124 A = 'data/c/co/com/com0/com1/com2/com3/com4/com5/com6/com7/com8/com9'
125 B = 'data/c/co/com/com0/co~6d1/co~6d2/co~6d3/co~6d4/co~6d5/co~6d6/co~6d7/co~6d8/co~6d9'
125 B = 'data/c/co/com/com0/co~6d1/co~6d2/co~6d3/co~6d4/co~6d5/co~6d6/co~6d7/co~6d8/co~6d9'
126
126
127 A = 'data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9'
127 A = 'data/C/CO/COM/COM0/COM1/COM2/COM3/COM4/COM5/COM6/COM7/COM8/COM9'
128 B = 'data/_c/_c_o/_c_o_m/_c_o_m0/_c_o_m1/_c_o_m2/_c_o_m3/_c_o_m4/_c_o_m5/_c_o_m6/_c_o_m7/_c_o_m8/_c_o_m9'
128 B = 'data/_c/_c_o/_c_o_m/_c_o_m0/_c_o_m1/_c_o_m2/_c_o_m3/_c_o_m4/_c_o_m5/_c_o_m6/_c_o_m7/_c_o_m8/_c_o_m9'
129
129
130 A = 'data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x/com6.x/com7.x/com8.x/com9.x'
130 A = 'data/c.x/co.x/com.x/com0.x/com1.x/com2.x/com3.x/com4.x/com5.x/com6.x/com7.x/com8.x/com9.x'
131 B = 'data/c.x/co.x/com.x/com0.x/co~6d1.x/co~6d2.x/co~6d3.x/co~6d4.x/co~6d5.x/co~6d6.x/co~6d7.x/co~6d8.x/co~6d9.x'
131 B = 'data/c.x/co.x/com.x/com0.x/co~6d1.x/co~6d2.x/co~6d3.x/co~6d4.x/co~6d5.x/co~6d6.x/co~6d7.x/co~6d8.x/co~6d9.x'
132
132
133 A = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
133 A = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
134 B = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
134 B = 'data/x.c/x.co/x.com0/x.com1/x.com2/x.com3/x.com4/x.com5/x.com6/x.com7/x.com8/x.com9'
135
135
136 A = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
136 A = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
137 B = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
137 B = 'data/cx/cox/comx/com0x/com1x/com2x/com3x/com4x/com5x/com6x/com7x/com8x/com9x'
138
138
139 A = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
139 A = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
140 B = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
140 B = 'data/xc/xco/xcom0/xcom1/xcom2/xcom3/xcom4/xcom5/xcom6/xcom7/xcom8/xcom9'
141
141
142 A = 'data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9'
142 A = 'data/l/lp/lpt/lpt0/lpt1/lpt2/lpt3/lpt4/lpt5/lpt6/lpt7/lpt8/lpt9'
143 B = 'data/l/lp/lpt/lpt0/lp~741/lp~742/lp~743/lp~744/lp~745/lp~746/lp~747/lp~748/lp~749'
143 B = 'data/l/lp/lpt/lpt0/lp~741/lp~742/lp~743/lp~744/lp~745/lp~746/lp~747/lp~748/lp~749'
144
144
145 A = 'data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9'
145 A = 'data/L/LP/LPT/LPT0/LPT1/LPT2/LPT3/LPT4/LPT5/LPT6/LPT7/LPT8/LPT9'
146 B = 'data/_l/_l_p/_l_p_t/_l_p_t0/_l_p_t1/_l_p_t2/_l_p_t3/_l_p_t4/_l_p_t5/_l_p_t6/_l_p_t7/_l_p_t8/_l_p_t9'
146 B = 'data/_l/_l_p/_l_p_t/_l_p_t0/_l_p_t1/_l_p_t2/_l_p_t3/_l_p_t4/_l_p_t5/_l_p_t6/_l_p_t7/_l_p_t8/_l_p_t9'
147
147
148 A = 'data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x/lpt6.x/lpt7.x/lpt8.x/lpt9.x'
148 A = 'data/l.x/lp.x/lpt.x/lpt0.x/lpt1.x/lpt2.x/lpt3.x/lpt4.x/lpt5.x/lpt6.x/lpt7.x/lpt8.x/lpt9.x'
149 B = 'data/l.x/lp.x/lpt.x/lpt0.x/lp~741.x/lp~742.x/lp~743.x/lp~744.x/lp~745.x/lp~746.x/lp~747.x/lp~748.x/lp~749.x'
149 B = 'data/l.x/lp.x/lpt.x/lpt0.x/lp~741.x/lp~742.x/lp~743.x/lp~744.x/lp~745.x/lp~746.x/lp~747.x/lp~748.x/lp~749.x'
150
150
151 A = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
151 A = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
152 B = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
152 B = 'data/x.l/x.lp/x.lpt/x.lpt0/x.lpt1/x.lpt2/x.lpt3/x.lpt4/x.lpt5/x.lpt6/x.lpt7/x.lpt8/x.lpt9'
153
153
154 A = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
154 A = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
155 B = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
155 B = 'data/lx/lpx/lptx/lpt0x/lpt1x/lpt2x/lpt3x/lpt4x/lpt5x/lpt6x/lpt7x/lpt8x/lpt9x'
156
156
157 A = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
157 A = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
158 B = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
158 B = 'data/xl/xlp/xlpt/xlpt0/xlpt1/xlpt2/xlpt3/xlpt4/xlpt5/xlpt6/xlpt7/xlpt8/xlpt9'
159
159
160 A = 'data/con/p/pr/prn/a/au/aux/n/nu/nul'
160 A = 'data/con/p/pr/prn/a/au/aux/n/nu/nul'
161 B = 'data/co~6e/p/pr/pr~6e/a/au/au~78/n/nu/nu~6c'
161 B = 'data/co~6e/p/pr/pr~6e/a/au/au~78/n/nu/nu~6c'
162
162
163 A = 'data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL'
163 A = 'data/CON/P/PR/PRN/A/AU/AUX/N/NU/NUL'
164 B = 'data/_c_o_n/_p/_p_r/_p_r_n/_a/_a_u/_a_u_x/_n/_n_u/_n_u_l'
164 B = 'data/_c_o_n/_p/_p_r/_p_r_n/_a/_a_u/_a_u_x/_n/_n_u/_n_u_l'
165
165
166 A = 'data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x'
166 A = 'data/con.x/p.x/pr.x/prn.x/a.x/au.x/aux.x/n.x/nu.x/nul.x'
167 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'
167 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'
168
168
169 A = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
169 A = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
170 B = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
170 B = 'data/x.con/x.p/x.pr/x.prn/x.a/x.au/x.aux/x.n/x.nu/x.nul'
171
171
172 A = 'data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx'
172 A = 'data/conx/px/prx/prnx/ax/aux/auxx/nx/nux/nulx'
173 B = 'data/conx/px/prx/prnx/ax/au~78/auxx/nx/nux/nulx'
173 B = 'data/conx/px/prx/prnx/ax/au~78/auxx/nx/nux/nulx'
174
174
175 A = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
175 A = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
176 B = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
176 B = 'data/xcon/xp/xpr/xprn/xa/xau/xaux/xn/xnu/xnul'
177
177
178 A = 'data/a./au./aux./auxy./aux.'
178 A = 'data/a./au./aux./auxy./aux.'
179 B = 'data/a~2e/au~2e/au~78~2e/auxy~2e/au~78~2e'
179 B = 'data/a~2e/au~2e/au~78~2e/auxy~2e/au~78~2e'
180
180
181 A = 'data/c./co./con./cony./con.'
181 A = 'data/c./co./con./cony./con.'
182 B = 'data/c~2e/co~2e/co~6e~2e/cony~2e/co~6e~2e'
182 B = 'data/c~2e/co~2e/co~6e~2e/cony~2e/co~6e~2e'
183
183
184 A = 'data/p./pr./prn./prny./prn.'
184 A = 'data/p./pr./prn./prny./prn.'
185 B = 'data/p~2e/pr~2e/pr~6e~2e/prny~2e/pr~6e~2e'
185 B = 'data/p~2e/pr~2e/pr~6e~2e/prny~2e/pr~6e~2e'
186
186
187 A = 'data/n./nu./nul./nuly./nul.'
187 A = 'data/n./nu./nul./nuly./nul.'
188 B = 'data/n~2e/nu~2e/nu~6c~2e/nuly~2e/nu~6c~2e'
188 B = 'data/n~2e/nu~2e/nu~6c~2e/nuly~2e/nu~6c~2e'
189
189
190 A = 'data/l./lp./lpt./lpt1./lpt1y./lpt1.'
190 A = 'data/l./lp./lpt./lpt1./lpt1y./lpt1.'
191 B = 'data/l~2e/lp~2e/lpt~2e/lp~741~2e/lpt1y~2e/lp~741~2e'
191 B = 'data/l~2e/lp~2e/lpt~2e/lp~741~2e/lpt1y~2e/lp~741~2e'
192
192
193 A = 'data/lpt9./lpt9y./lpt9.'
193 A = 'data/lpt9./lpt9y./lpt9.'
194 B = 'data/lp~749~2e/lpt9y~2e/lp~749~2e'
194 B = 'data/lp~749~2e/lpt9y~2e/lp~749~2e'
195
195
196 A = 'data/com./com1./com1y./com1.'
196 A = 'data/com./com1./com1y./com1.'
197 B = 'data/com~2e/co~6d1~2e/com1y~2e/co~6d1~2e'
197 B = 'data/com~2e/co~6d1~2e/com1y~2e/co~6d1~2e'
198
198
199 A = 'data/com9./com9y./com9.'
199 A = 'data/com9./com9y./com9.'
200 B = 'data/co~6d9~2e/com9y~2e/co~6d9~2e'
200 B = 'data/co~6d9~2e/com9y~2e/co~6d9~2e'
201
201
202 A = 'data/a /au /aux /auxy /aux '
202 A = 'data/a /au /aux /auxy /aux '
203 B = 'data/a~20/au~20/aux~20/auxy~20/aux~20'
203 B = 'data/a~20/au~20/aux~20/auxy~20/aux~20'
204
204
205 largest unhashed path
205 largest unhashed path
206 A = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
206 A = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
207 B = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
207 B = 'data/123456789-123456789-123456789-123456789-123456789-unhashed--xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
208
208
209 shortest hashed path
209 shortest hashed path
210 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
210 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
211 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxe9c55002b50bf5181e7a6fc1f60b126e2a6fcf71'
211 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxe9c55002b50bf5181e7a6fc1f60b126e2a6fcf71'
212
212
213 changing one char in part that's hashed away produces a different hash
213 changing one char in part that's hashed away produces a different hash
214 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-123456789-123456'
214 A = 'data/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxy-123456789-123456'
215 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxd24fa4455faf8a94350c18e5eace7c2bb17af706'
215 B = 'dh/123456789-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxd24fa4455faf8a94350c18e5eace7c2bb17af706'
216
216
217 uppercase hitting length limit due to encoding
217 uppercase hitting length limit due to encoding
218 A = 'data/A23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
218 A = 'data/A23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
219 B = 'dh/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxcbbc657029b41b94ed510d05feb6716a5c03bc6b'
219 B = 'dh/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxcbbc657029b41b94ed510d05feb6716a5c03bc6b'
220
220
221 A = 'data/Z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
221 A = 'data/Z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
222 B = 'dh/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx938f32a725c89512833fb96b6602dd9ebff51ddd'
222 B = 'dh/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx938f32a725c89512833fb96b6602dd9ebff51ddd'
223
223
224 compare with lowercase not hitting limit
224 compare with lowercase not hitting limit
225 A = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
225 A = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
226 B = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
226 B = 'data/a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
227
227
228 A = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
228 A = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
229 B = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
229 B = 'data/z23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
230
230
231 not hitting limit with any of these
231 not hitting limit with any of these
232 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
232 A = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
233 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
233 B = 'data/abcdefghijklmnopqrstuvwxyz0123456789 !#%&\'()+,-.;=[]^`{}xxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
234
234
235 underbar hitting length limit due to encoding
235 underbar hitting length limit due to encoding
236 A = 'data/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
236 A = 'data/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
237 B = 'dh/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx9921a01af50feeabc060ce00eee4cba6efc31d2b'
237 B = 'dh/_23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx9921a01af50feeabc060ce00eee4cba6efc31d2b'
238
238
239 tilde hitting length limit due to encoding
239 tilde hitting length limit due to encoding
240 A = 'data/~23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
240 A = 'data/~23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
241 B = 'dh/~7e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx9cec6f97d569c10995f785720044ea2e4227481b'
241 B = 'dh/~7e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx9cec6f97d569c10995f785720044ea2e4227481b'
242
242
243 Windows reserved characters hitting length limit
243 Windows reserved characters hitting length limit
244 A = 'data/<23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
244 A = 'data/<23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
245 B = 'dh/~3c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxee67d8f275876ca1ef2500fc542e63c885c4e62d'
245 B = 'dh/~3c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxee67d8f275876ca1ef2500fc542e63c885c4e62d'
246
246
247 A = 'data/>23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
247 A = 'data/>23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
248 B = 'dh/~3e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx387a85a5b1547cc9136310c974df716818458ddb'
248 B = 'dh/~3e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx387a85a5b1547cc9136310c974df716818458ddb'
249
249
250 A = 'data/:23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
250 A = 'data/:23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
251 B = 'dh/~3a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2e4154fb571d13d22399c58cc4ef4858e4b75999'
251 B = 'dh/~3a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2e4154fb571d13d22399c58cc4ef4858e4b75999'
252
252
253 A = 'data/"23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
253 A = 'data/"23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
254 B = 'dh/~2223456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxfc7e3ec7b0687ee06ed8c32fef0eb0c1980259f5'
254 B = 'dh/~2223456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxfc7e3ec7b0687ee06ed8c32fef0eb0c1980259f5'
255
255
256 A = 'data/\\23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
256 A = 'data/\\23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
257 B = 'dh/~5c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx944e1f2b7110687e116e0d151328ac648b06ab4a'
257 B = 'dh/~5c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx944e1f2b7110687e116e0d151328ac648b06ab4a'
258
258
259 A = 'data/|23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
259 A = 'data/|23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
260 B = 'dh/~7c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx28b23dd3fd0242946334126ab62bcd772aac32f4'
260 B = 'dh/~7c23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx28b23dd3fd0242946334126ab62bcd772aac32f4'
261
261
262 A = 'data/?23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
262 A = 'data/?23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
263 B = 'dh/~3f23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa263022d3994d2143d98f94f431eef8b5e7e0f8a'
263 B = 'dh/~3f23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa263022d3994d2143d98f94f431eef8b5e7e0f8a'
264
264
265 A = 'data/*23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
265 A = 'data/*23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
266 B = 'dh/~2a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx0e7e6020e3c00ba7bb7893d84ca2966fbf53e140'
266 B = 'dh/~2a23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx0e7e6020e3c00ba7bb7893d84ca2966fbf53e140'
267
267
268 initial space hitting length limit
268 initial space hitting length limit
269 A = 'data/ 23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
269 A = 'data/ 23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
270 B = 'dh/~2023456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx92acbc78ef8c0b796111629a02601f07d8aec4ea'
270 B = 'dh/~2023456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx92acbc78ef8c0b796111629a02601f07d8aec4ea'
271
271
272 initial dot hitting length limit
272 initial dot hitting length limit
273 A = 'data/.23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
273 A = 'data/.23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
274 B = 'dh/~2e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxdbe19cc6505b3515ab9228cebf877ad07075168f'
274 B = 'dh/~2e23456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxdbe19cc6505b3515ab9228cebf877ad07075168f'
275
275
276 trailing space in filename hitting length limit
276 trailing space in filename hitting length limit
277 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234 '
277 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234 '
278 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx0025dc73e04f97426db4893e3bf67d581dc6d066'
278 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx0025dc73e04f97426db4893e3bf67d581dc6d066'
279
279
280 trailing dot in filename hitting length limit
280 trailing dot in filename hitting length limit
281 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234.'
281 A = 'data/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-1234.'
282 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx85a16cf03ee7feba8a5abc626f1ba9886d01e89d'
282 B = 'dh/123456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxx85a16cf03ee7feba8a5abc626f1ba9886d01e89d'
283
283
284 initial space in directory hitting length limit
284 initial space in directory hitting length limit
285 A = 'data/ x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
285 A = 'data/ x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
286 B = 'dh/~20x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx1b3a3b712b2ac00d6af14ae8b4c14fdbf904f516'
286 B = 'dh/~20x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx1b3a3b712b2ac00d6af14ae8b4c14fdbf904f516'
287
287
288 initial dot in directory hitting length limit
288 initial dot in directory hitting length limit
289 A = 'data/.x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
289 A = 'data/.x/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
290 B = 'dh/~2ex/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx39dbc4c193a5643a8936fc69c3363cd7ac91ab14'
290 B = 'dh/~2ex/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx39dbc4c193a5643a8936fc69c3363cd7ac91ab14'
291
291
292 trailing space in directory hitting length limit
292 trailing space in directory hitting length limit
293 A = 'data/x /456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
293 A = 'data/x /456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
294 B = 'dh/x~20/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2253c341df0b5290790ad312cd8499850f2273e5'
294 B = 'dh/x~20/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx2253c341df0b5290790ad312cd8499850f2273e5'
295
295
296 trailing dot in directory hitting length limit
296 trailing dot in directory hitting length limit
297 A = 'data/x./456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
297 A = 'data/x./456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
298 B = 'dh/x~2e/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxcc0324d696d34562b44b5138db08ee1594ccc583'
298 B = 'dh/x~2e/456789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxcc0324d696d34562b44b5138db08ee1594ccc583'
299
299
300 with directories that need direncoding, hitting length limit
300 with directories that need direncoding, hitting length limit
301 A = 'data/x.i/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
301 A = 'data/x.i/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
302 B = 'dh/x.i.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxa4c4399bdf81c67dbbbb7060aa0124d8dea94f74'
302 B = 'dh/x.i.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxa4c4399bdf81c67dbbbb7060aa0124d8dea94f74'
303
303
304 A = 'data/x.d/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
304 A = 'data/x.d/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
305 B = 'dh/x.d.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx1303fa90473b230615f5b3ea7b660e881ae5270a'
305 B = 'dh/x.d.hg/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx1303fa90473b230615f5b3ea7b660e881ae5270a'
306
306
307 A = 'data/x.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
307 A = 'data/x.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
308 B = 'dh/x.hg.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx26d724a8af68e7a4e4455e6602ea9adbd0eb801f'
308 B = 'dh/x.hg.hg/5789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxx26d724a8af68e7a4e4455e6602ea9adbd0eb801f'
309
309
310 Windows reserved filenames, hitting length limit
310 Windows reserved filenames, hitting length limit
311 A = 'data/con/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
311 A = 'data/con/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
312 B = 'dh/co~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc0794d4f4c605a2617900eb2563d7113cf6ea7d3'
312 B = 'dh/co~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc0794d4f4c605a2617900eb2563d7113cf6ea7d3'
313
313
314 A = 'data/prn/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
314 A = 'data/prn/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
315 B = 'dh/pr~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx64db876e1a9730e27236cb9b167aff942240e932'
315 B = 'dh/pr~6e/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx64db876e1a9730e27236cb9b167aff942240e932'
316
316
317 A = 'data/aux/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
317 A = 'data/aux/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
318 B = 'dh/au~78/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx8a178558405ca6fb4bbd75446dfa186f06751a0d'
318 B = 'dh/au~78/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx8a178558405ca6fb4bbd75446dfa186f06751a0d'
319
319
320 A = 'data/nul/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
320 A = 'data/nul/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
321 B = 'dh/nu~6c/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc5e51b6fec1bd07bd243b053a0c3f7209855b886'
321 B = 'dh/nu~6c/56789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxc5e51b6fec1bd07bd243b053a0c3f7209855b886'
322
322
323 A = 'data/com1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
323 A = 'data/com1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
324 B = 'dh/co~6d1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx32f5f44ece3bb62b9327369ca84cc19c86259fcd'
324 B = 'dh/co~6d1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx32f5f44ece3bb62b9327369ca84cc19c86259fcd'
325
325
326 A = 'data/com9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
326 A = 'data/com9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
327 B = 'dh/co~6d9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx734360b28c66a3230f55849fe8926206d229f990'
327 B = 'dh/co~6d9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxx734360b28c66a3230f55849fe8926206d229f990'
328
328
329 A = 'data/lpt1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
329 A = 'data/lpt1/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
330 B = 'dh/lp~741/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxe6f16ab4b6b0637676b2842b3345c9836df46ef7'
330 B = 'dh/lp~741/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxe6f16ab4b6b0637676b2842b3345c9836df46ef7'
331
331
332 A = 'data/lpt9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
332 A = 'data/lpt9/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
333 B = 'dh/lp~749/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa475814c51acead3e44f2ff801f0c4903f986157'
333 B = 'dh/lp~749/6789-123456789-123456789-123456789-123456789-xxxxxxxxx-xxxxxxxxx-xxxxxa475814c51acead3e44f2ff801f0c4903f986157'
334
334
335 non-reserved names, just not hitting limit
335 non-reserved names, just not hitting limit
336 A = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
336 A = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
337 B = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
337 B = 'data/123456789-123456789-123456789-123456789-123456789-/com/com0/lpt/lpt0/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12345'
338
338
339 hashed path with largest untruncated 1st dir
339 hashed path with largest untruncated 1st dir
340 A = 'data/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
340 A = 'data/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
341 B = 'dh/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx4e9e9e384d00929a93b6835fbf976eb32321ff3c'
341 B = 'dh/12345678/-123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx4e9e9e384d00929a93b6835fbf976eb32321ff3c'
342
342
343 hashed path with smallest truncated 1st dir
343 hashed path with smallest truncated 1st dir
344 A = 'data/123456789/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
344 A = 'data/123456789/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
345 B = 'dh/12345678/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxx1f4e4ec5f2be76e109bfaa8e31c062fe426d5490'
345 B = 'dh/12345678/123456789-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxx1f4e4ec5f2be76e109bfaa8e31c062fe426d5490'
346
346
347 hashed path with largest untruncated two dirs
347 hashed path with largest untruncated two dirs
348 A = 'data/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
348 A = 'data/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
349 B = 'dh/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx3332d8329d969cf835542a9f2cbcfb385b6cf39d'
349 B = 'dh/12345678/12345678/9-123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxx3332d8329d969cf835542a9f2cbcfb385b6cf39d'
350
350
351 hashed path with smallest truncated two dirs
351 hashed path with smallest truncated two dirs
352 A = 'data/123456789/123456789/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
352 A = 'data/123456789/123456789/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
353 B = 'dh/12345678/12345678/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx9699559798247dffa18717138859be5f8874840e'
353 B = 'dh/12345678/12345678/123456789-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx9699559798247dffa18717138859be5f8874840e'
354
354
355 hashed path with largest untruncated three dirs
355 hashed path with largest untruncated three dirs
356 A = 'data/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
356 A = 'data/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
357 B = 'dh/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxf0a2b053bb1369cce02f78c217d6a7aaea18c439'
357 B = 'dh/12345678/12345678/12345678/89-123456789-123456789-hashed----xxxxxxxxx-xxxxxxxf0a2b053bb1369cce02f78c217d6a7aaea18c439'
358
358
359 hashed path with smallest truncated three dirs
359 hashed path with smallest truncated three dirs
360 A = 'data/123456789/123456789/123456789/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
360 A = 'data/123456789/123456789/123456789/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
361 B = 'dh/12345678/12345678/12345678/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-1c6f8284967384ec13985a046d3553179d9d03cd'
361 B = 'dh/12345678/12345678/12345678/123456789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-1c6f8284967384ec13985a046d3553179d9d03cd'
362
362
363 hashed path with largest untruncated four dirs
363 hashed path with largest untruncated four dirs
364 A = 'data/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
364 A = 'data/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
365 B = 'dh/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxx0d30c99049d8f0ff97b94d4ef302027e8d54c6fd'
365 B = 'dh/12345678/12345678/12345678/12345678/789-123456789-hashed----xxxxxxxxx-xxxxxxx0d30c99049d8f0ff97b94d4ef302027e8d54c6fd'
366
366
367 hashed path with smallest truncated four dirs
367 hashed path with smallest truncated four dirs
368 A = 'data/123456789/123456789/123456789/123456789/123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
368 A = 'data/123456789/123456789/123456789/123456789/123456789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
369 B = 'dh/12345678/12345678/12345678/12345678/123456789-hashed----xxxxxxxxx-xxxxxxxxx-x46162779e1a771810b37a737f82ae7ed33771402'
369 B = 'dh/12345678/12345678/12345678/12345678/123456789-hashed----xxxxxxxxx-xxxxxxxxx-x46162779e1a771810b37a737f82ae7ed33771402'
370
370
371 hashed path with largest untruncated five dirs
371 hashed path with largest untruncated five dirs
372 A = 'data/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
372 A = 'data/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
373 B = 'dh/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxbfe752ddc8b003c2790c66a9f2eb1ea75c114390'
373 B = 'dh/12345678/12345678/12345678/12345678/12345678/6789-hashed----xxxxxxxxx-xxxxxxxbfe752ddc8b003c2790c66a9f2eb1ea75c114390'
374
374
375 hashed path with smallest truncated five dirs
375 hashed path with smallest truncated five dirs
376 A = 'data/123456789/123456789/123456789/123456789/123456789/hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
376 A = 'data/123456789/123456789/123456789/123456789/123456789/hashed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
377 B = 'dh/12345678/12345678/12345678/12345678/12345678/hashed----xxxxxxxxx-xxxxxxxxx-xxb94c27b3532fa880cdd572b1c514785cab7b6ff2'
377 B = 'dh/12345678/12345678/12345678/12345678/12345678/hashed----xxxxxxxxx-xxxxxxxxx-xxb94c27b3532fa880cdd572b1c514785cab7b6ff2'
378
378
379 hashed path with largest untruncated six dirs
379 hashed path with largest untruncated six dirs
380 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
380 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
381 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxcd8cc5483a0f3be409e0e5d4bf9e36e113c59235'
381 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/ed----xxxxxxxxx-xxxxxxxcd8cc5483a0f3be409e0e5d4bf9e36e113c59235'
382
382
383 hashed path with smallest truncated six dirs
383 hashed path with smallest truncated six dirs
384 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
384 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
385 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxxxxxxx-xxx47dd6f616f833a142da00701b334cebbf640da06'
385 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxxxxxxx-xxx47dd6f616f833a142da00701b334cebbf640da06'
386
386
387 hashed path with largest untruncated seven dirs
387 hashed path with largest untruncated seven dirs
388 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
388 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
389 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxx1c8ed635229fc22efe51035feeadeb4c8a0ecb82'
389 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxx-xxxxxxx1c8ed635229fc22efe51035feeadeb4c8a0ecb82'
390
390
391 hashed path with smallest truncated seven dirs
391 hashed path with smallest truncated seven dirs
392 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
392 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
393 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx298ff7d33f8ce6db57930837ffea2fb2f48bb926'
393 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx298ff7d33f8ce6db57930837ffea2fb2f48bb926'
394
394
395 hashed path with largest untruncated eight dirs
395 hashed path with largest untruncated eight dirs
396 (directory 8 is dropped because it hits _maxshortdirslen)
396 (directory 8 is dropped because it hits _maxshortdirslen)
397 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
397 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
398 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxc8996ccd41b471f768057181a4d59d2febe7277d'
398 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxx-xxxxxxc8996ccd41b471f768057181a4d59d2febe7277d'
399
399
400 hashed path with smallest truncated eight dirs
400 hashed path with smallest truncated eight dirs
401 (directory 8 is dropped because it hits _maxshortdirslen)
401 (directory 8 is dropped because it hits _maxshortdirslen)
402 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-123456789-123456'
402 A = 'data/123456789/123456789/123456789/123456789/123456789/123456789/123456789/123456789/xxxxxxxxx-xxxxxxxxx-123456789-123456'
403 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx4fa04a839a6bda93e1c21c713f2edcbd16e8890d'
403 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx4fa04a839a6bda93e1c21c713f2edcbd16e8890d'
404
404
405 hashed path with largest non-dropped directory 8
405 hashed path with largest non-dropped directory 8
406 (just not hitting the _maxshortdirslen boundary)
406 (just not hitting the _maxshortdirslen boundary)
407 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
407 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
408 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxx4d43d1ccaa20efbfe99ec779dc063611536ff2c5'
408 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxx4d43d1ccaa20efbfe99ec779dc063611536ff2c5'
409
409
410 ...adding one truncated char to dir 1..7 won't drop dir 8
410 ...adding one truncated char to dir 1..7 won't drop dir 8
411 A = 'data/12345678x/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
411 A = 'data/12345678x/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
412 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx0f9efce65189cc60fd90fe4ffd49d7b58bbe0f2e'
412 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx0f9efce65189cc60fd90fe4ffd49d7b58bbe0f2e'
413
413
414 A = 'data/12345678/12345678x/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
414 A = 'data/12345678/12345678x/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
415 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx945ca395708cafdd54a94501859beabd3e243921'
415 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx945ca395708cafdd54a94501859beabd3e243921'
416
416
417 A = 'data/12345678/12345678/12345678x/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
417 A = 'data/12345678/12345678/12345678x/12345678/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
418 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxac62bf6898c4fd0502146074547c11caa751a327'
418 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxac62bf6898c4fd0502146074547c11caa751a327'
419
419
420 A = 'data/12345678/12345678/12345678/12345678x/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
420 A = 'data/12345678/12345678/12345678/12345678x/12345678/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
421 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx2ae5a2baed7983fae8974d0ca06c6bf08b9aee92'
421 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx2ae5a2baed7983fae8974d0ca06c6bf08b9aee92'
422
422
423 A = 'data/12345678/12345678/12345678/12345678/12345678x/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
423 A = 'data/12345678/12345678/12345678/12345678/12345678x/12345678/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
424 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx214aba07b6687532a43d1e9eaf6e88cfca96b68c'
424 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxx214aba07b6687532a43d1e9eaf6e88cfca96b68c'
425
425
426 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
426 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678x/12345678/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
427 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxe7a022ae82f0f55cf4e0498e55ba59ea4ebb55bf'
427 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxe7a022ae82f0f55cf4e0498e55ba59ea4ebb55bf'
428
428
429 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
429 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678x/12345/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
430 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxb51ce61164996a80f36ce3cfe64b62d519aedae3'
430 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/xxxxxxxxb51ce61164996a80f36ce3cfe64b62d519aedae3'
431
431
432 hashed path with shortest dropped directory 8
432 hashed path with shortest dropped directory 8
433 (just hitting the _maxshortdirslen boundary)
433 (just hitting the _maxshortdirslen boundary)
434 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
434 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/123456/xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
435 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx11fa9873cc6c3215eae864528b5530a04efc6cfe'
435 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/xxxxxxxxx-xxxx11fa9873cc6c3215eae864528b5530a04efc6cfe'
436
436
437 hashed path that drops dir 8 due to dot or space at end is
437 hashed path that drops dir 8 due to dot or space at end is
438 encoded, and thus causing to hit _maxshortdirslen
438 encoded, and thus causing to hit _maxshortdirslen
439 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
439 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234./-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
440 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxx602df9b45bec564e2e1f0645d5140dddcc76ed58'
440 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxx602df9b45bec564e2e1f0645d5140dddcc76ed58'
441
441
442 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
442 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1234 /-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
443 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxxd99ff212bc84b4d1f70cd6b0071e3ef69d4e12ce'
443 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/-xxxxxxxxx-xxxd99ff212bc84b4d1f70cd6b0071e3ef69d4e12ce'
444
444
445 ... with dir 8 short enough for encoding
445 ... with dir 8 short enough for encoding
446 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
446 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12./xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
447 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~2e/xx-xxxxx7baeb5ed7f14a586ee1cacecdbcbff70032d1b3c'
447 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~2e/xx-xxxxx7baeb5ed7f14a586ee1cacecdbcbff70032d1b3c'
448
448
449 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
449 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12 /xx-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-123456'
450 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~20/xx-xxxxxcf79ca9795f77d7f75745da36807e5d772bd5182'
450 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12~20/xx-xxxxxcf79ca9795f77d7f75745da36807e5d772bd5182'
451
451
452 extensions are replicated on hashed paths (unbounded!)
452 Extensions are replicated on hashed paths. Note that
453 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345'
453 we only get to encode files that end in .i or .d inside the
454 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxx50a65dfc4ab6bf5fb9ba949447ccaf456c1ebf30.345'
454 store. Encoded filenames are thus bound in length.
455 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345.i'
456 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxc10ad03b5755ed524f5286aab1815dfe07729438.i'
455
457
456 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456'
458 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345.d'
457 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxe5f03f29a0a5876660a28aefc43f978add5a7659.3456'
459 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxx9eec83381f2b39ef5ac8b4ecdf2c94f7983f57c8.d'
458
460
459 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.34567'
461 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456.i'
460 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xc2609a92347e5a14c29211c6cd634732d1f0c968.34567'
462 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxb7796dc7d175cfb0bb8a7728f58f6ebec9042568.i'
461
463
462 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345678'
464 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.34567.i'
463 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-695e97d34c6cd8186afa3c74a56243bd645d50c3.345678'
465 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxb515857a6bfeef017c4894d8df42458ac65d55b8.i'
464
466
465 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789'
467 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.345678.i'
466 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/b067582449be78bc1266e9195785a5c6165380e6.3456789'
468 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxb05a0f247bc0a776211cd6a32ab714fd9cc09f2b.i'
467
469
468 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-'
470 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789.i'
469 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/d3442b4cfe1fdbde1c4c60ad421e946344111961.3456789-'
471 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxf192b48bff08d9e0e12035fb52bc58c70de72c94.i'
470
472
471 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1'
473 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-.i'
472 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/40a78aaf2114e1b82f91ac3ff234bf358d99dbba.3456789-1'
474 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxx435551e0ed4c7b083b9ba83cee916670e02e80ad.i'
473
475
474 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12'
476 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1.i'
475 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/1e04221e6fbff8cfbeaf555d11550dc573e3326d.3456789-12'
477 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxa7f74eb98d8d58b716356dfd26e2f9aaa65d6a9a.i'
476
478
477 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-123'
479 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12.i'
478 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/5e3b3973b3c9297b4577a4cf1d58162545a6b454.3456789-123'
480 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxed68d9bd43b931f0b100267fee488d65a0c66f62.i'
479
481
480 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1234'
482 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-123.i'
481 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/6ee6ef477c7ba44ff19c7d97fc4ac7fa4a8e4665.3456789-1234'
483 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxx5cea44de2b642d2ba2b4a30693ffb1049644d698.i'
484
485 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-1234.i'
486 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxx68462f62a7f230b39c1b5400d73ec35920990b7e.i'
482
487
483 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345'
488 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345.i'
484 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/f08b927027344ec4a7f1994ecb0effe2b9cc1215.3456789-12345'
489 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxx4cb852a314c6da240a83eec94761cdd71c6ec22e.i'
485
490
486 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTUVWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww'
491 A = 'data/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxxxxxx-xxxxxxxxx-xxxxxxxxx-123456789-12.3456789-12345-ABCDEFGHIJKLMNOPRSTUVWXYZ-abcdefghjiklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPRSTUVWXYZ-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww.i'
487 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/28de8651e30eeb95f4b97edb7d12b281d3fb3ce0.3456789-12345-abcdefghijklmnoprstuvwxyz-abcdefghjiklmnopqrstuvwxyz-abcdefghijklmnoprstuvwxyz-1234567890-xxxxxxxxx-xxxxxxxxx-xxxxxxxx-xxxxxxxxx-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww-wwwwwwwww'
492 B = 'dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/12345/-xxxxx93352aa50377751d9e5ebdf52da1e6e69a6887a6.i'
488
493
General Comments 0
You need to be logged in to leave comments. Login now