packaging: update dulwich to drop the certifi dependency on Windows
The presence of `certifi` causes the system certificate store to be ignored,
which was reported as a bug against TortoiseHg[1]. It was only pulled in on
Windows because of `dulwich`, which was copied from the old TortoiseHg install
scripts, in order to support `hg-git`.
This version of `dulwich` raises the minimum `urllib3` to a version (1.25) that
does certificate verification by default, without the help of `certifi`[2]. We
already bundle a newer version of `urllib3`. Note that `certifi` can still be
imported from the user site directory, if installed there. But the installer no
longer disables the system certificates by default.
[1] https://foss.heptapod.net/mercurial/tortoisehg/thg/-/issues/5825
[2] https://github.com/jelmer/dulwich/issues/1025
import unittest
from mercurial.utils import urlutil
class ParseRequestTests(unittest.TestCase):
def testparse(self):
self.assertEqual(
urlutil.parseurl(b'http://example.com/no/anchor'),
(b'http://example.com/no/anchor', (None, [])),
)
self.assertEqual(
urlutil.parseurl(b'http://example.com/an/anchor#foo'),
(b'http://example.com/an/anchor', (b'foo', [])),
)
self.assertEqual(
urlutil.parseurl(
b'http://example.com/no/anchor/branches', [b'foo']
),
(b'http://example.com/no/anchor/branches', (None, [b'foo'])),
)
self.assertEqual(
urlutil.parseurl(
b'http://example.com/an/anchor/branches#bar', [b'foo']
),
(b'http://example.com/an/anchor/branches', (b'bar', [b'foo'])),
)
self.assertEqual(
urlutil.parseurl(
b'http://example.com/an/anchor/branches-None#foo', None
),
(b'http://example.com/an/anchor/branches-None', (b'foo', [])),
)
self.assertEqual(
urlutil.parseurl(b'http://example.com/'),
(b'http://example.com/', (None, [])),
)
self.assertEqual(
urlutil.parseurl(b'http://example.com'),
(b'http://example.com/', (None, [])),
)
self.assertEqual(
urlutil.parseurl(b'http://example.com#foo'),
(b'http://example.com/', (b'foo', [])),
)
if __name__ == '__main__':
import silenttestrunner
silenttestrunner.main(__name__)