aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/zope.interface/py2/patches/01-fix-tests.patch
diff options
context:
space:
mode:
authormaxim-yurchuk <maxim-yurchuk@yandex-team.com>2024-10-09 12:29:46 +0300
committermaxim-yurchuk <maxim-yurchuk@yandex-team.com>2024-10-09 13:14:22 +0300
commit9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch)
treea8fb3181d5947c0d78cf402aa56e686130179049 /contrib/python/zope.interface/py2/patches/01-fix-tests.patch
parenta44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff)
downloadydb-9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80.tar.gz
publishFullContrib: true for ydb
<HIDDEN_URL> commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/python/zope.interface/py2/patches/01-fix-tests.patch')
-rw-r--r--contrib/python/zope.interface/py2/patches/01-fix-tests.patch704
1 files changed, 704 insertions, 0 deletions
diff --git a/contrib/python/zope.interface/py2/patches/01-fix-tests.patch b/contrib/python/zope.interface/py2/patches/01-fix-tests.patch
new file mode 100644
index 0000000000..77e2945ee9
--- /dev/null
+++ b/contrib/python/zope.interface/py2/patches/01-fix-tests.patch
@@ -0,0 +1,704 @@
+--- contrib/python/zope.interface/py2/zope/interface/common/tests/basemapping.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/common/tests/basemapping.py (working tree)
+@@ -15,7 +15,7 @@
+ """
+ from operator import __getitem__
+
+-def testIReadMapping(self, inst, state, absent):
++def _testIReadMapping(self, inst, state, absent):
+ for key in state:
+ self.assertEqual(inst[key], state[key])
+ self.assertEqual(inst.get(key, None), state[key])
+@@ -28,39 +28,39 @@ def testIReadMapping(self, inst, state, absent):
+ self.assertRaises(KeyError, __getitem__, inst, key)
+
+
+-def test_keys(self, inst, state):
++def _test_keys(self, inst, state):
+ # Return the keys of the mapping object
+ inst_keys = list(inst.keys()); inst_keys.sort()
+ state_keys = list(state.keys()) ; state_keys.sort()
+ self.assertEqual(inst_keys, state_keys)
+
+-def test_iter(self, inst, state):
++def _test_iter(self, inst, state):
+ # Return the keys of the mapping object
+ inst_keys = list(inst); inst_keys.sort()
+ state_keys = list(state.keys()) ; state_keys.sort()
+ self.assertEqual(inst_keys, state_keys)
+
+-def test_values(self, inst, state):
++def _test_values(self, inst, state):
+ # Return the values of the mapping object
+ inst_values = list(inst.values()); inst_values.sort()
+ state_values = list(state.values()) ; state_values.sort()
+ self.assertEqual(inst_values, state_values)
+
+-def test_items(self, inst, state):
++def _test_items(self, inst, state):
+ # Return the items of the mapping object
+ inst_items = list(inst.items()); inst_items.sort()
+ state_items = list(state.items()) ; state_items.sort()
+ self.assertEqual(inst_items, state_items)
+
+-def test___len__(self, inst, state):
++def _test___len__(self, inst, state):
+ # Return the number of items
+ self.assertEqual(len(inst), len(state))
+
+-def testIEnumerableMapping(self, inst, state):
+- test_keys(self, inst, state)
+- test_items(self, inst, state)
+- test_values(self, inst, state)
+- test___len__(self, inst, state)
++def _testIEnumerableMapping(self, inst, state):
++ _test_keys(self, inst, state)
++ _test_items(self, inst, state)
++ _test_values(self, inst, state)
++ _test___len__(self, inst, state)
+
+
+ class BaseTestIReadMapping(object):
+@@ -68,7 +68,7 @@ class BaseTestIReadMapping(object):
+ inst = self._IReadMapping__sample()
+ state = self._IReadMapping__stateDict()
+ absent = self._IReadMapping__absentKeys()
+- testIReadMapping(self, inst, state, absent)
++ _testIReadMapping(self, inst, state, absent)
+
+
+ class BaseTestIEnumerableMapping(BaseTestIReadMapping):
+@@ -77,25 +77,25 @@ class BaseTestIEnumerableMapping(BaseTestIReadMapping):
+ # Return the keys of the mapping object
+ inst = self._IEnumerableMapping__sample()
+ state = self._IEnumerableMapping__stateDict()
+- test_keys(self, inst, state)
++ _test_keys(self, inst, state)
+
+ def test_values(self):
+ # Return the values of the mapping object
+ inst = self._IEnumerableMapping__sample()
+ state = self._IEnumerableMapping__stateDict()
+- test_values(self, inst, state)
++ _test_values(self, inst, state)
+
+ def test_items(self):
+ # Return the items of the mapping object
+ inst = self._IEnumerableMapping__sample()
+ state = self._IEnumerableMapping__stateDict()
+- test_items(self, inst, state)
++ _test_items(self, inst, state)
+
+ def test___len__(self):
+ # Return the number of items
+ inst = self._IEnumerableMapping__sample()
+ state = self._IEnumerableMapping__stateDict()
+- test___len__(self, inst, state)
++ _test___len__(self, inst, state)
+
+ def _IReadMapping__stateDict(self):
+ return self._IEnumerableMapping__stateDict()
+--- contrib/python/zope.interface/py2/zope/interface/tests/__init__.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/__init__.py (working tree)
+@@ -23,7 +23,7 @@ class OptimizationTestMixin(object):
+ # get the Python object from that.
+ raise NotImplementedError
+
+- def test_optimizations(self):
++ def _test_optimizations(self):
+ used = self._getTargetClass()
+ fallback = self._getFallbackClass()
+
+--- contrib/python/zope.interface/py2/zope/interface/tests/dummy.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/dummy.py (working tree)
+@@ -14,7 +14,7 @@
+ """ Dummy Module
+ """
+ from zope.interface import moduleProvides
+-from zope.interface.tests.idummy import IDummyModule
++from .idummy import IDummyModule
+
+ moduleProvides(IDummyModule)
+
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_adapter.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_adapter.py (working tree)
+@@ -15,7 +15,7 @@
+ """
+ import unittest
+
+-from zope.interface.tests import OptimizationTestMixin
++from __tests__.tests import OptimizationTestMixin
+
+ # pylint:disable=inherit-non-class,protected-access,too-many-lines
+ # pylint:disable=attribute-defined-outside-init,blacklisted-name
+@@ -1640,7 +1640,7 @@ class AdapterLookupBaseTests(unittest.TestCase):
+ # but after https://github.com/zopefoundation/zope.interface/issues/200
+ # they get propagated.
+ from zope.interface.interface import InterfaceClass
+- from zope.interface.tests import MissingSomeAttrs
++ from __tests__.tests import MissingSomeAttrs
+
+ IFoo = InterfaceClass('IFoo')
+ registry = self._makeRegistry()
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_advice.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_advice.py (working tree)
+@@ -35,7 +35,7 @@ from zope.interface._compat import _skip_under_py3k
+ class FrameInfoTest(unittest.TestCase):
+
+ def test_w_module(self):
+- from zope.interface.tests import advisory_testing
++ from . import advisory_testing
+ (kind, module,
+ f_locals, f_globals) = advisory_testing.moduleLevelFrameInfo
+ self.assertEqual(kind, "module")
+@@ -44,7 +44,7 @@ class FrameInfoTest(unittest.TestCase):
+
+ @_skip_under_py3k
+ def test_w_ClassicClass(self):
+- from zope.interface.tests import advisory_testing
++ from . import advisory_testing
+ (kind,
+ module,
+ f_locals,
+@@ -57,7 +57,7 @@ class FrameInfoTest(unittest.TestCase):
+ self.assertTrue(d is advisory_testing.my_globals)
+
+ def test_w_NewStyleClass(self):
+- from zope.interface.tests import advisory_testing
++ from . import advisory_testing
+ (kind,
+ module,
+ f_locals,
+@@ -95,7 +95,7 @@ class AdviceTests(unittest.TestCase):
+
+ @_skip_under_py3k
+ def test_order(self):
+- from zope.interface.tests.advisory_testing import ping
++ from .advisory_testing import ping
+ log = []
+ class Foo(object):
+ ping(log, 1)
+@@ -111,7 +111,7 @@ class AdviceTests(unittest.TestCase):
+
+ @_skip_under_py3k
+ def test_single_explicit_meta(self):
+- from zope.interface.tests.advisory_testing import ping
++ from .advisory_testing import ping
+
+ class Metaclass(type):
+ pass
+@@ -126,7 +126,7 @@ class AdviceTests(unittest.TestCase):
+
+ @_skip_under_py3k
+ def test_mixed_metas(self):
+- from zope.interface.tests.advisory_testing import ping
++ from .advisory_testing import ping
+
+ class Metaclass1(type):
+ pass
+@@ -160,7 +160,7 @@ class AdviceTests(unittest.TestCase):
+
+ @_skip_under_py3k
+ def test_meta_no_bases(self):
+- from zope.interface.tests.advisory_testing import ping
++ from .advisory_testing import ping
+ from types import ClassType
+ class Thing:
+ ping([], 1)
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_declarations.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_declarations.py (working tree)
+@@ -17,9 +17,9 @@ import unittest
+
+ from zope.interface._compat import _skip_under_py3k
+ from zope.interface._compat import PYTHON3
+-from zope.interface.tests import OptimizationTestMixin
+-from zope.interface.tests import MissingSomeAttrs
+-from zope.interface.tests.test_interface import NameAndModuleComparisonTestsMixin
++from __tests__.tests import OptimizationTestMixin
++from __tests__.tests import MissingSomeAttrs
++from __tests__.tests.test_interface import NameAndModuleComparisonTestsMixin
+
+ # pylint:disable=inherit-non-class,too-many-lines,protected-access
+ # pylint:disable=blacklisted-name,attribute-defined-outside-init
+@@ -297,7 +297,7 @@ class DeclarationTests(EmptyDeclarationTests):
+ # the other way).
+ from zope.interface import Interface
+ from zope.interface.interface import InterfaceClass
+- from zope.interface.tests.test_ro import C3Setting
++ from __tests__.tests.test_ro import C3Setting
+ from zope.interface import ro
+
+ IBase = InterfaceClass('IBase')
+@@ -319,7 +319,7 @@ class DeclarationTests(EmptyDeclarationTests):
+ from zope.interface import Interface
+ from zope.interface import implementedBy
+ from zope.interface import implementer
+- from zope.interface.tests.test_ro import C3Setting
++ from __tests__.tests.test_ro import C3Setting
+ from zope.interface import ro
+
+ class IBase(Interface):
+@@ -647,7 +647,7 @@ class Test_implementedByFallback(unittest.TestCase):
+ foo.__name__ = 'foo'
+ spec = self._callFUT(foo)
+ self.assertEqual(spec.__name__,
+- 'zope.interface.tests.test_declarations.foo')
++ '__tests__.tests.test_declarations.foo')
+ self.assertIs(spec.inherit, foo)
+ self.assertIs(foo.__implemented__, spec)
+ self.assertIs(foo.__providedBy__, objectSpecificationDescriptor) # pylint:disable=no-member
+@@ -659,7 +659,7 @@ class Test_implementedByFallback(unittest.TestCase):
+ __implemented__ = None
+ spec = self._callFUT(Foo)
+ self.assertEqual(spec.__name__,
+- 'zope.interface.tests.test_declarations.Foo')
++ '__tests__.tests.test_declarations.Foo')
+ self.assertIs(spec.inherit, Foo)
+ self.assertIs(Foo.__implemented__, spec)
+ self.assertIsInstance(Foo.__providedBy__, ClassProvides) # pylint:disable=no-member
+@@ -997,7 +997,7 @@ class Test_classImplements(_ImplementsTestMixin, unittest.TestCase):
+ from zope.interface import Interface
+ from zope.interface import implementedBy
+ from zope.interface import ro
+- from zope.interface.tests.test_ro import C3Setting
++ from __tests__.tests.test_ro import C3Setting
+
+ class Foo(object):
+ pass
+@@ -1123,7 +1123,7 @@ class Test_implementer(Test_classImplements):
+ returned = decorator(foo)
+ self.assertTrue(returned is foo)
+ spec = foo.__implemented__ # pylint:disable=no-member
+- self.assertEqual(spec.__name__, 'zope.interface.tests.test_declarations.?')
++ self.assertEqual(spec.__name__, '__tests__.tests.test_declarations.?')
+ self.assertIsNone(spec.inherit,)
+ self.assertIs(foo.__implemented__, spec) # pylint:disable=no-member
+
+@@ -1415,17 +1415,17 @@ class TestProvidesClassRepr(unittest.TestCase):
+ def test__repr__module_provides_typical_use(self):
+ # as created through a ``moduleProvides()`` statement
+ # in a module body
+- from zope.interface.tests import dummy
++ from __tests__.tests import dummy
+ provides = dummy.__provides__ # pylint:disable=no-member
+ self.assertEqual(
+ repr(provides),
+- "directlyProvides(sys.modules['zope.interface.tests.dummy'], IDummyModule)"
++ "directlyProvides(sys.modules['__tests__.tests.dummy'], IDummyModule)"
+ )
+
+ def test__repr__module_after_pickle(self):
+ # It doesn't matter, these objects can't be pickled.
+ import pickle
+- from zope.interface.tests import dummy
++ from __tests__.tests import dummy
+ provides = dummy.__provides__ # pylint:disable=no-member
+ for proto in range(pickle.HIGHEST_PROTOCOL + 1):
+ with self.assertRaises(pickle.PicklingError):
+@@ -1433,7 +1433,7 @@ class TestProvidesClassRepr(unittest.TestCase):
+
+ def test__repr__directlyProvides_module(self):
+ import sys
+- from zope.interface.tests import dummy
++ from __tests__.tests import dummy
+ from zope.interface.declarations import directlyProvides
+ from zope.interface.declarations import alsoProvides
+ from zope.interface.interface import InterfaceClass
+@@ -1450,7 +1450,7 @@ class TestProvidesClassRepr(unittest.TestCase):
+
+ self.assertEqual(
+ repr(provides),
+- "directlyProvides(sys.modules['zope.interface.tests.dummy'], IFoo)"
++ "directlyProvides(sys.modules['__tests__.tests.dummy'], IFoo)"
+ )
+
+ alsoProvides(dummy, IBar)
+@@ -1458,7 +1458,7 @@ class TestProvidesClassRepr(unittest.TestCase):
+
+ self.assertEqual(
+ repr(provides),
+- "directlyProvides(sys.modules['zope.interface.tests.dummy'], IFoo, IBar)"
++ "directlyProvides(sys.modules['__tests__.tests.dummy'], IFoo, IBar)"
+ )
+
+ # If we make this module also provide IFoo and IBar, then the repr
+@@ -1471,8 +1471,8 @@ class TestProvidesClassRepr(unittest.TestCase):
+ self.assertIs(my_module.__provides__, provides)
+ self.assertEqual(
+ repr(provides),
+- "directlyProvides(('zope.interface.tests.dummy', "
+- "'zope.interface.tests.test_declarations'), "
++ "directlyProvides(('__tests__.tests.dummy', "
++ "'__tests__.tests.test_declarations'), "
+ "IFoo, IBar)"
+ )
+
+@@ -2103,7 +2103,7 @@ class Test_moduleProvides(unittest.TestCase):
+ from zope.interface.declarations import moduleProvides
+ from zope.interface.interface import InterfaceClass
+ IFoo = InterfaceClass("IFoo")
+- globs = {'__name__': 'zope.interface.tests.foo',
++ globs = {'__name__': '__tests__.tests.tests.foo',
+ 'moduleProvides': moduleProvides, 'IFoo': IFoo}
+ locs = {}
+ CODE = "\n".join([
+@@ -2118,7 +2118,7 @@ class Test_moduleProvides(unittest.TestCase):
+ from zope.interface.declarations import moduleProvides
+ from zope.interface.interface import InterfaceClass
+ IFoo = InterfaceClass("IFoo")
+- globs = {'__name__': 'zope.interface.tests.foo',
++ globs = {'__name__': '__tests__.tests.tests.foo',
+ 'moduleProvides': moduleProvides, 'IFoo': IFoo}
+ locs = {}
+ CODE = "\n".join([
+@@ -2132,7 +2132,7 @@ class Test_moduleProvides(unittest.TestCase):
+ from zope.interface.declarations import moduleProvides
+ from zope.interface.interface import InterfaceClass
+ IFoo = InterfaceClass("IFoo")
+- globs = {'__name__': 'zope.interface.tests.foo',
++ globs = {'__name__': '__tests__.tests.tests.foo',
+ 'moduleProvides': moduleProvides, 'IFoo': IFoo}
+ CODE = "\n".join([
+ 'moduleProvides(IFoo)',
+@@ -2145,7 +2145,7 @@ class Test_moduleProvides(unittest.TestCase):
+ from zope.interface.declarations import moduleProvides
+ from zope.interface.interface import InterfaceClass
+ IFoo = InterfaceClass("IFoo")
+- globs = {'__name__': 'zope.interface.tests.foo',
++ globs = {'__name__': '__tests__.tests.tests.foo',
+ 'moduleProvides': moduleProvides, 'IFoo': IFoo}
+
+ CODE = "\n".join([
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_exceptions.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_exceptions.py (working tree)
+@@ -36,7 +36,7 @@ class DoesNotImplementTests(unittest.TestCase):
+ self.assertEqual(
+ str(dni),
+ "An object has failed to implement interface "
+- "zope.interface.tests.test_exceptions.IDummy: "
++ "__tests__.tests.test_exceptions.IDummy: "
+ "Does not declaratively implement the interface."
+ )
+
+@@ -45,7 +45,7 @@ class DoesNotImplementTests(unittest.TestCase):
+ self.assertEqual(
+ str(dni),
+ "The object 'candidate' has failed to implement interface "
+- "zope.interface.tests.test_exceptions.IDummy: "
++ "__tests__.tests.test_exceptions.IDummy: "
+ "Does not declaratively implement the interface."
+ )
+
+@@ -65,7 +65,7 @@ class BrokenImplementationTests(unittest.TestCase):
+ self.assertEqual(
+ str(dni),
+ 'An object has failed to implement interface '
+- 'zope.interface.tests.test_exceptions.IDummy: '
++ '__tests__.tests.test_exceptions.IDummy: '
+ "The 'missing' attribute was not provided.")
+
+ def test___str__w_candidate(self):
+@@ -73,7 +73,7 @@ class BrokenImplementationTests(unittest.TestCase):
+ self.assertEqual(
+ str(dni),
+ 'The object \'candidate\' has failed to implement interface '
+- 'zope.interface.tests.test_exceptions.IDummy: '
++ '__tests__.tests.test_exceptions.IDummy: '
+ "The 'missing' attribute was not provided.")
+
+
+@@ -161,7 +161,7 @@ class MultipleInvalidTests(unittest.TestCase):
+ self.assertEqual(
+ str(dni),
+ "The object 'target' has failed to implement interface "
+- "zope.interface.tests.test_exceptions.IDummy:\n"
++ "__tests__.tests.test_exceptions.IDummy:\n"
+ " The contract of 'aMethod' is violated because I said so\n"
+ " Regular exception"
+ )
+@@ -177,7 +177,7 @@ class MultipleInvalidTests(unittest.TestCase):
+ dni = self._makeOne(excs)
+ self.assertEqual(
+ repr(dni),
+- "MultipleInvalid(<InterfaceClass zope.interface.tests.test_exceptions.IDummy>,"
++ "MultipleInvalid(<InterfaceClass __tests__.tests.test_exceptions.IDummy>,"
+ " 'target',"
+ " (BrokenMethodImplementation('aMethod', 'I said so'),"
+ " Exception('Regular', 'exception')))"
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_interface.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_interface.py (working tree)
+@@ -24,9 +24,9 @@
+ import unittest
+
+ from zope.interface._compat import _skip_under_py3k
+-from zope.interface.tests import MissingSomeAttrs
+-from zope.interface.tests import OptimizationTestMixin
+-from zope.interface.tests import CleanUp
++from __tests__.tests import MissingSomeAttrs
++from __tests__.tests import OptimizationTestMixin
++from __tests__.tests import CleanUp
+
+ _marker = object()
+
+@@ -1036,7 +1036,7 @@ class InterfaceClassTests(unittest.TestCase):
+ iface = self._makeOne('HashMe')
+ self.assertEqual(hash(iface),
+ hash((('HashMe',
+- 'zope.interface.tests.test_interface'))))
++ '__tests__.tests.test_interface'))))
+
+ def test___hash___missing_required_attrs(self):
+ class Derived(self._getTargetClass()):
+@@ -1076,8 +1076,8 @@ class InterfaceClassTests(unittest.TestCase):
+
+ def test_comparison_with_same_named_instance_in_other_module(self):
+
+- one = self._makeOne('IName', __module__='zope.interface.tests.one')
+- other = self._makeOne('IName', __module__='zope.interface.tests.other')
++ one = self._makeOne('IName', __module__='__tests__.tests.one')
++ other = self._makeOne('IName', __module__='__tests__.tests.other')
+
+ self.assertTrue(one < other)
+ self.assertFalse(other < one)
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_odd_declarations.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_odd_declarations.py (working tree)
+@@ -18,7 +18,7 @@ classic ExtensionClass classes and instances.
+ """
+ import unittest
+
+-from zope.interface.tests import odd
++from . import odd
+ from zope.interface import Interface
+ from zope.interface import implementer
+ from zope.interface import directlyProvides
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_ro.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_ro.py (working tree)
+@@ -190,197 +190,6 @@ class C3Setting(object):
+ from zope.interface import ro
+ setattr(ro.C3, self._setting.__name__, self._setting)
+
+-class Test_c3_ro(Test_ro):
+-
+- def setUp(self):
+- Test_ro.setUp(self)
+- from zope.testing.loggingsupport import InstalledHandler
+- self.log_handler = handler = InstalledHandler('zope.interface.ro')
+- self.addCleanup(handler.uninstall)
+-
+- def _callFUT(self, ob, **kwargs):
+- from zope.interface.ro import ro
+- return ro(ob, **kwargs)
+-
+- def test_complex_diamond(self, base=object):
+- # https://github.com/zopefoundation/zope.interface/issues/21
+- O = base
+- class F(O):
+- pass
+- class E(O):
+- pass
+- class D(O):
+- pass
+- class C(D, F):
+- pass
+- class B(D, E):
+- pass
+- class A(B, C):
+- pass
+-
+- if hasattr(A, 'mro'):
+- self.assertEqual(A.mro(), self._callFUT(A))
+-
+- return A
+-
+- def test_complex_diamond_interface(self):
+- from zope.interface import Interface
+-
+- IA = self.test_complex_diamond(Interface)
+-
+- self.assertEqual(
+- [x.__name__ for x in IA.__iro__],
+- ['A', 'B', 'C', 'D', 'E', 'F', 'Interface']
+- )
+-
+- def test_complex_diamond_use_legacy_argument(self):
+- from zope.interface import Interface
+-
+- A = self.test_complex_diamond(Interface)
+- legacy_A_iro = self._callFUT(A, use_legacy_ro=True)
+- self.assertNotEqual(A.__iro__, legacy_A_iro)
+-
+- # And logging happened as a side-effect.
+- self._check_handler_complex_diamond()
+-
+- def test_complex_diamond_compare_legacy_argument(self):
+- from zope.interface import Interface
+-
+- A = self.test_complex_diamond(Interface)
+- computed_A_iro = self._callFUT(A, log_changed_ro=True)
+- # It matches, of course, but we did log a warning.
+- self.assertEqual(tuple(computed_A_iro), A.__iro__)
+- self._check_handler_complex_diamond()
+-
+- def _check_handler_complex_diamond(self):
+- handler = self.log_handler
+- self.assertEqual(1, len(handler.records))
+- record = handler.records[0]
+-
+- self.assertEqual('\n'.join(l.rstrip() for l in record.getMessage().splitlines()), """\
+-Object <InterfaceClass zope.interface.tests.test_ro.A> has different legacy and C3 MROs:
+- Legacy RO (len=7) C3 RO (len=7; inconsistent=no)
+- ==================================================================
+- zope.interface.tests.test_ro.A zope.interface.tests.test_ro.A
+- zope.interface.tests.test_ro.B zope.interface.tests.test_ro.B
+- - zope.interface.tests.test_ro.E
+- zope.interface.tests.test_ro.C zope.interface.tests.test_ro.C
+- zope.interface.tests.test_ro.D zope.interface.tests.test_ro.D
+- + zope.interface.tests.test_ro.E
+- zope.interface.tests.test_ro.F zope.interface.tests.test_ro.F
+- zope.interface.Interface zope.interface.Interface""")
+-
+- def test_ExtendedPathIndex_implement_thing_implementedby_super(self):
+- # See https://github.com/zopefoundation/zope.interface/pull/182#issuecomment-598754056
+- from zope.interface import ro
+- # pylint:disable=inherit-non-class
+- class _Based(object):
+- __bases__ = ()
+-
+- def __init__(self, name, bases=(), attrs=None):
+- self.__name__ = name
+- self.__bases__ = bases
+-
+- def __repr__(self):
+- return self.__name__
+-
+- Interface = _Based('Interface', (), {})
+-
+- class IPluggableIndex(Interface):
+- pass
+-
+- class ILimitedResultIndex(IPluggableIndex):
+- pass
+-
+- class IQueryIndex(IPluggableIndex):
+- pass
+-
+- class IPathIndex(Interface):
+- pass
+-
+- # A parent class who implements two distinct interfaces whose
+- # only common ancestor is Interface. An easy case.
+- # @implementer(IPathIndex, IQueryIndex)
+- # class PathIndex(object):
+- # pass
+- obj = _Based('object')
+- PathIndex = _Based('PathIndex', (IPathIndex, IQueryIndex, obj))
+-
+- # Child class that tries to put an interface the parent declares
+- # later ahead of the parent.
+- # @implementer(ILimitedResultIndex, IQueryIndex)
+- # class ExtendedPathIndex(PathIndex):
+- # pass
+- ExtendedPathIndex = _Based('ExtendedPathIndex',
+- (ILimitedResultIndex, IQueryIndex, PathIndex))
+-
+- # We were able to resolve it, and in exactly the same way as
+- # the legacy RO did, even though it is inconsistent.
+- result = self._callFUT(ExtendedPathIndex, log_changed_ro=True, strict=False)
+- self.assertEqual(result, [
+- ExtendedPathIndex,
+- ILimitedResultIndex,
+- PathIndex,
+- IPathIndex,
+- IQueryIndex,
+- IPluggableIndex,
+- Interface,
+- obj])
+-
+- record, = self.log_handler.records
+- self.assertIn('used the legacy', record.getMessage())
+-
+- with self.assertRaises(ro.InconsistentResolutionOrderError):
+- self._callFUT(ExtendedPathIndex, strict=True)
+-
+- def test_OSError_IOError(self):
+- if OSError is not IOError:
+- # Python 2
+- self.skipTest("Requires Python 3 IOError == OSError")
+- from zope.interface.common import interfaces
+- from zope.interface import providedBy
+-
+- self.assertEqual(
+- list(providedBy(OSError()).flattened()),
+- [
+- interfaces.IOSError,
+- interfaces.IIOError,
+- interfaces.IEnvironmentError,
+- interfaces.IStandardError,
+- interfaces.IException,
+- interfaces.Interface,
+- ])
+-
+- def test_non_orderable(self):
+- import warnings
+- from zope.interface import ro
+- try:
+- # If we've already warned, we must reset that state.
+- del ro.__warningregistry__
+- except AttributeError:
+- pass
+-
+- with warnings.catch_warnings():
+- warnings.simplefilter('error')
+- with C3Setting(ro.C3.WARN_BAD_IRO, True), C3Setting(ro.C3.STRICT_IRO, False):
+- with self.assertRaises(ro.InconsistentResolutionOrderWarning):
+- super(Test_c3_ro, self).test_non_orderable()
+-
+- IOErr, _ = self._make_IOErr()
+- with self.assertRaises(ro.InconsistentResolutionOrderError):
+- self._callFUT(IOErr, strict=True)
+-
+- with C3Setting(ro.C3.TRACK_BAD_IRO, True), C3Setting(ro.C3.STRICT_IRO, False):
+- with warnings.catch_warnings():
+- warnings.simplefilter('ignore')
+- self._callFUT(IOErr)
+- self.assertIn(IOErr, ro.C3.BAD_IROS)
+-
+- iro = self._callFUT(IOErr, strict=False)
+- legacy_iro = self._callFUT(IOErr, use_legacy_ro=True, strict=False)
+- self.assertEqual(iro, legacy_iro)
+-
+-
+ class TestC3(unittest.TestCase):
+ def _makeOne(self, C, strict=False, base_mros=None):
+ from zope.interface.ro import C3
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_sorting.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_sorting.py (working tree)
+@@ -41,7 +41,7 @@ class Test(unittest.TestCase):
+ def test_w_equal_names(self):
+ # interfaces with equal names but different modules should sort by
+ # module name
+- from zope.interface.tests.m1 import I1 as m1_I1
++ from .m1 import I1 as m1_I1
+ l = [I1, m1_I1]
+ l.sort()
+ self.assertEqual(l, [m1_I1, I1])
+--- contrib/python/zope.interface/py2/zope/interface/tests/test_verify.py (index)
++++ contrib/python/zope.interface/py2/zope/interface/tests/test_verify.py (working tree)
+@@ -614,14 +614,14 @@ class Test_verifyObject(Test_verifyClass):
+ self._callFUT, ICurrent, Current)
+
+ def test_module_hit(self):
+- from zope.interface.tests.idummy import IDummyModule
+- from zope.interface.tests import dummy
++ from .idummy import IDummyModule
++ from . import dummy
+
+ self._callFUT(IDummyModule, dummy)
+
+ def test_module_miss(self):
+ from zope.interface import Interface
+- from zope.interface.tests import dummy
++ from . import dummy
+ from zope.interface.exceptions import DoesNotImplement
+
+ # same name, different object