mirror of
https://github.com/pybind/pybind11.git
synced 2026-05-03 05:01:39 +00:00
Add all_type_info_check_for_divergence() and some tests.
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
# Adapted from:
|
||||
# https://github.com/google/clif/blob/5718e4d0807fd3b6a8187dde140069120b81ecef/clif/testing/python/python_multiple_inheritance_test.py
|
||||
|
||||
import pytest
|
||||
|
||||
from pybind11_tests import python_multiple_inheritance as m
|
||||
|
||||
|
||||
@@ -12,6 +14,22 @@ class PPCC(PC, m.CppDrvd):
|
||||
pass
|
||||
|
||||
|
||||
class PPPCCC(PPCC, m.CppDrvd2):
|
||||
pass
|
||||
|
||||
|
||||
class PC1(m.CppDrvd):
|
||||
pass
|
||||
|
||||
|
||||
class PC2(m.CppDrvd2):
|
||||
pass
|
||||
|
||||
|
||||
class PCD(PC1, PC2):
|
||||
pass
|
||||
|
||||
|
||||
def test_PC():
|
||||
d = PC(11)
|
||||
assert d.get_base_value() == 11
|
||||
@@ -33,3 +51,21 @@ def test_PPCC():
|
||||
d.reset_base_value_from_drvd(30)
|
||||
assert d.get_base_value() == 30
|
||||
assert d.get_base_value_from_drvd() == 30
|
||||
|
||||
|
||||
def NOtest_PPPCCC():
|
||||
# terminate called after throwing an instance of 'pybind11::error_already_set'
|
||||
# what(): TypeError: bases include diverging derived types:
|
||||
# base=pybind11_tests.python_multiple_inheritance.CppBase,
|
||||
# derived1=pybind11_tests.python_multiple_inheritance.CppDrvd,
|
||||
# derived2=pybind11_tests.python_multiple_inheritance.CppDrvd2
|
||||
PPPCCC(11)
|
||||
|
||||
|
||||
def test_PCD():
|
||||
# This escapes all_type_info_check_for_divergence() because CppBase does not appear in bases.
|
||||
with pytest.raises(
|
||||
TypeError,
|
||||
match=r"CppDrvd2\.__init__\(\) must be called when overriding __init__$",
|
||||
):
|
||||
PCD(11)
|
||||
|
||||
Reference in New Issue
Block a user