~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_urlutils.py

  • Committer: Vincent Ladeuil
  • Date: 2010-02-10 15:46:03 UTC
  • mfrom: (4985.3.21 update)
  • mto: This revision was merged to the branch mainline in revision 5021.
  • Revision ID: v.ladeuil+lp@free.fr-20100210154603-k4no1gvfuqpzrw7p
Update performs two merges in a more logical order but stop on conflicts

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
 
19
19
import os
20
 
import re
21
20
import sys
22
21
 
23
22
from bzrlib import osutils, urlutils, win32utils
26
25
 
27
26
 
28
27
class TestUrlToPath(TestCase):
29
 
    
 
28
 
30
29
    def test_basename(self):
31
30
        # bzrlib.urlutils.basename
32
31
        # Test bzrlib.urlutils.split()
83
82
        try:
84
83
            u'uni/\xb5'.encode(osutils.get_user_encoding())
85
84
        except UnicodeError:
86
 
            # locale cannot handle unicode 
 
85
            # locale cannot handle unicode
87
86
            pass
88
87
        else:
89
88
            norm_file('uni/%C2%B5', u'uni/\xb5')
226
225
        test('file:///bar/foo', 'file:///bar/', 'foo')
227
226
        test('http://host/foo', 'http://host/', 'foo')
228
227
        test('http://host/', 'http://host', '')
229
 
        
 
228
 
230
229
        # Invalid joinings
231
230
        # Cannot go above root
232
231
        # Implicitly at root:
264
263
 
265
264
        # Test joining to a path with a trailing slash
266
265
        test('foo/bar', 'foo/', 'bar')
267
 
        
 
266
 
268
267
        # Invalid joinings
269
268
        # Cannot go above root
270
269
        self.assertRaises(InvalidURLJoin, urlutils.joinpath, '/', '../baz')
300
299
            from_url('file:///path/to/r%C3%A4ksm%C3%B6rg%C3%A5s'))
301
300
        self.assertEqual(u'/path/to/r\xe4ksm\xf6rg\xe5s',
302
301
            from_url('file:///path/to/r%c3%a4ksm%c3%b6rg%c3%a5s'))
 
302
        self.assertEqual(u'/path/to/r\xe4ksm\xf6rg\xe5s',
 
303
            from_url('file://localhost/path/to/r%c3%a4ksm%c3%b6rg%c3%a5s'))
303
304
 
304
305
        self.assertRaises(InvalidURL, from_url, '/path/to/foo')
 
306
        self.assertRaises(
 
307
            InvalidURL, from_url,
 
308
            'file://remotehost/path/to/r%c3%a4ksm%c3%b6rg%c3%a5s')
305
309
 
306
310
    def test_win32_local_path_to_url(self):
307
311
        to_url = urlutils._win32_local_path_to_url
315
319
        #     to_url('C:/path/to/foo '))
316
320
        self.assertEqual('file:///C:/path/to/f%20oo',
317
321
            to_url('C:/path/to/f oo'))
318
 
        
 
322
 
319
323
        self.assertEqual('file:///', to_url('/'))
320
324
 
321
325
        try:
497
501
        self.assertEqual('%C3%A5', urlutils.escape(u'\xe5'))
498
502
        self.assertFalse(isinstance(urlutils.escape(u'\xe5'), unicode))
499
503
 
 
504
    def test_escape_tildes(self):
 
505
        self.assertEqual('~foo', urlutils.escape('~foo'))
 
506
 
500
507
    def test_unescape(self):
501
508
        self.assertEqual('%', urlutils.unescape('%25'))
502
509
        self.assertEqual(u'\xe5', urlutils.unescape('%C3%A5'))
513
520
        def test(expected, base, other):
514
521
            result = urlutils.relative_url(base, other)
515
522
            self.assertEqual(expected, result)
516
 
            
 
523
 
517
524
        test('a', 'http://host/', 'http://host/a')
518
525
        test('http://entirely/different', 'sftp://host/branch',
519
526
                    'http://entirely/different')
528
535
                    'sftp://host/home/jelmer/branch/2b')
529
536
        test('../../branch/feature/%2b', 'http://host/home/jelmer/bar/%2b',
530
537
                    'http://host/home/jelmer/branch/feature/%2b')
531
 
        test('../../branch/feature/2b', 'http://host/home/jelmer/bar/2b/', 
 
538
        test('../../branch/feature/2b', 'http://host/home/jelmer/bar/2b/',
532
539
                    'http://host/home/jelmer/branch/feature/2b')
533
540
        # relative_url should preserve a trailing slash
534
541
        test('../../branch/feature/2b/', 'http://host/home/jelmer/bar/2b/',
592
599
 
593
600
        os.chdir(u'dod\xe9')
594
601
 
595
 
        # On Mac OSX this directory is actually: 
 
602
        # On Mac OSX this directory is actually:
596
603
        #   u'/dode\u0301' => '/dode\xcc\x81
597
 
        # but we should normalize it back to 
 
604
        # but we should normalize it back to
598
605
        #   u'/dod\xe9' => '/dod\xc3\xa9'
599
606
        url = urlutils.local_path_to_url('.')
600
607
        self.assertEndsWith(url, '/dod%C3%A9')
669
676
                         '/bar', '/bar/baz'))
670
677
        self.assertEqual('.', urlutils.determine_relative_path(
671
678
                         '/bar', '/bar'))
 
679
 
 
680
 
 
681
class TestParseURL(TestCase):
 
682
 
 
683
    def test_parse_url(self):
 
684
        self.assertEqual(urlutils.parse_url('http://example.com:80/one'),
 
685
            ('http', None, None, 'example.com', 80, '/one'))
 
686
        self.assertEqual(urlutils.parse_url('http://[1:2:3::40]/one'),
 
687
                ('http', None, None, '1:2:3::40', None, '/one'))
 
688
        self.assertEqual(urlutils.parse_url('http://[1:2:3::40]:80/one'),
 
689
                ('http', None, None, '1:2:3::40', 80, '/one'))