Skip to content

Commit 1fef8bb

Browse files
author
Bart Veneman
committed
Skip font-tech() in SupportsCondition test
1 parent 7eeca70 commit 1fef8bb

File tree

2 files changed

+53
-4
lines changed

2 files changed

+53
-4
lines changed

src/atrules/atrules.test.js

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,16 @@ AtRules('finds @imports', () => {
248248
@import url('../example.css') layer;
249249
250250
@import url('remedy.css') layer(reset.remedy);
251+
252+
@import 'test.css' supports((display: grid));
253+
@import 'test.css' supports(not (display: grid));
254+
@import 'test.css' supports(selector(a:has(b)));
255+
/*@import "test.css" supports((selector(h2 > p) and (font-tech(color-COLRv1))));*/
251256
`
252-
const actual = analyze(fixture).atrules.import
257+
const actual = analyze(fixture).atrules
253258
const expected = {
254-
total: 7,
255-
totalUnique: 7,
259+
total: 10,
260+
totalUnique: 10,
256261
unique: {
257262
'"https://example.com/without-url"': 1,
258263
'url("https://example.com/with-url")': 1,
@@ -261,11 +266,45 @@ AtRules('finds @imports', () => {
261266
'url(\'example.css\') layer(named-layer)': 1,
262267
'url(\'../example.css\') layer': 1,
263268
'url(\'remedy.css\') layer(reset.remedy)': 1,
269+
"'test.css' supports((display: grid))": 1,
270+
"'test.css' supports(not (display: grid))": 1,
271+
"'test.css' supports(selector(a:has(b)))": 1,
272+
// '"test.css" supports((selector(h2 > p) and (font-tech(color-COLRv1))))': 1,
264273
},
265274
uniquenessRatio: 1,
266275
}
267276

268-
assert.equal(actual, expected)
277+
assert.equal(actual.import, expected)
278+
279+
const expected_supports = {
280+
total: 3,
281+
totalUnique: 3,
282+
unique: {
283+
"(display: grid)": 1,
284+
"not (display: grid)": 1,
285+
"selector(a:has(b))": 1,
286+
// "selector(h2 > p) and (font-tech(color-COLRv1))": 1,
287+
},
288+
uniquenessRatio: 1,
289+
browserhacks: {
290+
total: 0,
291+
totalUnique: 0,
292+
unique: {},
293+
uniquenessRatio: 0,
294+
}
295+
}
296+
assert.equal(actual.supports, expected_supports, 'Incorrect SupportsCondition matches')
297+
298+
const expected_layers = {
299+
total: 2,
300+
totalUnique: 2,
301+
unique: {
302+
'named-layer': 1,
303+
'reset.remedy': 1,
304+
},
305+
uniquenessRatio: 1,
306+
}
307+
assert.equal(actual.layer, expected_layers, 'Incorrect Layer matches')
269308
})
270309

271310
AtRules('finds @charsets', () => {

src/index.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,16 @@ export function analyze(css, options = {}) {
206206
break
207207
}
208208
if (atRuleName === 'import') {
209+
walk(node, function (prelude_node) {
210+
if (prelude_node.type === 'Condition' && prelude_node.kind === 'supports') {
211+
supports.push(stringifyNode(prelude_node), prelude_node.loc)
212+
213+
if (isSupportsBrowserhack(prelude_node)) {
214+
supportsBrowserhacks.push(stringifyNode(prelude_node), prelude_node.loc)
215+
}
216+
return this.break
217+
}
218+
})
209219
imports.push(stringifyNode(node.prelude), node.prelude.loc)
210220
break
211221
}

0 commit comments

Comments
 (0)