mirror of
https://github.com/Kozea/WeasyPrint.git
synced 2024-10-05 08:27:22 +03:00
b40ad461be
Everything is replaced by a more explicit message in the COPYRIGHT file. Inspired by rust-lang/rust#43498 and rust-lang/rust#57108.
111 lines
2.2 KiB
Python
111 lines
2.2 KiB
Python
"""
|
|
weasyprint.tests.test_variables
|
|
-------------------------------
|
|
|
|
Test CSS custom proproperties, also known as CSS variables.
|
|
|
|
"""
|
|
|
|
import pytest
|
|
|
|
from ..css.properties import KNOWN_PROPERTIES
|
|
from .test_boxes import render_pages as parse
|
|
|
|
|
|
def test_variable_simple():
|
|
page, = parse('''
|
|
<style>
|
|
p { --var: 10px; width: var(--var) }
|
|
</style>
|
|
<p></p>
|
|
''')
|
|
html, = page.children
|
|
body, = html.children
|
|
paragraph, = body.children
|
|
assert paragraph.width == 10
|
|
|
|
|
|
def test_variable_inherit():
|
|
page, = parse('''
|
|
<style>
|
|
html { --var: 10px }
|
|
p { width: var(--var) }
|
|
</style>
|
|
<p></p>
|
|
''')
|
|
html, = page.children
|
|
body, = html.children
|
|
paragraph, = body.children
|
|
assert paragraph.width == 10
|
|
|
|
|
|
def test_variable_inherit_override():
|
|
page, = parse('''
|
|
<style>
|
|
html { --var: 20px }
|
|
p { width: var(--var); --var: 10px }
|
|
</style>
|
|
<p></p>
|
|
''')
|
|
html, = page.children
|
|
body, = html.children
|
|
paragraph, = body.children
|
|
assert paragraph.width == 10
|
|
|
|
|
|
def test_variable_case_sensitive():
|
|
page, = parse('''
|
|
<style>
|
|
html { --var: 20px }
|
|
body { --VAR: 10px }
|
|
p { width: var(--VAR) }
|
|
</style>
|
|
<p></p>
|
|
''')
|
|
html, = page.children
|
|
body, = html.children
|
|
paragraph, = body.children
|
|
assert paragraph.width == 10
|
|
|
|
|
|
def test_variable_chain():
|
|
page, = parse('''
|
|
<style>
|
|
html { --foo: 10px }
|
|
body { --var: var(--foo) }
|
|
p { width: var(--var) }
|
|
</style>
|
|
<p></p>
|
|
''')
|
|
html, = page.children
|
|
body, = html.children
|
|
paragraph, = body.children
|
|
assert paragraph.width == 10
|
|
|
|
|
|
def test_variable_initial():
|
|
page, = parse('''
|
|
<style>
|
|
html { --var: initial }
|
|
p { width: var(--var, 10px) }
|
|
</style>
|
|
<p></p>
|
|
''')
|
|
html, = page.children
|
|
body, = html.children
|
|
paragraph, = body.children
|
|
assert paragraph.width == 10
|
|
|
|
|
|
@pytest.mark.parametrize('prop', sorted(KNOWN_PROPERTIES))
|
|
def test_variable_fallback(prop):
|
|
parse('''
|
|
<style>
|
|
div {
|
|
--var: improperValue;
|
|
%s: var(--var);
|
|
}
|
|
</style>
|
|
<div></div>
|
|
''' % prop)
|