~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_knit.py

Merge Martin gz's tweaks for signed vs unsigned, but tweak them a bit further.

Show diffs side-by-side

added added

removed removed

Lines of Context:
62
62
    network_bytes_to_kind_and_offset,
63
63
    RecordingVersionedFilesDecorator,
64
64
    )
65
 
from bzrlib.tests import (
66
 
    features,
67
 
    )
68
 
 
69
 
 
70
 
compiled_knit_feature = features.ModuleAvailableFeature(
71
 
    'bzrlib._knit_load_data_pyx')
 
65
 
 
66
 
 
67
compiled_knit_feature = tests.ModuleAvailableFeature(
 
68
                            'bzrlib._knit_load_data_pyx')
72
69
 
73
70
 
74
71
class KnitContentTestsMixin(object):
447
444
        except _TestException, e:
448
445
            retry_exc = errors.RetryWithNewPacks(None, reload_occurred=False,
449
446
                                                 exc_info=sys.exc_info())
450
 
        # GZ 2010-08-10: Cycle with exc_info affects 3 tests
451
447
        return retry_exc
452
448
 
453
449
    def test_read_from_several_packs(self):
736
732
 
737
733
    def make_multiple_records(self):
738
734
        """Create the content for multiple records."""
739
 
        sha1sum = osutils.sha_string('foo\nbar\n')
 
735
        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
740
736
        total_txt = []
741
737
        gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
742
738
                                        'foo\n'
745
741
                                        % (sha1sum,))
746
742
        record_1 = (0, len(gz_txt), sha1sum)
747
743
        total_txt.append(gz_txt)
748
 
        sha1sum = osutils.sha_string('baz\n')
 
744
        sha1sum = osutils.sha('baz\n').hexdigest()
749
745
        gz_txt = self.create_gz_content('version rev-id-2 1 %s\n'
750
746
                                        'baz\n'
751
747
                                        'end rev-id-2\n'
755
751
        return total_txt, record_1, record_2
756
752
 
757
753
    def test_valid_knit_data(self):
758
 
        sha1sum = osutils.sha_string('foo\nbar\n')
 
754
        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
759
755
        gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
760
756
                                        'foo\n'
761
757
                                        'bar\n'
792
788
                         raw_contents)
793
789
 
794
790
    def test_not_enough_lines(self):
795
 
        sha1sum = osutils.sha_string('foo\n')
 
791
        sha1sum = osutils.sha('foo\n').hexdigest()
796
792
        # record says 2 lines data says 1
797
793
        gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
798
794
                                        'foo\n'
810
806
        self.assertEqual([(('rev-id-1',),  gz_txt, sha1sum)], raw_contents)
811
807
 
812
808
    def test_too_many_lines(self):
813
 
        sha1sum = osutils.sha_string('foo\nbar\n')
 
809
        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
814
810
        # record says 1 lines data says 2
815
811
        gz_txt = self.create_gz_content('version rev-id-1 1 %s\n'
816
812
                                        'foo\n'
829
825
        self.assertEqual([(('rev-id-1',), gz_txt, sha1sum)], raw_contents)
830
826
 
831
827
    def test_mismatched_version_id(self):
832
 
        sha1sum = osutils.sha_string('foo\nbar\n')
 
828
        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
833
829
        gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
834
830
                                        'foo\n'
835
831
                                        'bar\n'
848
844
            knit._read_records_iter_raw(records))
849
845
 
850
846
    def test_uncompressed_data(self):
851
 
        sha1sum = osutils.sha_string('foo\nbar\n')
 
847
        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
852
848
        txt = ('version rev-id-1 2 %s\n'
853
849
               'foo\n'
854
850
               'bar\n'
868
864
            knit._read_records_iter_raw(records))
869
865
 
870
866
    def test_corrupted_data(self):
871
 
        sha1sum = osutils.sha_string('foo\nbar\n')
 
867
        sha1sum = osutils.sha('foo\nbar\n').hexdigest()
872
868
        gz_txt = self.create_gz_content('version rev-id-1 2 %s\n'
873
869
                                        'foo\n'
874
870
                                        'bar\n'
1196
1192
            self.assertRaises(errors.KnitCorrupt, index.keys)
1197
1193
        except TypeError, e:
1198
1194
            if (str(e) == ('exceptions must be strings, classes, or instances,'
1199
 
                           ' not exceptions.IndexError')):
 
1195
                           ' not exceptions.IndexError')
 
1196
                and sys.version_info[0:2] >= (2,5)):
1200
1197
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
1201
1198
                                  ' raising new style exceptions with python'
1202
1199
                                  ' >=2.5')
1215
1212
            self.assertRaises(errors.KnitCorrupt, index.keys)
1216
1213
        except TypeError, e:
1217
1214
            if (str(e) == ('exceptions must be strings, classes, or instances,'
1218
 
                           ' not exceptions.ValueError')):
 
1215
                           ' not exceptions.ValueError')
 
1216
                and sys.version_info[0:2] >= (2,5)):
1219
1217
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
1220
1218
                                  ' raising new style exceptions with python'
1221
1219
                                  ' >=2.5')
1234
1232
            self.assertRaises(errors.KnitCorrupt, index.keys)
1235
1233
        except TypeError, e:
1236
1234
            if (str(e) == ('exceptions must be strings, classes, or instances,'
1237
 
                           ' not exceptions.ValueError')):
 
1235
                           ' not exceptions.ValueError')
 
1236
                and sys.version_info[0:2] >= (2,5)):
1238
1237
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
1239
1238
                                  ' raising new style exceptions with python'
1240
1239
                                  ' >=2.5')
1251
1250
            self.assertRaises(errors.KnitCorrupt, index.keys)
1252
1251
        except TypeError, e:
1253
1252
            if (str(e) == ('exceptions must be strings, classes, or instances,'
1254
 
                           ' not exceptions.ValueError')):
 
1253
                           ' not exceptions.ValueError')
 
1254
                and sys.version_info[0:2] >= (2,5)):
1255
1255
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
1256
1256
                                  ' raising new style exceptions with python'
1257
1257
                                  ' >=2.5')
1268
1268
            self.assertRaises(errors.KnitCorrupt, index.keys)
1269
1269
        except TypeError, e:
1270
1270
            if (str(e) == ('exceptions must be strings, classes, or instances,'
1271
 
                           ' not exceptions.ValueError')):
 
1271
                           ' not exceptions.ValueError')
 
1272
                and sys.version_info[0:2] >= (2,5)):
1272
1273
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
1273
1274
                                  ' raising new style exceptions with python'
1274
1275
                                  ' >=2.5')
1603
1604
        # could leave an empty .kndx file, which bzr would later claim was a
1604
1605
        # corrupted file since the header was not present. In reality, the file
1605
1606
        # just wasn't created, so it should be ignored.
1606
 
        t = transport.get_transport_from_path('.')
 
1607
        t = transport.get_transport('.')
1607
1608
        t.put_bytes('test.kndx', '')
1608
1609
 
1609
1610
        knit = self.make_test_knit()
1610
1611
 
1611
1612
    def test_knit_index_checks_header(self):
1612
 
        t = transport.get_transport_from_path('.')
 
1613
        t = transport.get_transport('.')
1613
1614
        t.put_bytes('test.kndx', '# not really a knit header\n\n')
1614
1615
        k = self.make_test_knit()
1615
1616
        self.assertRaises(KnitHeaderError, k.keys)
2443
2444
        key_basis = ('bar',)
2444
2445
        key_missing = ('missing',)
2445
2446
        test.add_lines(key, (), ['foo\n'])
2446
 
        key_sha1sum = osutils.sha_string('foo\n')
 
2447
        key_sha1sum = osutils.sha('foo\n').hexdigest()
2447
2448
        sha1s = test.get_sha1s([key])
2448
2449
        self.assertEqual({key: key_sha1sum}, sha1s)
2449
2450
        self.assertEqual([], basis.calls)
2451
2452
        # directly (rather than via text reconstruction) so that remote servers
2452
2453
        # etc don't have to answer with full content.
2453
2454
        basis.add_lines(key_basis, (), ['foo\n', 'bar\n'])
2454
 
        basis_sha1sum = osutils.sha_string('foo\nbar\n')
 
2455
        basis_sha1sum = osutils.sha('foo\nbar\n').hexdigest()
2455
2456
        basis.calls = []
2456
2457
        sha1s = test.get_sha1s([key, key_missing, key_basis])
2457
2458
        self.assertEqual({key: key_sha1sum,