Add some initial rules to a "mega stylesheet"
The start of what will hopefully become a one-stop comprehensive test of all the fun corners of stylesheet parsing. While not intended to replace all the other unit tests for CSS, this test should help to quickly and easily be sure that nothing breaks any valid CSS. Influenced by #1253 and #1836 this code starts the process of implementing the requirement outlined in #1838. Adding more rules -- simple and/or weird -- that are expected and known to parse without a problem is encouraged.
This commit is contained in:
parent
cfb8219e44
commit
8220af4bfe
2 changed files with 238 additions and 0 deletions
227
tests/css/test_mega_stylesheet.css
Normal file
227
tests/css/test_mega_stylesheet.css
Normal file
|
|
@ -0,0 +1,227 @@
|
|||
/*
|
||||
* The idea with this stylesheet is that it should contain as many valid
|
||||
* ways of styling things as possible. So, as time goes on, feel free to add
|
||||
* something to here. Be creative. Do the wildest things you can think of.
|
||||
*/
|
||||
|
||||
* {}
|
||||
* * {}
|
||||
* * * {}
|
||||
* > * {}
|
||||
* > * > * {}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
A {}
|
||||
A A {}
|
||||
A A A {}
|
||||
A > A {}
|
||||
A > A > A {}
|
||||
|
||||
A1 {}
|
||||
A1 A1 {}
|
||||
A1 A1 A1 {}
|
||||
A1 > A1 {}
|
||||
A1 > A1 > A1 {}
|
||||
|
||||
A {}
|
||||
A A1 {}
|
||||
A A1 A1 {}
|
||||
A > A1 {}
|
||||
A > A1 > A1 {}
|
||||
|
||||
A1 {}
|
||||
A1 A {}
|
||||
A1 A A {}
|
||||
A1 > A {}
|
||||
A1 > A > A {}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
A {}
|
||||
A, A {}
|
||||
A,A {}
|
||||
A, A, A {}
|
||||
A,A,A {}
|
||||
A , A , A {}
|
||||
A
|
||||
,
|
||||
A
|
||||
,
|
||||
A
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
A1 {}
|
||||
A1, A1 {}
|
||||
A1,A1 {}
|
||||
A1, A1, A1 {}
|
||||
A1,A1,A1 {}
|
||||
A1 , A1 , A1 {}
|
||||
A1
|
||||
,
|
||||
A1
|
||||
,
|
||||
A1
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
.A {}
|
||||
.A .A {}
|
||||
.A .A .A {}
|
||||
.A > .A {}
|
||||
.A > .A > .A {}
|
||||
|
||||
.A1 {}
|
||||
.A1 .A1 {}
|
||||
.A1 .A1 .A1 {}
|
||||
.A1 > .A1 {}
|
||||
.A1 > .A1 > .A1 {}
|
||||
|
||||
.A1 {}
|
||||
.A1 .A {}
|
||||
.A1 .A .A {}
|
||||
.A1 > .A {}
|
||||
.A1 > .A > .A {}
|
||||
|
||||
.A {}
|
||||
.A .A1 {}
|
||||
.A .A1 .A1 {}
|
||||
.A > .A1 {}
|
||||
.A > .A1 > .A1 {}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
.A {}
|
||||
.A.A {}
|
||||
.A.A.A {}
|
||||
|
||||
.A1 {}
|
||||
.A1.A1 {}
|
||||
.A1.A1.A1 {}
|
||||
|
||||
.A1 {}
|
||||
.A1.A {}
|
||||
.A1.A.A {}
|
||||
|
||||
.A {}
|
||||
.A.A1 {}
|
||||
.A.A1.A1 {}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
#A {}
|
||||
#A #A {}
|
||||
#A #A #A {}
|
||||
#A > #A {}
|
||||
#A > #A > #A {}
|
||||
|
||||
#A1 {}
|
||||
#A1 #A1 {}
|
||||
#A1 #A1 #A1 {}
|
||||
#A1 > #A1 {}
|
||||
#A1 > #A1 > #A1 {}
|
||||
|
||||
#A1 {}
|
||||
#A1 #A {}
|
||||
#A1 #A #A {}
|
||||
#A1 > #A {}
|
||||
#A1 > #A > #A {}
|
||||
|
||||
#A {}
|
||||
#A #A1 {}
|
||||
#A #A1 #A1 {}
|
||||
#A > #A1 {}
|
||||
#A > #A1 > #A1 {}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
A:foo {}
|
||||
A:foo:bar {}
|
||||
A
|
||||
:foo {}
|
||||
A
|
||||
:foo:bar {}
|
||||
A
|
||||
:foo
|
||||
:bar {}
|
||||
A:foo-bar {}
|
||||
A
|
||||
:foo-bar {}
|
||||
|
||||
A :foo {}
|
||||
A :foo :bar {}
|
||||
A :foo-bar {}
|
||||
|
||||
.A:foo {}
|
||||
.A:foo:bar {}
|
||||
.A
|
||||
:foo {}
|
||||
.A
|
||||
:foo:bar {}
|
||||
.A
|
||||
:foo
|
||||
:bar {}
|
||||
.A:foo-bar {}
|
||||
.A
|
||||
:foo-bar {}
|
||||
|
||||
#A:foo {}
|
||||
#A:foo:bar {}
|
||||
#A
|
||||
:foo {}
|
||||
#A
|
||||
:foo:bar {}
|
||||
#A
|
||||
:foo
|
||||
:bar {}
|
||||
#A:foo-bar {}
|
||||
#A
|
||||
:foo-bar {}
|
||||
|
||||
A1.A1.A1:foo {}
|
||||
A1.A1#A1:foo {}
|
||||
A1:foo.A1:foo#A1:foo {}
|
||||
|
||||
/**********************************************************************/
|
||||
|
||||
$foo:;
|
||||
$foo:1;
|
||||
$fo1:1;
|
||||
$1:1;
|
||||
$-:1;
|
||||
$--:1;
|
||||
$--------------------------------------------------:1;
|
||||
$-1:1;
|
||||
$--1:1;
|
||||
$--------------------------------------------------1:1;
|
||||
$_1:1;
|
||||
$__1:1;
|
||||
$__________________________________________________1:1;
|
||||
|
||||
/**********************************************************************/
|
||||
A{}
|
||||
A {
|
||||
}
|
||||
A {} A {} A {}
|
||||
A{}A{}A{}
|
||||
A {
|
||||
} A {} A {
|
||||
}
|
||||
A
|
||||
{}
|
||||
A
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* Don't change or remove this. This class is looked for in the unit
|
||||
* test code to make sure that everything parsed.
|
||||
*/
|
||||
.---we-made-it-to-the-end--- {
|
||||
}
|
||||
11
tests/css/test_mega_stylesheet.py
Normal file
11
tests/css/test_mega_stylesheet.py
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
from pathlib import Path
|
||||
|
||||
from textual.css.stylesheet import Stylesheet
|
||||
|
||||
|
||||
def test_mega_stylesheet() -> None:
|
||||
"""It should be possible to load a known-good stylesheet."""
|
||||
mega_stylesheet = Stylesheet()
|
||||
mega_stylesheet.read(Path(__file__).parent / "test_mega_stylesheet.css")
|
||||
mega_stylesheet.parse()
|
||||
assert ".---we-made-it-to-the-end---" in mega_stylesheet.css
|
||||
Loading…
Reference in a new issue