~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_urlutils.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-08-24 21:25:26 UTC
  • mfrom: (4641.1.1 integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090824212526-5j41jw5zsciji66e
(robertc) Back out draft documentation change landed as 'selftest
        improvements'. (Robert Collins)

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
"""Tests for the urlutils wrapper."""
18
18
 
21
21
import sys
22
22
 
23
23
from bzrlib import osutils, urlutils, win32utils
24
 
import bzrlib
25
24
from bzrlib.errors import InvalidURL, InvalidURLJoin, InvalidRebaseURLs
26
25
from bzrlib.tests import TestCaseInTempDir, TestCase, TestSkipped
27
26
 
28
27
 
29
28
class TestUrlToPath(TestCase):
30
 
    
 
29
 
31
30
    def test_basename(self):
32
31
        # bzrlib.urlutils.basename
33
32
        # Test bzrlib.urlutils.split()
82
81
 
83
82
        # Local paths are assumed to *not* be escaped at all
84
83
        try:
85
 
            u'uni/\xb5'.encode(bzrlib.user_encoding)
 
84
            u'uni/\xb5'.encode(osutils.get_user_encoding())
86
85
        except UnicodeError:
87
 
            # locale cannot handle unicode 
 
86
            # locale cannot handle unicode
88
87
            pass
89
88
        else:
90
89
            norm_file('uni/%C2%B5', u'uni/\xb5')
227
226
        test('file:///bar/foo', 'file:///bar/', 'foo')
228
227
        test('http://host/foo', 'http://host/', 'foo')
229
228
        test('http://host/', 'http://host', '')
230
 
        
 
229
 
231
230
        # Invalid joinings
232
231
        # Cannot go above root
233
232
        # Implicitly at root:
265
264
 
266
265
        # Test joining to a path with a trailing slash
267
266
        test('foo/bar', 'foo/', 'bar')
268
 
        
 
267
 
269
268
        # Invalid joinings
270
269
        # Cannot go above root
271
270
        self.assertRaises(InvalidURLJoin, urlutils.joinpath, '/', '../baz')
316
315
        #     to_url('C:/path/to/foo '))
317
316
        self.assertEqual('file:///C:/path/to/f%20oo',
318
317
            to_url('C:/path/to/f oo'))
319
 
        
 
318
 
320
319
        self.assertEqual('file:///', to_url('/'))
321
320
 
322
321
        try:
498
497
        self.assertEqual('%C3%A5', urlutils.escape(u'\xe5'))
499
498
        self.assertFalse(isinstance(urlutils.escape(u'\xe5'), unicode))
500
499
 
 
500
    def test_escape_tildes(self):
 
501
        self.assertEqual('~foo', urlutils.escape('~foo'))
 
502
 
501
503
    def test_unescape(self):
502
504
        self.assertEqual('%', urlutils.unescape('%25'))
503
505
        self.assertEqual(u'\xe5', urlutils.unescape('%C3%A5'))
514
516
        def test(expected, base, other):
515
517
            result = urlutils.relative_url(base, other)
516
518
            self.assertEqual(expected, result)
517
 
            
 
519
 
518
520
        test('a', 'http://host/', 'http://host/a')
519
521
        test('http://entirely/different', 'sftp://host/branch',
520
522
                    'http://entirely/different')
529
531
                    'sftp://host/home/jelmer/branch/2b')
530
532
        test('../../branch/feature/%2b', 'http://host/home/jelmer/bar/%2b',
531
533
                    'http://host/home/jelmer/branch/feature/%2b')
532
 
        test('../../branch/feature/2b', 'http://host/home/jelmer/bar/2b/', 
 
534
        test('../../branch/feature/2b', 'http://host/home/jelmer/bar/2b/',
533
535
                    'http://host/home/jelmer/branch/feature/2b')
534
536
        # relative_url should preserve a trailing slash
535
537
        test('../../branch/feature/2b/', 'http://host/home/jelmer/bar/2b/',
593
595
 
594
596
        os.chdir(u'dod\xe9')
595
597
 
596
 
        # On Mac OSX this directory is actually: 
 
598
        # On Mac OSX this directory is actually:
597
599
        #   u'/dode\u0301' => '/dode\xcc\x81
598
 
        # but we should normalize it back to 
 
600
        # but we should normalize it back to
599
601
        #   u'/dod\xe9' => '/dod\xc3\xa9'
600
602
        url = urlutils.local_path_to_url('.')
601
603
        self.assertEndsWith(url, '/dod%C3%A9')
670
672
                         '/bar', '/bar/baz'))
671
673
        self.assertEqual('.', urlutils.determine_relative_path(
672
674
                         '/bar', '/bar'))
 
675
 
 
676
 
 
677
class TestParseURL(TestCase):
 
678
 
 
679
    def test_parse_url(self):
 
680
        self.assertEqual(urlutils.parse_url('http://example.com:80/one'),
 
681
            ('http', None, None, 'example.com', 80, '/one'))
 
682
        self.assertEqual(urlutils.parse_url('http://[1:2:3::40]/one'),
 
683
                ('http', None, None, '1:2:3::40', None, '/one'))
 
684
        self.assertEqual(urlutils.parse_url('http://[1:2:3::40]:80/one'),
 
685
                ('http', None, None, '1:2:3::40', 80, '/one'))