1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
import pytest
from textual.app import App, ComposeResult
from textual.color import Color
from textual.widget import Widget
class Widget1(Widget):
DEFAULT_CSS = """
Widget1 {
background: red;
}
"""
class Widget2(Widget1):
DEFAULT_CSS = """
Widget1 {
background: green;
}
"""
# TODO: tie breaker on CSS
@pytest.mark.xfail(
reason="Overlapping styles should prioritize the most recent widget in the inheritance chain"
)
async def test_inheritance():
class InheritanceApp(App):
def compose(self) -> ComposeResult:
yield Widget1(id="widget1")
yield Widget2(id="widget2")
app = InheritanceApp()
async with app.run_test():
widget1 = app.query_one("#widget1", Widget1)
widget2 = app.query_one("#widget2", Widget2)
assert widget2.styles.background == Color.parse("green")
|