Blame tests/run/cdef_multiple_inheritance_errors.srctree

Packit 562c7a
PYTHON setup.py build_ext --inplace
Packit 562c7a
PYTHON -c "import runner"
Packit 562c7a
Packit 562c7a
######## setup.py ########
Packit 562c7a
Packit 562c7a
from Cython.Build.Dependencies import cythonize
Packit 562c7a
from distutils.core import setup
Packit 562c7a
Packit 562c7a
setup(ext_modules=cythonize("*.pyx"))
Packit 562c7a
Packit 562c7a
######## notheaptype.pyx ########
Packit 562c7a
Packit 562c7a
cdef class Base:
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
Obj = type(object())
Packit 562c7a
Packit 562c7a
cdef class Foo(Base, Obj):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
######## wrongbase.pyx ########
Packit 562c7a
Packit 562c7a
cdef class Base:
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
Str = type("")
Packit 562c7a
Packit 562c7a
cdef class X(Base, Str):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
######## badmro.pyx ########
Packit 562c7a
Packit 562c7a
class Py(object):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
cdef class X(object, Py):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
######## nodict.pyx ########
Packit 562c7a
Packit 562c7a
cdef class Base:
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
class Py(object):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
cdef class X(Base, Py):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
######## oldstyle.pyx ########
Packit 562c7a
Packit 562c7a
cdef class Base:
Packit 562c7a
    cdef dict __dict__
Packit 562c7a
Packit 562c7a
class OldStyle:
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
cdef class Foo(Base, OldStyle):
Packit 562c7a
    pass
Packit 562c7a
Packit 562c7a
######## runner.py ########
Packit 562c7a
Packit 562c7a
import sys
Packit 562c7a
Packit 562c7a
try:
Packit 562c7a
    import notheaptype
Packit 562c7a
    assert False
Packit 562c7a
except TypeError as msg:
Packit 562c7a
    assert str(msg) == "base class 'object' is not a heap type"
Packit 562c7a
Packit 562c7a
try:
Packit 562c7a
    import wrongbase
Packit 562c7a
    assert False
Packit 562c7a
except TypeError as msg:
Packit 562c7a
    assert str(msg) == "best base 'str' must be equal to first base 'wrongbase.Base'"
Packit 562c7a
Packit 562c7a
try:
Packit 562c7a
    import badmro
Packit 562c7a
    assert False
Packit 562c7a
except TypeError as msg:
Packit 562c7a
    assert str(msg).startswith("Cannot create a consistent method resolution")
Packit 562c7a
Packit 562c7a
try:
Packit 562c7a
    import nodict
Packit 562c7a
    assert False
Packit 562c7a
except TypeError as msg:
Packit 562c7a
    assert str(msg) == "extension type 'nodict.X' has no __dict__ slot, but base type 'Py' has: either add 'cdef dict __dict__' to the extension type or add '__slots__ = [...]' to the base type"
Packit 562c7a
Packit 562c7a
try:
Packit 562c7a
    # This should work on Python 3 but fail on Python 2
Packit 562c7a
    import oldstyle
Packit 562c7a
    assert sys.version_info[0] >= 3
Packit 562c7a
except TypeError as msg:
Packit 562c7a
    assert str(msg) == "base class 'OldStyle' is an old-style class"