ffaee04613
Adds support for the indented syntax, plain CSS imports, `@forward`, and many other previously missing features.
172 lines
5.0 KiB
Rust
172 lines
5.0 KiB
Rust
#[macro_use]
|
|
mod macros;
|
|
|
|
test!(
|
|
nest_one_arg,
|
|
"a {\n color: selector-nest(\"c\");\n}\n",
|
|
"a {\n color: c;\n}\n"
|
|
);
|
|
test!(
|
|
nest_many_args,
|
|
"a {\n color: selector-nest(\"c\", \"d\", \"e\", \"f\", \"g\");\n}\n",
|
|
"a {\n color: c d e f g;\n}\n"
|
|
);
|
|
test!(
|
|
nest_parent_alone,
|
|
"a {\n color: selector-nest(\"c\", \"&\");\n}\n",
|
|
"a {\n color: c;\n}\n"
|
|
);
|
|
test!(
|
|
nest_parent_compound,
|
|
"a {\n color: selector-nest(\"c\", \"&.d\");\n}\n",
|
|
"a {\n color: c.d;\n}\n"
|
|
);
|
|
test!(
|
|
nest_parent_with_suffix,
|
|
"a {\n color: selector-nest(\"c\", \"&d\");\n}\n",
|
|
"a {\n color: cd;\n}\n"
|
|
);
|
|
test!(
|
|
nest_complex_parent_compound,
|
|
"a {\n color: selector-nest(\"c\", \"d &.e\");\n}\n",
|
|
"a {\n color: d c.e;\n}\n"
|
|
);
|
|
test!(
|
|
nest_complex_super_parent_compound,
|
|
"a {\n color: selector-nest(\"c d\", \"e &.f\");\n}\n",
|
|
"a {\n color: e c d.f;\n}\n"
|
|
);
|
|
test!(
|
|
nest_parent_in_special_pseudo_matches,
|
|
"a {\n color: selector-nest(\"c\", \":matches(&)\");\n}\n",
|
|
"a {\n color: :matches(c);\n}\n"
|
|
);
|
|
test!(
|
|
nest_complex_super_parent_in_special_pseudo_matches,
|
|
"a {\n color: selector-nest(\"c d\", \":matches(&)\");\n}\n",
|
|
"a {\n color: :matches(c d);\n}\n"
|
|
);
|
|
test!(
|
|
nest_parent_in_special_pseudo_is,
|
|
"a {\n color: selector-nest(\"c\", \":is(&)\");\n}\n",
|
|
"a {\n color: :is(c);\n}\n"
|
|
);
|
|
test!(
|
|
nest_complex_super_parent_in_special_pseudo_is,
|
|
"a {\n color: selector-nest(\"c d\", \":is(&)\");\n}\n",
|
|
"a {\n color: :is(c d);\n}\n"
|
|
);
|
|
test!(
|
|
nest_multiple_parent,
|
|
"a {\n color: selector-nest(\"c\", \"&.d &.e\");\n}\n",
|
|
"a {\n color: c.d c.e;\n}\n"
|
|
);
|
|
test!(
|
|
nest_compound_parent_in_list,
|
|
"a {\n color: selector-nest(\"c\", \"&.d, e\");\n}\n",
|
|
"a {\n color: c.d, c e;\n}\n"
|
|
);
|
|
test!(
|
|
nest_list_super,
|
|
"a {\n color: selector-nest(\"c, d\", \"e\");\n}\n",
|
|
"a {\n color: c e, d e;\n}\n"
|
|
);
|
|
test!(
|
|
nest_list_sub,
|
|
"a {\n color: selector-nest(\"c\", \"d, e\");\n}\n",
|
|
"a {\n color: c d, c e;\n}\n"
|
|
);
|
|
test!(
|
|
nest_three_args_list,
|
|
"a {\n color: selector-nest(\"c, d\", \"e, f\", \"g, h\");\n}\n",
|
|
"a {\n color: c e g, c e h, c f g, c f h, d e g, d e h, d f g, d f h;\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_parent_alone,
|
|
"a {\n color: selector-nest(\"c, d\", \"&\");\n}\n",
|
|
"a {\n color: c, d;\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_parent_compound,
|
|
"a {\n color: selector-nest(\"c, d\", \"&.e\");\n}\n",
|
|
"a {\n color: c.e, d.e;\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_parent_suffix,
|
|
"a {\n color: selector-nest(\"c, d\", \"&e\");\n}\n",
|
|
"a {\n color: ce, de;\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_parent_complex,
|
|
"a {\n color: selector-nest(\"c, d\", \"e &.f\");\n}\n",
|
|
"a {\n color: e c.f, e d.f;\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_parent_inside_pseudo_matches,
|
|
"a {\n color: selector-nest(\"c, d\", \":matches(&)\");\n}\n",
|
|
"a {\n color: :matches(c, d);\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_parent_inside_pseudo_is,
|
|
"a {\n color: selector-nest(\"c, d\", \":is(&)\");\n}\n",
|
|
"a {\n color: :is(c, d);\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_multiple_parent,
|
|
"a {\n color: selector-nest(\"c, d\", \"&.e &.f\");\n}\n",
|
|
"a {\n color: c.e c.f, c.e d.f, d.e c.f, d.e d.f;\n}\n"
|
|
);
|
|
test!(
|
|
nest_super_list_sub_list_contains_parent,
|
|
"a {\n color: selector-nest(\"c, d\", \"&.e, f\");\n}\n",
|
|
"a {\n color: c.e, c f, d.e, d f;\n}\n"
|
|
);
|
|
test!(
|
|
nest_comma_separated_list_as_super,
|
|
"a {\n color: selector-nest((c, d e), \"f\");\n}\n",
|
|
"a {\n color: c f, d e f;\n}\n"
|
|
);
|
|
test!(
|
|
nest_comma_separated_list_as_sub,
|
|
"a {\n color: selector-nest(\"c\", (d, e f));\n}\n",
|
|
"a {\n color: c d, c e f;\n}\n"
|
|
);
|
|
error!(
|
|
#[ignore = "https://github.com/sass/dart-sass/issues/966"]
|
|
disallows_parent_selector_as_first_arg,
|
|
"a {\n color: selector-nest(\"&\");\n}\n", "Error: Parent selectors aren't allowed here."
|
|
);
|
|
error!(
|
|
disallows_parent_not_at_start_of_compound_selector_attribute,
|
|
"a {\n color: selector-nest(\"[d]&\");\n}\n",
|
|
"Error: \"&\" may only used at the beginning of a compound selector."
|
|
);
|
|
error!(
|
|
disallows_parent_not_at_start_of_compound_selector_type,
|
|
"a {\n color: selector-nest(\"d&\");\n}\n",
|
|
"Error: \"&\" may only used at the beginning of a compound selector."
|
|
);
|
|
error!(
|
|
improperly_terminated_attribute_selector_first_arg,
|
|
"a {\n color: selector-nest(\"[d\");\n}\n", "Error: expected more input."
|
|
);
|
|
error!(
|
|
improperly_terminated_attribute_selector_second_arg,
|
|
"a {\n color: selector-nest(\"c\", \"[d\");\n}\n", "Error: expected more input."
|
|
);
|
|
error!(
|
|
unquoted_integer_first_arg,
|
|
"a {\n color: selector-nest(1);\n}\n",
|
|
"Error: $selectors: 1 is not a valid selector: it must be a string,"
|
|
);
|
|
error!(
|
|
unquoted_integer_second_arg,
|
|
"a {\n color: selector-nest(\"c\", 1);\n}\n",
|
|
"Error: $selectors: 1 is not a valid selector: it must be a string,"
|
|
);
|
|
error!(
|
|
empty_args,
|
|
"a {\n color: selector-nest();\n}\n",
|
|
"Error: $selectors: At least one selector must be passed."
|
|
);
|