~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_pack.py

  • Committer: Vincent Ladeuil
  • Date: 2008-12-04 17:12:46 UTC
  • mto: (3902.1.1 bzr.integration)
  • mto: This revision was merged to the branch mainline in revision 3903.
  • Revision ID: v.ladeuil+lp@free.fr-20081204171246-p28b3u0e2alz53iv
Fix bug #270863 by preserving 'bzr+http[s]' decorator.

* bzrlib/transport/remote.py:
(RemoteHTTPTransport._redirected_to): Specific implementation to
handle the redirections.

* bzrlib/transport/http/_urllib.py:
(HttpTransport_urllib.__init__): Fix parameter order.

* bzrlib/transport/http/_pycurl.py:
(PyCurlTransport.__init__): Fix parameter order.

* bzrlib/transport/http/__init__.py:
(HttpTransportBase.external_url): Semi drive-by fix, external_url
shouldn't expose the implementation qualifier (it's private to bzr
not externally usable).

* bzrlib/transport/decorator.py:
(TransportDecorator._redirected_to): Cleanup.

* bzrlib/tests/test_smart_transport.py:
(RemoteHTTPTransportTestCase): Add specific tests for
_redirected_to.

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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
"""Tests for bzrlib.pack."""
18
18
 
42
42
        serialiser = pack.ContainerSerialiser()
43
43
        record = serialiser.bytes_record('bytes', [])
44
44
        self.assertEqual('B5\n\nbytes', record)
45
 
 
 
45
        
46
46
    def test_bytes_record_one_name_with_one_part(self):
47
47
        serialiser = pack.ContainerSerialiser()
48
48
        record = serialiser.bytes_record('bytes', [('name',)])
49
49
        self.assertEqual('B5\nname\n\nbytes', record)
50
 
 
 
50
        
51
51
    def test_bytes_record_one_name_with_two_parts(self):
52
52
        serialiser = pack.ContainerSerialiser()
53
53
        record = serialiser.bytes_record('bytes', [('part1', 'part2')])
54
54
        self.assertEqual('B5\npart1\x00part2\n\nbytes', record)
55
 
 
 
55
        
56
56
    def test_bytes_record_two_names(self):
57
57
        serialiser = pack.ContainerSerialiser()
58
58
        record = serialiser.bytes_record('bytes', [('name1',), ('name2',)])
68
68
class TestContainerWriter(tests.TestCase):
69
69
 
70
70
    def setUp(self):
71
 
        tests.TestCase.setUp(self)
72
71
        self.output = StringIO()
73
72
        self.writer = pack.ContainerWriter(self.output.write)
74
73
 
80
79
 
81
80
    def test_construct(self):
82
81
        """Test constructing a ContainerWriter.
83
 
 
 
82
        
84
83
        This uses None as the output stream to show that the constructor
85
84
        doesn't try to use the output stream.
86
85
        """
206
205
 
207
206
    def test_construct(self):
208
207
        """Test constructing a ContainerReader.
209
 
 
 
208
        
210
209
        This uses None as the output stream to show that the constructor doesn't
211
210
        try to use the input stream.
212
211
        """
244
243
 
245
244
    def test_container_with_one_unnamed_record(self):
246
245
        """Read a container with one Bytes record.
247
 
 
 
246
        
248
247
        Parsing Bytes records is more thoroughly exercised by
249
248
        TestBytesRecordReader.  This test is here to ensure that
250
249
        ContainerReader's integration with BytesRecordReader is working.
327
326
        reader = self.get_reader_for(
328
327
            "Bazaar pack format 1 (introduced in 0.18)\nB0\n\xcc\n\nE")
329
328
        self.assertRaises(errors.InvalidRecordError, reader.validate)
330
 
 
 
329
        
331
330
 
332
331
class TestBytesRecordReader(tests.TestCase):
333
332
    """Tests for reading and validating Bytes records with
334
333
    BytesRecordReader.
335
 
 
 
334
    
336
335
    Like TestContainerReader, this explicitly tests the reading of format 1
337
336
    data.  If a new version of the format is added, then a separate set of
338
337
    tests for reading that format should be added.
386
385
    def test_early_eof(self):
387
386
        """Tests for premature EOF occuring during parsing Bytes records with
388
387
        BytesRecordReader.
389
 
 
 
388
        
390
389
        A incomplete container might be interrupted at any point.  The
391
390
        BytesRecordReader needs to cope with the input stream running out no
392
391
        matter where it is in the parsing process.
519
518
    """Tests of the ReadVFile class.
520
519
 
521
520
    Error cases are deliberately undefined: this code adapts the underlying
522
 
    transport interface to a single 'streaming read' interface as
 
521
    transport interface to a single 'streaming read' interface as 
523
522
    ContainerReader needs.
524
523
    """
525
524
 
585
584
        parsed_records = parser.read_pending_records()
586
585
        self.assertEqual([expected_record], parsed_records)
587
586
 
588
 
 
 
587
        
589
588
class TestContainerPushParser(PushParserTestCase):
590
589
    """Tests for ContainerPushParser.
591
 
 
 
590
    
592
591
    The ContainerPushParser reads format 1 containers, so these tests
593
592
    explicitly test how it reacts to format 1 data.  If a new version of the
594
593
    format is added, then separate tests for that format should be added.
610
609
            [([('name1',)], 'body1'), ([('name2',)], 'body2')],
611
610
            parser.read_pending_records())
612
611
 
613
 
    def test_multiple_empty_records_at_once(self):
614
 
        """If multiple empty records worth of data are fed to the parser in one
615
 
        string, the parser will correctly parse all the records.
616
 
 
617
 
        (A naive implementation might stop after parsing the first empty
618
 
        record, because the buffer size had not changed.)
619
 
        """
620
 
        parser = self.make_parser_expecting_record_type()
621
 
        parser.accept_bytes("B0\nname1\n\nB0\nname2\n\n")
622
 
        self.assertEqual(
623
 
            [([('name1',)], ''), ([('name2',)], '')],
624
 
            parser.read_pending_records())
625
 
 
626
612
 
627
613
class TestContainerPushParserBytesParsing(PushParserTestCase):
628
614
    """Tests for reading Bytes records with ContainerPushParser.
629
 
 
 
615
    
630
616
    The ContainerPushParser reads format 1 containers, so these tests
631
617
    explicitly test how it reacts to format 1 data.  If a new version of the
632
618
    format is added, then separate tests for that format should be added.