Merge lp:~jelmer/brz/some-more into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Jelmer Vernooij
Approved revision: no longer in the source branch.
Merge reported by: The Breezy Bot
Merged at revision: not available
Proposed branch: lp:~jelmer/brz/some-more
Merge into: lp:brz
Diff against target: 282 lines (+83/-44)
6 files modified
breezy/cache_utf8.py (+3/-2)
breezy/commands.py (+1/-1)
breezy/tests/blackbox/test_exceptions.py (+6/-3)
breezy/tests/test_urlutils.py (+6/-5)
breezy/urlutils.py (+48/-33)
python3.passing (+19/-0)
To merge this branch: bzr merge lp:~jelmer/brz/some-more
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+353541@code.launchpad.net

Commit message

Fix a couple more tests on Python 3.

Description of the change

Fix a couple more UI-y tests on Python 3.

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

I think I'd looked at some of these changes before, all seems reasonable to me. There's messiness but it's not new messiness.

review: Approve
Revision history for this message
The Breezy Bot (the-breezy-bot) wrote :

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'breezy/cache_utf8.py'
--- breezy/cache_utf8.py 2018-08-13 01:38:21 +0000
+++ breezy/cache_utf8.py 2018-09-11 03:12:36 +0000
@@ -108,8 +108,9 @@
108 # real Unicode string. Unicode and plain strings of this type will have the108 # real Unicode string. Unicode and plain strings of this type will have the
109 # same hash, so we can just use it as the key in _uni_to_utf8, but we need109 # same hash, so we can just use it as the key in _uni_to_utf8, but we need
110 # the return value to be different in _utf8_to_uni110 # the return value to be different in _utf8_to_uni
111 ascii_str = _uni_to_utf8.setdefault(ascii_str, ascii_str)111 uni_str = ascii_str.decode('ascii')
112 _utf8_to_uni.setdefault(ascii_str, ascii_str.decode('ascii'))112 ascii_str = _uni_to_utf8.setdefault(uni_str, ascii_str)
113 _utf8_to_uni.setdefault(ascii_str, uni_str)
113 return ascii_str114 return ascii_str
114115
115116
116117
=== modified file 'breezy/commands.py'
--- breezy/commands.py 2018-07-26 01:01:49 +0000
+++ breezy/commands.py 2018-09-11 03:12:36 +0000
@@ -901,7 +901,7 @@
901 else:901 else:
902 args = argv902 args = argv
903903
904 # for python 2.5 and later, optparse raises this exception if a non-ascii904 # python 2's optparse raises this exception if a non-ascii
905 # option name is given. See http://bugs.python.org/issue2931905 # option name is given. See http://bugs.python.org/issue2931
906 try:906 try:
907 options, args = parser.parse_args(args)907 options, args = parser.parse_args(args)
908908
=== modified file 'breezy/tests/blackbox/test_exceptions.py'
--- breezy/tests/blackbox/test_exceptions.py 2018-08-26 11:21:16 +0000
+++ breezy/tests/blackbox/test_exceptions.py 2018-09-11 03:12:36 +0000
@@ -54,7 +54,7 @@
54 raise tests.TestNotApplicable("Needs system beholden to C locales")54 raise tests.TestNotApplicable("Needs system beholden to C locales")
55 if PY3:55 if PY3:
56 raise tests.TestNotApplicable("Unable to pass argv to subprocess as bytes")56 raise tests.TestNotApplicable("Unable to pass argv to subprocess as bytes")
57 out, err = self.run_bzr_subprocess(["\xa0"],57 out, err = self.run_bzr_subprocess([b"\xa0"],
58 env_changes={"LANG": "C", "LC_ALL": "C"},58 env_changes={"LANG": "C", "LC_ALL": "C"},
59 universal_newlines=True,59 universal_newlines=True,
60 retcode=errors.EXIT_ERROR)60 retcode=errors.EXIT_ERROR)
@@ -75,8 +75,11 @@
75 "Test that we handle http://bugs.python.org/issue2931"75 "Test that we handle http://bugs.python.org/issue2931"
7676
77 def test_nonascii_optparse(self):77 def test_nonascii_optparse(self):
78 """Reasonable error raised when non-ascii in option name"""78 """Reasonable error raised when non-ascii in option name on Python 2"""
79 error_re = 'Only ASCII permitted in option names'79 if PY3:
80 error_re = u'no such option: -\xe4'
81 else:
82 error_re = 'Only ASCII permitted in option names'
80 out = self.run_bzr_error([error_re], ['st', u'-\xe4'])83 out = self.run_bzr_error([error_re], ['st', u'-\xe4'])
8184
8285
8386
=== modified file 'breezy/tests/test_urlutils.py'
--- breezy/tests/test_urlutils.py 2018-08-05 22:33:53 +0000
+++ breezy/tests/test_urlutils.py 2018-09-11 03:12:36 +0000
@@ -126,11 +126,12 @@
126 eq('http://host/~bob%2525-._',126 eq('http://host/~bob%2525-._',
127 normalize_url(u'http://host/%7Ebob%2525%2D%2E%5F'))127 normalize_url(u'http://host/%7Ebob%2525%2D%2E%5F'))
128128
129 # Normalize verifies URLs when they are not unicode129 if not PY3:
130 # (indicating they did not come from the user)130 # On Python 2, normalize verifies URLs when they are not unicode
131 self.assertRaises(urlutils.InvalidURL, normalize_url,131 # (indicating they did not come from the user)
132 'http://host/\xb5')132 self.assertRaises(urlutils.InvalidURL, normalize_url,
133 self.assertRaises(urlutils.InvalidURL, normalize_url, 'http://host/ ')133 b'http://host/\xb5')
134 self.assertRaises(urlutils.InvalidURL, normalize_url, b'http://host/ ')
134135
135 def test_url_scheme_re(self):136 def test_url_scheme_re(self):
136 # Test paths that may be URLs137 # Test paths that may be URLs
137138
=== modified file 'breezy/urlutils.py'
--- breezy/urlutils.py 2018-08-19 12:24:17 +0000
+++ breezy/urlutils.py 2018-09-11 03:12:36 +0000
@@ -38,6 +38,7 @@
38""")38""")
3939
40from .sixish import (40from .sixish import (
41 int2byte,
41 PY3,42 PY3,
42 text_type,43 text_type,
43 )44 )
@@ -700,10 +701,10 @@
700_no_decode_ords = [ord(c) for c in _no_decode_chars]701_no_decode_ords = [ord(c) for c in _no_decode_chars]
701_no_decode_hex = (['%02x' % o for o in _no_decode_ords]702_no_decode_hex = (['%02x' % o for o in _no_decode_ords]
702 + ['%02X' % o for o in _no_decode_ords])703 + ['%02X' % o for o in _no_decode_ords])
703_hex_display_map = dict(([('%02x' % o, chr(o)) for o in range(256)]704_hex_display_map = dict(([('%02x' % o, int2byte(o)) for o in range(256)]
704 + [('%02X' % o, chr(o)) for o in range(256)]))705 + [('%02X' % o, int2byte(o)) for o in range(256)]))
705#These entries get mapped to themselves706#These entries get mapped to themselves
706_hex_display_map.update((hex, '%'+hex) for hex in _no_decode_hex)707_hex_display_map.update((hex, b'%'+hex.encode('ascii')) for hex in _no_decode_hex)
707708
708# These characters shouldn't be percent-encoded, and it's always safe to709# These characters shouldn't be percent-encoded, and it's always safe to
709# unencode them if they are.710# unencode them if they are.
@@ -724,6 +725,49 @@
724 "%#" # Extra reserved characters725 "%#" # Extra reserved characters
725)726)
726727
728
729def _unescape_segment_for_display(segment, encoding):
730 """Unescape a segment for display.
731
732 Helper for unescape_for_display
733
734 :param url: A 7-bit ASCII URL
735 :param encoding: The final output encoding
736
737 :return: A unicode string which can be safely encoded into the
738 specified encoding.
739 """
740 escaped_chunks = segment.split('%')
741 escaped_chunks[0] = escaped_chunks[0].encode('utf-8')
742 for j in range(1, len(escaped_chunks)):
743 item = escaped_chunks[j]
744 try:
745 escaped_chunks[j] = _hex_display_map[item[:2]]
746 except KeyError:
747 # Put back the percent symbol
748 escaped_chunks[j] = b'%' + (item[:2].encode('utf-8') if PY3 else item[:2])
749 except UnicodeDecodeError:
750 escaped_chunks[j] = unichr(int(item[:2], 16)).encode('utf-8')
751 escaped_chunks[j] += (item[2:].encode('utf-8') if PY3 else item[2:])
752 unescaped = b''.join(escaped_chunks)
753 try:
754 decoded = unescaped.decode('utf-8')
755 except UnicodeDecodeError:
756 # If this path segment cannot be properly utf-8 decoded
757 # after doing unescaping we will just leave it alone
758 return segment
759 else:
760 try:
761 decoded.encode(encoding)
762 except UnicodeEncodeError:
763 # If this chunk cannot be encoded in the local
764 # encoding, then we should leave it alone
765 return segment
766 else:
767 # Otherwise take the url decoded one
768 return decoded
769
770
727def unescape_for_display(url, encoding):771def unescape_for_display(url, encoding):
728 """Decode what you can for a URL, so that we get a nice looking path.772 """Decode what you can for a URL, so that we get a nice looking path.
729773
@@ -752,36 +796,7 @@
752 # Split into sections to try to decode utf-8796 # Split into sections to try to decode utf-8
753 res = url.split('/')797 res = url.split('/')
754 for i in range(1, len(res)):798 for i in range(1, len(res)):
755 escaped_chunks = res[i].split('%')799 res[i] = _unescape_segment_for_display(res[i], encoding)
756 for j in range(1, len(escaped_chunks)):
757 item = escaped_chunks[j]
758 try:
759 escaped_chunks[j] = _hex_display_map[item[:2]] + item[2:]
760 except KeyError:
761 # Put back the percent symbol
762 escaped_chunks[j] = '%' + item
763 except UnicodeDecodeError:
764 escaped_chunks[j] = unichr(int(item[:2], 16)) + item[2:]
765 unescaped = ''.join(escaped_chunks)
766 if sys.version_info[0] == 2:
767 try:
768 decoded = unescaped.decode('utf-8')
769 except UnicodeDecodeError:
770 # If this path segment cannot be properly utf-8 decoded
771 # after doing unescaping we will just leave it alone
772 pass
773 else:
774 try:
775 decoded.encode(encoding)
776 except UnicodeEncodeError:
777 # If this chunk cannot be encoded in the local
778 # encoding, then we should leave it alone
779 pass
780 else:
781 # Otherwise take the url decoded one
782 res[i] = decoded
783 else:
784 res[i] = unescaped
785 return u'/'.join(res)800 return u'/'.join(res)
786801
787802
788803
=== modified file 'python3.passing'
--- python3.passing 2018-09-11 02:50:43 +0000
+++ python3.passing 2018-09-11 03:12:36 +0000
@@ -2013,6 +2013,7 @@
2013breezy.tests.blackbox.test_exceptions.TestExceptionReporting.test_exception_exitcode2013breezy.tests.blackbox.test_exceptions.TestExceptionReporting.test_exception_exitcode
2014breezy.tests.blackbox.test_exceptions.TestExceptionReporting.test_undecodable_argv2014breezy.tests.blackbox.test_exceptions.TestExceptionReporting.test_undecodable_argv
2015breezy.tests.blackbox.test_exceptions.TestExceptionReporting.test_utf8_default_fs_enc2015breezy.tests.blackbox.test_exceptions.TestExceptionReporting.test_utf8_default_fs_enc
2016breezy.tests.blackbox.test_exceptions.TestOptParseBugHandling.test_nonascii_optparse
2016breezy.tests.blackbox.test_export_pot.TestExportPot.test_export_pot2017breezy.tests.blackbox.test_export_pot.TestExportPot.test_export_pot
2017breezy.tests.blackbox.test_export_pot.TestExportPot.test_export_pot_plugin2018breezy.tests.blackbox.test_export_pot.TestExportPot.test_export_pot_plugin
2018breezy.tests.blackbox.test_export_pot.TestExportPot.test_export_pot_plugin_unknown2019breezy.tests.blackbox.test_export_pot.TestExportPot.test_export_pot_plugin_unknown
@@ -8485,7 +8486,9 @@
8485breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterTree(PreviewTree))8486breezy.tests.per_intertree.test_compare.TestCompare.test_content_modification(InterTree(PreviewTree))
8486breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(C))8487breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(C))
8487breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(PY))8488breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterDirStateTree(PY))
8489breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree)
8488breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree(CHKInventory))8490breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree(CHKInventory))
8491breezy.tests.per_intertree.test_compare.TestCompare.test_dangling(InterTree(PreviewTree))
8489breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(C))8492breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(C))
8490breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(PY))8493breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterDirStateTree(PY))
8491breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree)8494breezy.tests.per_intertree.test_compare.TestCompare.test_default_ignores_unversioned_files(InterTree)
@@ -8597,7 +8600,10 @@
8597breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(CHKInventory))8600breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(CHKInventory))
8598breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(PreviewTree))8601breezy.tests.per_intertree.test_compare.TestIterChanges.test_default_ignores_unversioned_files(InterTree(PreviewTree))
8599breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterDirStateTree(C))8602breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterDirStateTree(C))
8603breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterDirStateTree(PY))
8604breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree)
8600breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree(CHKInventory))8605breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree(CHKInventory))
8606breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_and_unknown(InterTree(PreviewTree))
8601breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_unicode(InterDirStateTree(C))8607breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_unicode(InterDirStateTree(C))
8602breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_unicode(InterDirStateTree(PY))8608breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_unicode(InterDirStateTree(PY))
8603breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_unicode(InterTree)8609breezy.tests.per_intertree.test_compare.TestIterChanges.test_deleted_unicode(InterTree)
@@ -8699,7 +8705,10 @@
8699breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(CHKInventory))8705breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(CHKInventory))
8700breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(PreviewTree))8706breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_added(InterTree(PreviewTree))
8701breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterDirStateTree(C))8707breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterDirStateTree(C))
8708breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterDirStateTree(PY))
8709breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree)
8702breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree(CHKInventory))8710breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree(CHKInventory))
8711breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_and_unknown(InterTree(PreviewTree))
8703breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_unicode(InterDirStateTree(C))8712breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_unicode(InterDirStateTree(C))
8704breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_unicode(InterDirStateTree(PY))8713breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_unicode(InterDirStateTree(PY))
8705breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_unicode(InterTree)8714breezy.tests.per_intertree.test_compare.TestIterChanges.test_renamed_unicode(InterTree)
@@ -8796,7 +8805,10 @@
8796breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_unicode(InterTree(CHKInventory))8805breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_unicode(InterTree(CHKInventory))
8797breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_unicode(InterTree(PreviewTree))8806breezy.tests.per_intertree.test_compare.TestIterChanges.test_unknown_unicode(InterTree(PreviewTree))
8798breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(C))8807breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(C))
8808breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterDirStateTree(PY))
8809breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree)
8799breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(CHKInventory))8810breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(CHKInventory))
8811breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_target_matching_source_old_names(InterTree(PreviewTree))
8800breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(C))8812breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(C))
8801breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(PY))8813breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterDirStateTree(PY))
8802breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree)8814breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_paths_in_tree(InterTree)
@@ -8813,7 +8825,10 @@
8813breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(CHKInventory))8825breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(CHKInventory))
8814breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(PreviewTree))8826breezy.tests.per_intertree.test_compare.TestIterChanges.test_unversioned_subtree_only_emits_root(InterTree(PreviewTree))
8815breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterDirStateTree(C))8827breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterDirStateTree(C))
8828breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterDirStateTree(PY))
8829breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterTree)
8816breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterTree(CHKInventory))8830breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterTree(CHKInventory))
8831breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks(InterTree(PreviewTree))
8817breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterDirStateTree(C))8832breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterDirStateTree(C))
8818breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterDirStateTree(PY))8833breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterDirStateTree(PY))
8819breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterTree)8834breezy.tests.per_intertree.test_compare.TestIterChanges.test_versioned_symlinks_specific_files(InterTree)
@@ -16291,6 +16306,8 @@
16291breezy.tests.per_transport.TransportTests.test_connection_error(ChrootTransport,TestingChrootServer)16306breezy.tests.per_transport.TransportTests.test_connection_error(ChrootTransport,TestingChrootServer)
16292breezy.tests.per_transport.TransportTests.test_connection_error(FakeNFSTransportDecorator,FakeNFSServer)16307breezy.tests.per_transport.TransportTests.test_connection_error(FakeNFSTransportDecorator,FakeNFSServer)
16293breezy.tests.per_transport.TransportTests.test_connection_error(FakeVFATTransportDecorator,FakeVFATServer)16308breezy.tests.per_transport.TransportTests.test_connection_error(FakeVFATTransportDecorator,FakeVFATServer)
16309breezy.tests.per_transport.TransportTests.test_connection_error(HTTPS_transport,HTTPSServer)
16310breezy.tests.per_transport.TransportTests.test_connection_error(HttpTransport,HttpServer)
16294breezy.tests.per_transport.TransportTests.test_connection_error(LocalTransport,LocalURLServer)16311breezy.tests.per_transport.TransportTests.test_connection_error(LocalTransport,LocalURLServer)
16295breezy.tests.per_transport.TransportTests.test_connection_error(MemoryTransport,MemoryServer)16312breezy.tests.per_transport.TransportTests.test_connection_error(MemoryTransport,MemoryServer)
16296breezy.tests.per_transport.TransportTests.test_connection_error(NoSmartTransportDecorator,NoSmartTransportServer)16313breezy.tests.per_transport.TransportTests.test_connection_error(NoSmartTransportDecorator,NoSmartTransportServer)
@@ -30677,6 +30694,7 @@
30677breezy.tests.test_urlutils.TestUrlToPath.test_join_segment_parameters30694breezy.tests.test_urlutils.TestUrlToPath.test_join_segment_parameters
30678breezy.tests.test_urlutils.TestUrlToPath.test_join_segment_parameters_raw30695breezy.tests.test_urlutils.TestUrlToPath.test_join_segment_parameters_raw
30679breezy.tests.test_urlutils.TestUrlToPath.test_normalize_url_files30696breezy.tests.test_urlutils.TestUrlToPath.test_normalize_url_files
30697breezy.tests.test_urlutils.TestUrlToPath.test_normalize_url_hybrid
30680breezy.tests.test_urlutils.TestUrlToPath.test_posix_local_path_from_url30698breezy.tests.test_urlutils.TestUrlToPath.test_posix_local_path_from_url
30681breezy.tests.test_urlutils.TestUrlToPath.test_posix_local_path_to_url30699breezy.tests.test_urlutils.TestUrlToPath.test_posix_local_path_to_url
30682breezy.tests.test_urlutils.TestUrlToPath.test_relative_url30700breezy.tests.test_urlutils.TestUrlToPath.test_relative_url
@@ -30685,6 +30703,7 @@
30685breezy.tests.test_urlutils.TestUrlToPath.test_split_segment_parameters_raw30703breezy.tests.test_urlutils.TestUrlToPath.test_split_segment_parameters_raw
30686breezy.tests.test_urlutils.TestUrlToPath.test_strip_trailing_slash30704breezy.tests.test_urlutils.TestUrlToPath.test_strip_trailing_slash
30687breezy.tests.test_urlutils.TestUrlToPath.test_unescape30705breezy.tests.test_urlutils.TestUrlToPath.test_unescape
30706breezy.tests.test_urlutils.TestUrlToPath.test_unescape_for_display_utf8
30688breezy.tests.test_urlutils.TestUrlToPath.test_url_scheme_re30707breezy.tests.test_urlutils.TestUrlToPath.test_url_scheme_re
30689breezy.tests.test_urlutils.TestUrlToPath.test_win32_extract_drive_letter30708breezy.tests.test_urlutils.TestUrlToPath.test_win32_extract_drive_letter
30690breezy.tests.test_urlutils.TestUrlToPath.test_win32_local_path_from_url30709breezy.tests.test_urlutils.TestUrlToPath.test_win32_local_path_from_url

Subscribers

People subscribed via source and target branches