Skip to content

Commit 5396efc

Browse files
committed
Update tests to 2024-09-30
Some order of unified selectors was cleaned up in dart sass, and can now be cleaned up in rsass.
1 parent 8fc1bee commit 5396efc

21 files changed

+161
-39
lines changed

Diff for: CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ project adheres to
2929
* Improved parse error handling (PR #201, Issue #141).
3030
Many parse errors now match the dart sass error message.
3131
Also allow "loud" comments in more places.
32-
* Updated sass-spec test suite to 2024-09-20.
32+
* Updated sass-spec test suite to 2024-09-30.
3333

3434

3535
## Release 0.28.10

Diff for: rsass/src/css/selectors/selector.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -525,12 +525,12 @@ fn unify_relbox(a: RelBox, b: RelBox) -> Option<Vec<RelBox>> {
525525
s.into_iter().map(|s| Box::new((kind, s))).collect()
526526
}
527527
if a.0 == b.0 && a.1.compound.is_rootish() && b.1.compound.is_rootish() {
528-
return Some(as_rel_vec(a.0, b.1.unify(a.1)));
528+
return Some(as_rel_vec(a.0, a.1.unify(b.1)));
529529
}
530530

531531
Some(match (*a, *b) {
532532
((k @ AdjacentSibling, a), (AdjacentSibling, b))
533-
| ((k @ Parent, a), (Parent, b)) => as_rel_vec(k, b._unify(a)?),
533+
| ((k @ Parent, a), (Parent, b)) => as_rel_vec(k, a._unify(b)?),
534534
((Ancestor, a), (Ancestor, b)) => {
535535
if b.is_local_superselector(&a) {
536536
as_rel_vec(Ancestor, a._unify(b)?)
@@ -560,10 +560,10 @@ fn unify_relbox(a: RelBox, b: RelBox) -> Option<Vec<RelBox>> {
560560
.with_rel_of(k, a.clone())
561561
.into_iter()
562562
.chain(a.clone().with_rel_of(k, b.clone()))
563-
.chain(b.unify(a)),
563+
.chain(a.unify(b)),
564564
)
565565
} else {
566-
as_rel_vec(Sibling, b.unify(a))
566+
as_rel_vec(Sibling, a.unify(b))
567567
}
568568
}
569569
((a_k @ AdjacentSibling, a_s), (Sibling, b_s))
@@ -578,7 +578,7 @@ fn unify_relbox(a: RelBox, b: RelBox) -> Option<Vec<RelBox>> {
578578
a_s.clone()
579579
.with_rel_of(Sibling, b_s.clone())
580580
.into_iter()
581-
.chain(a_s.unify(b_s)),
581+
.chain(b_s.unify(a_s)),
582582
)
583583
}
584584
}

Diff for: rsass/tests/spec/core_functions/selector/unify/complex/combinators/child.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ mod and_child {
2828
runner().ok("@use \"sass:selector\";\
2929
\na {b: selector.unify(\".c > .d\", \".e > .f\")}\n"),
3030
"a {\
31-
\n b: .e.c > .d.f;\
31+
\n b: .c.e > .d.f;\
3232
\n}\n"
3333
);
3434
}
@@ -40,7 +40,7 @@ mod and_child {
4040
\na {b: selector.unify(\".c.s1-1 > .s1-2\", \".c.s2-1 > .s2-2\")}\n"
4141
),
4242
"a {\
43-
\n b: .c.s2-1.s1-1 > .s1-2.s2-2;\
43+
\n b: .c.s1-1.s2-1 > .s1-2.s2-2;\
4444
\n}\n"
4545
);
4646
}

Diff for: rsass/tests/spec/core_functions/selector/unify/complex/combinators/multiple.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ fn isolated() {
6262
runner().ok("@use \"sass:selector\";\
6363
\na {b: selector.unify(\".c > .d + .e\", \".f .g ~ .h\")}\n"),
6464
"a {\
65-
\n b: .f .c > .g ~ .d + .e.h, .f .c > .d.g + .e.h;\
65+
\n b: .f .c > .g ~ .d + .e.h, .f .c > .g.d + .e.h;\
6666
\n}\n"
6767
);
6868
}

Diff for: rsass/tests/spec/core_functions/selector/unify/complex/combinators/next_sibling.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ mod and_next_sibling {
4848
runner().ok("@use \"sass:selector\";\
4949
\na {b: selector.unify(\".c + .d\", \".e + .f\")}\n"),
5050
"a {\
51-
\n b: .e.c + .d.f;\
51+
\n b: .c.e + .d.f;\
5252
\n}\n"
5353
);
5454
}
@@ -60,7 +60,7 @@ mod and_next_sibling {
6060
\na {b: selector.unify(\".c.s1-1 + .s1-2\", \".c.s2-1 + .s2-2\")}\n"
6161
),
6262
"a {\
63-
\n b: .c.s2-1.s1-1 + .s1-2.s2-2;\
63+
\n b: .c.s1-1.s2-1 + .s1-2.s2-2;\
6464
\n}\n"
6565
);
6666
}
@@ -97,7 +97,7 @@ mod and_sibling {
9797
runner().ok("@use \"sass:selector\";\
9898
\na {b: selector.unify(\".c + .d\", \".e ~ .f\")}\n"),
9999
"a {\
100-
\n b: .e ~ .c + .d.f, .c.e + .d.f;\
100+
\n b: .e ~ .c + .d.f, .e.c + .d.f;\
101101
\n}\n"
102102
);
103103
}
@@ -119,7 +119,7 @@ mod and_sibling {
119119
\na {b: selector.unify(\".c.s1-1 + .s1-2\", \".c.s2-1 ~ .s2-2\")}\n"
120120
),
121121
"a {\
122-
\n b: .c.s2-1 ~ .c.s1-1 + .s1-2.s2-2, .c.s1-1.s2-1 + .s1-2.s2-2;\
122+
\n b: .c.s2-1 ~ .c.s1-1 + .s1-2.s2-2, .c.s2-1.s1-1 + .s1-2.s2-2;\
123123
\n}\n"
124124
);
125125
}

Diff for: rsass/tests/spec/core_functions/selector/unify/complex/combinators/sibling.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ mod and_next_sibling {
4747
runner().ok("@use \"sass:selector\";\
4848
\na {b: selector.unify(\".c ~ .d\", \".e + .f\")}\n"),
4949
"a {\
50-
\n b: .c ~ .e + .d.f, .e.c + .d.f;\
50+
\n b: .c ~ .e + .d.f, .c.e + .d.f;\
5151
\n}\n"
5252
);
5353
}
@@ -69,7 +69,7 @@ mod and_next_sibling {
6969
\na {b: selector.unify(\".c.s1-1 ~ .s1-2\", \".c.s2-1 + .s2-2\")}\n"
7070
),
7171
"a {\
72-
\n b: .c.s1-1 ~ .c.s2-1 + .s1-2.s2-2, .c.s2-1.s1-1 + .s1-2.s2-2;\
72+
\n b: .c.s1-1 ~ .c.s2-1 + .s1-2.s2-2, .c.s1-1.s2-1 + .s1-2.s2-2;\
7373
\n}\n"
7474
);
7575
}
@@ -106,7 +106,7 @@ mod and_sibling {
106106
runner().ok("@use \"sass:selector\";\
107107
\na {b: selector.unify(\".c ~ .d\", \".e ~ .f\")}\n"),
108108
"a {\
109-
\n b: .c ~ .e ~ .d.f, .e ~ .c ~ .d.f, .e.c ~ .d.f;\
109+
\n b: .c ~ .e ~ .d.f, .e ~ .c ~ .d.f, .c.e ~ .d.f;\
110110
\n}\n"
111111
);
112112
}
@@ -128,7 +128,7 @@ mod and_sibling {
128128
\na {b: selector.unify(\".c.s1-1 ~ .s1-2\", \".c.s2-1 ~ .s2-2\")}\n"
129129
),
130130
"a {\
131-
\n b: .c.s1-1 ~ .c.s2-1 ~ .s1-2.s2-2, .c.s2-1 ~ .c.s1-1 ~ .s1-2.s2-2, .c.s2-1.s1-1 ~ .s1-2.s2-2;\
131+
\n b: .c.s1-1 ~ .c.s2-1 ~ .s1-2.s2-2, .c.s2-1 ~ .c.s1-1 ~ .s1-2.s2-2, .c.s1-1.s2-1 ~ .s1-2.s2-2;\
132132
\n}\n"
133133
);
134134
}

Diff for: rsass/tests/spec/core_functions/selector/unify/complex/rootish.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ fn mixed() {
3434
runner().ok("@use \"sass:selector\";\
3535
\na {b: selector.unify(\":root .c .d\", \":scope .e .f\")}\n"),
3636
"a {\
37-
\n b: :scope:root .c .e .d.f, :scope:root .e .c .d.f;\
37+
\n b: :root:scope .c .e .d.f, :root:scope .e .c .d.f;\
3838
\n}\n"
3939
);
4040
}
@@ -52,7 +52,7 @@ mod root {
5252
runner().ok("@use \"sass:selector\";\
5353
\na {b: selector.unify(\".c:root .d\", \".e:root .f\")}\n"),
5454
"a {\
55-
\n b: .e.c:root .d.f;\
55+
\n b: .c.e:root .d.f;\
5656
\n}\n"
5757
);
5858
}

Diff for: rsass/tests/spec/core_functions/selector/unify/compound.rs

+128-6
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,50 @@ fn runner() -> crate::TestRunner {
55
super::runner().with_cwd("compound")
66
}
77

8-
#[test]
9-
fn full_overlap() {
10-
assert_eq!(
11-
runner().ok("@use \"sass:selector\";\
8+
mod full_overlap {
9+
#[allow(unused)]
10+
use super::runner;
11+
12+
#[test]
13+
fn class() {
14+
assert_eq!(
15+
runner().ok("@use \"sass:selector\";\
1216
\na {b: selector.unify(\".c.d\", \".c.d\")}\n"),
13-
"a {\
17+
"a {\
1418
\n b: .c.d;\
1519
\n}\n"
16-
);
20+
);
21+
}
22+
#[test]
23+
fn pseudo_class() {
24+
assert_eq!(
25+
runner().ok("@use \"sass:selector\";\
26+
\na {b: selector.unify(\".c:d\", \".c:d\")}\n"),
27+
"a {\
28+
\n b: .c:d;\
29+
\n}\n"
30+
);
31+
}
32+
#[test]
33+
fn pseudo_element() {
34+
assert_eq!(
35+
runner().ok("@use \"sass:selector\";\
36+
\na {b: selector.unify(\".c::d\", \".c::d\")}\n"),
37+
"a {\
38+
\n b: .c::d;\
39+
\n}\n"
40+
);
41+
}
42+
#[test]
43+
fn pseudo_selector_and_class() {
44+
assert_eq!(
45+
runner().ok("@use \"sass:selector\";\
46+
\na {b: selector.unify(\".c:d::e\", \".c:d::e\")}\n"),
47+
"a {\
48+
\n b: .c:d::e;\
49+
\n}\n"
50+
);
51+
}
1752
}
1853
#[test]
1954
fn no_overlap() {
@@ -29,6 +64,93 @@ mod order {
2964
#[allow(unused)]
3065
use super::runner;
3166

67+
mod do_not_cross_pseudo_element {
68+
#[allow(unused)]
69+
use super::runner;
70+
71+
mod pseudo_class_and_element {
72+
#[allow(unused)]
73+
use super::runner;
74+
75+
#[test]
76+
fn into_different_pseudo_element_and_different_pseudo_class() {
77+
assert_eq!(
78+
runner().ok("@use \"sass:selector\";\
79+
\na {b: selector.unify(\"::foo:bar\", \"::other:baz\")}\n"),
80+
""
81+
);
82+
}
83+
#[test]
84+
#[ignore] // wrong result
85+
fn into_pseudo_element() {
86+
assert_eq!(
87+
runner().ok("@use \"sass:selector\";\
88+
\na {b: selector.unify(\"::bar:baz\", \":foo\")}\n"),
89+
"a {\
90+
\n b: :foo::bar:baz;\
91+
\n}\n"
92+
);
93+
}
94+
#[test]
95+
#[ignore] // wrong result
96+
fn into_same_pseudo_element_and_different_pseudo_class() {
97+
assert_eq!(
98+
runner().ok("@use \"sass:selector\";\
99+
\na {b: selector.unify(\"::foo:bar\", \"::foo:baz\")}\n"),
100+
"a {\
101+
\n b: ::foo:bar:baz;\
102+
\n}\n"
103+
);
104+
}
105+
#[test]
106+
#[ignore] // wrong result
107+
fn into_simple() {
108+
assert_eq!(
109+
runner().ok(
110+
"@use \"sass:selector\";\
111+
\na {b: selector.unify(\".x::scrollbar:horizontal\", \".y\")}\n"
112+
),
113+
"a {\
114+
\n b: .x.y::scrollbar:horizontal;\
115+
\n}\n"
116+
);
117+
}
118+
}
119+
mod pseudo_element {
120+
#[allow(unused)]
121+
use super::runner;
122+
123+
#[test]
124+
#[ignore] // wrong result
125+
fn into_pseudo_class_and_element() {
126+
assert_eq!(
127+
runner().ok("@use \"sass:selector\";\
128+
\na {b: selector.unify(\":foo\", \"::bar:baz\")}\n"),
129+
"a {\
130+
\n b: :foo::bar:baz;\
131+
\n}\n"
132+
);
133+
}
134+
}
135+
mod simple {
136+
#[allow(unused)]
137+
use super::runner;
138+
139+
#[test]
140+
#[ignore] // wrong result
141+
fn into_pseudo_class_and_element() {
142+
assert_eq!(
143+
runner().ok(
144+
"@use \"sass:selector\";\
145+
\na {b: selector.unify(\".x\", \".y::scrollbar:horizontal\")}\n"
146+
),
147+
"a {\
148+
\n b: .x.y::scrollbar:horizontal;\
149+
\n}\n"
150+
);
151+
}
152+
}
153+
}
32154
#[test]
33155
fn element_at_start() {
34156
assert_eq!(

Diff for: rsass/tests/spec/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//! Tests auto-converted from "sass-spec/spec"
2-
//! version ddf4b0999, 2024-09-20 20:55:56 +0000.
2+
//! version 83bd49982, 2024-09-30 17:39:23 -0700.
33
//! See <https://github.com/sass/sass-spec> for source material.\n
44
//! The following tests are excluded from conversion:
55
//! ["directives/extend", "libsass-todo-issues/issue_221260.hrx", "libsass-todo-issues/issue_221262.hrx", "libsass-todo-issues/issue_221264.hrx", "libsass-todo-issues/issue_221292.hrx", "libsass/unicode-bom/utf-16-big", "libsass/unicode-bom/utf-16-little", "non_conformant/scss/huge.hrx", "non_conformant/scss/multiline-var.hrx"]

Diff for: rsass/tests/spec/non_conformant/extend_tests/t127_test_nested_extender_with_early_child_selector.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ fn test() {
1212
assert_eq!(
1313
runner().ok(".foo > .bar {a: b}\
1414
\n.bip > .baz {@extend .bar}\n"),
15-
".foo > .bar, .bip.foo > .baz {\
15+
".foo > .bar, .foo.bip > .baz {\
1616
\n a: b;\
1717
\n}\n"
1818
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t142_test_combinator_unification_double_tilde.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a ~ x {a: b}\
1313
\n.b ~ y {@extend x}\n"),
14-
".a ~ x, .a ~ .b ~ y, .b ~ .a ~ y, .b.a ~ y {\
14+
".a ~ x, .a ~ .b ~ y, .b ~ .a ~ y, .a.b ~ y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t146_test_combinator_unification_tilde_plus.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a + x {a: b}\
1313
\n.b ~ y {@extend x}\n"),
14-
".a + x, .b ~ .a + y, .a.b + y {\
14+
".a + x, .b ~ .a + y, .b.a + y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t150_test_combinator_unification_tilde_plus.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a ~ x {a: b}\
1313
\n.b + y {@extend x}\n"),
14-
".a ~ x, .a ~ .b + y, .b.a + y {\
14+
".a ~ x, .a ~ .b + y, .a.b + y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t156_test_combinator_unification_double_angle.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a.b > x {a: b}\
1313
\n.b > y {@extend x}\n"),
14-
".a.b > x, .b.a > y {\
14+
".a.b > x, .a.b > y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t158_test_combinator_unification_double_angle.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a > x {a: b}\
1313
\n.b > y {@extend x}\n"),
14-
".a > x, .b.a > y {\
14+
".a > x, .a.b > y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t160_test_combinator_unification_double_plus.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a.b + x {a: b}\
1313
\n.b + y {@extend x}\n"),
14-
".a.b + x, .b.a + y {\
14+
".a.b + x, .a.b + y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

Diff for: rsass/tests/spec/non_conformant/extend_tests/t162_test_combinator_unification_double_plus.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn test() {
1111
assert_eq!(
1212
runner().ok(".a + x {a: b}\
1313
\n.b + y {@extend x}\n"),
14-
".a + x, .b.a + y {\
14+
".a + x, .a.b + y {\
1515
\n a: b;\
1616
\n}\n"
1717
);

0 commit comments

Comments
 (0)