##// END OF EJS Templates
dirs: reject consecutive slashes in paths...
dirs: reject consecutive slashes in paths We shouldn't ever see those, and the fuzzer go really excited that if it gives us a 65k string with 55k slashes in it we use a lot of RAM. This is a better fix than what I tried in D7105. It was suggested by Yuya, and I verified it does in fact cause the fuzzer to not OOM. This is a revision of D7234, but with the missing set of an error added. I added a unit test of the dirs behavior because I needed to reason more carefully about the failure modes around consecutive slashes. Differential Revision: https://phab.mercurial-scm.org/D7252

File last commit:

r43799:5d40317d default
r43799:5d40317d default
Show More
test-dirs.py
27 lines | 632 B | text/x-python | PythonLexer
from __future__ import absolute_import
import unittest
import silenttestrunner
from mercurial import util
class dirstests(unittest.TestCase):
def testdirs(self):
for case, want in [
(b'a/a/a', [b'a', b'a/a', b'']),
(b'alpha/beta/gamma', [b'', b'alpha', b'alpha/beta']),
]:
d = util.dirs({})
d.addpath(case)
self.assertEqual(sorted(d), sorted(want))
def testinvalid(self):
with self.assertRaises(ValueError):
d = util.dirs({})
d.addpath(b'a//b')
if __name__ == '__main__':
silenttestrunner.main(__name__)