~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/per_transport.py

(vila) Make all transport put_bytes() raises TypeError when given unicode
 strings rather than bytes (Vincent Ladeuil)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011, 2015 Canonical Ltd
 
1
# Copyright (C) 2005-2011, 2016 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
520
520
        self.assertTransportMode(t, 'dir777', 0777)
521
521
 
522
522
    def test_put_bytes_unicode(self):
523
 
        # Expect put_bytes to raise AssertionError or UnicodeEncodeError if
524
 
        # given unicode "bytes".  UnicodeEncodeError doesn't really make sense
525
 
        # (we don't want to encode unicode here at all, callers should be
526
 
        # strictly passing bytes to put_bytes), but we allow it for backwards
527
 
        # compatibility.  At some point we should use a specific exception.
528
 
        # See https://bugs.launchpad.net/bzr/+bug/106898.
529
523
        t = self.get_transport()
530
524
        if t.is_readonly():
531
525
            return
532
526
        unicode_string = u'\u1234'
533
 
        self.assertRaises(
534
 
            (AssertionError, UnicodeEncodeError),
535
 
            t.put_bytes, 'foo', unicode_string)
536
 
 
537
 
    def test_put_file_unicode(self):
538
 
        # Like put_bytes, except with a StringIO.StringIO of a unicode string.
539
 
        # This situation can happen (and has) if code is careless about the type
540
 
        # of "string" they initialise/write to a StringIO with.  We cannot use
541
 
        # cStringIO, because it never returns unicode from read.
542
 
        # Like put_bytes, UnicodeEncodeError isn't quite the right exception to
543
 
        # raise, but we raise it for hysterical raisins.
544
 
        t = self.get_transport()
545
 
        if t.is_readonly():
546
 
            return
547
 
        unicode_file = pyStringIO(u'\u1234')
548
 
        self.assertRaises(UnicodeEncodeError, t.put_file, 'foo', unicode_file)
 
527
        self.assertRaises(TypeError, t.put_bytes, 'foo', unicode_string)
549
528
 
550
529
    def test_mkdir(self):
551
530
        t = self.get_transport()