~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_knit.py

  • Committer: John Arbash Meinel
  • Date: 2007-06-29 15:41:56 UTC
  • mto: This revision was merged to the branch mainline in revision 2614.
  • Revision ID: john@arbash-meinel.com-20070629154156-qqtkp5u94qiwl5ua
Workaround for Pyrex <0.9.5 and python >=2.5 incompatibilities.
Before raising an exception, Pyrex checks that it is a valid exception object.
However python 2.5 changed exceptions to be new-style classes, and this
fails the Pyrex 0.9.4 check. Pyrex 0.9.5 has been updated to do it
correctly.

We just set knownFailure in the test suite when this happens.
Note: You still get an exception, just TypeError instead of ValueError or IndexError.
So the code path will still abort, but the user won't get as nice of a message.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
import difflib
21
21
import gzip
22
22
import sha
 
23
import sys
23
24
 
24
25
from bzrlib import (
25
26
    errors,
705
706
            "a option 0 1 :",
706
707
            "b option 0 1 4 :"  # We don't have a 4th record
707
708
            ])
708
 
        self.assertRaises(errors.KnitCorrupt,
709
 
                          self.get_knit_index, transport, 'filename', 'r')
 
709
        try:
 
710
            self.assertRaises(errors.KnitCorrupt,
 
711
                              self.get_knit_index, transport, 'filename', 'r')
 
712
        except TypeError, e:
 
713
            if (str(e) == ('exceptions must be strings, classes, or instances,'
 
714
                           ' not exceptions.IndexError')
 
715
                and sys.version_info[0:2] >= (2,5)):
 
716
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
 
717
                                  ' raising new style exceptions with python'
 
718
                                  ' >=2.5')
710
719
 
711
720
    def test_corrupted_parent(self):
712
721
        transport = MockTransport([
715
724
            "b option 0 1 :",
716
725
            "c option 0 1 1v :", # Can't have a parent of '1v'
717
726
            ])
718
 
        self.assertRaises(errors.KnitCorrupt,
719
 
                          self.get_knit_index, transport, 'filename', 'r')
 
727
        try:
 
728
            self.assertRaises(errors.KnitCorrupt,
 
729
                              self.get_knit_index, transport, 'filename', 'r')
 
730
        except TypeError, e:
 
731
            if (str(e) == ('exceptions must be strings, classes, or instances,'
 
732
                           ' not exceptions.ValueError')
 
733
                and sys.version_info[0:2] >= (2,5)):
 
734
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
 
735
                                  ' raising new style exceptions with python'
 
736
                                  ' >=2.5')
720
737
 
721
738
    def test_corrupted_parent_in_list(self):
722
739
        transport = MockTransport([
723
740
            _KnitIndex.HEADER,
724
741
            "a option 0 1 :",
725
742
            "b option 0 1 :",
726
 
            "c option 0 1 2 v :", # Can't have a parent of 'v'
 
743
            "c option 0 1 1 v :", # Can't have a parent of 'v'
727
744
            ])
728
 
        self.assertRaises(errors.KnitCorrupt,
729
 
                          self.get_knit_index, transport, 'filename', 'r')
 
745
        try:
 
746
            self.assertRaises(errors.KnitCorrupt,
 
747
                              self.get_knit_index, transport, 'filename', 'r')
 
748
        except TypeError, e:
 
749
            if (str(e) == ('exceptions must be strings, classes, or instances,'
 
750
                           ' not exceptions.ValueError')
 
751
                and sys.version_info[0:2] >= (2,5)):
 
752
                self.knownFailure('Pyrex <0.9.5 fails with TypeError when'
 
753
                                  ' raising new style exceptions with python'
 
754
                                  ' >=2.5')
730
755
 
731
756
 
732
757
class LowLevelKnitIndexTests_c(LowLevelKnitIndexTests):