@@ -3,12 +3,9 @@ import assert from "assert"
33import fs from "fs"
44import path from "path"
55
6- // @ts -expect-error -- ignore
7- import CSSStringifier from "postcss/lib/stringifier"
8- // @ts -expect-error -- ignore
9- import SCSSStringifier from "postcss-scss/lib/scss-stringifier"
10- // @ts -expect-error -- ignore
11- import StylusStringifier from "postcss-styl/lib/stringifier"
6+ import css from "postcss"
7+ import scss from "postcss-scss"
8+ import stylus from "postcss-styl"
129
1310import { getStyleFixtureResults , writeFixture } from "../test-utils"
1411import type {
@@ -17,30 +14,27 @@ import type {
1714 VCSSAtRule ,
1815} from "../../../../lib/styles/ast"
1916
20- function stringify ( node : any , stringifier : any ) {
21- let semicolon = true
22- if ( node . parent && node . parent . last === node ) {
23- semicolon = node . parent . raws . semicolon
24- }
25- const beforeText = node . raws . before && / [ ^ \s / ] $ / u. exec ( node . raws . before )
26- if ( beforeText ) {
27- stringifier . builder ( beforeText [ 0 ] )
28- }
29- stringifier . stringify ( node , semicolon )
30- }
17+ // function stringify(node: any, stringifier: any) {
18+ // let semicolon = true
19+ // if (node.parent && node.parent.last === node) {
20+ // semicolon = node.parent.raws.semicolon
21+ // }
22+ // const beforeText = node.raws.before && /[^\s/]$/u.exec(node.raws.before)
23+ // if (beforeText) {
24+ // stringifier.builder(beforeText[0])
25+ // }
26+ // stringifier.stringify(node, semicolon)
27+ // }
3128
3229const STRINGIFYS = {
3330 scss ( node : any , builder : any ) {
34- const stringifier = new SCSSStringifier ( builder )
35- stringify ( node , stringifier )
31+ scss . stringify ( node , builder )
3632 } ,
3733 css ( node : any , builder : any ) {
38- const stringifier = new CSSStringifier ( builder )
39- stringify ( node , stringifier )
34+ css . stringify ( node , builder )
4035 } ,
4136 stylus ( node : any , builder : any ) {
42- const stringifier = new StylusStringifier ( builder )
43- stringify ( node , stringifier )
37+ stylus . stringify ( node , builder )
4438 } ,
4539}
4640
@@ -130,7 +124,7 @@ function checkCSSNodeLocations(
130124 lang : string ,
131125) {
132126 if ( node . node ) {
133- let rangeText = ` ${ node . type } :\n ${ code . slice ( ...node . range ) } `
127+ let rangeText = code . slice ( ...node . range )
134128 let postcssText = ( node . node as any ) . toString ( ( STRINGIFYS as any ) [ lang ] )
135129 if ( node . type === "VCSSSelector" || node . type === "VCSSClassSelector" ) {
136130 postcssText = postcssText . replace (
@@ -162,10 +156,19 @@ function checkCSSNodeLocations(
162156 postcssText = postcssText . trim ( )
163157 } else if ( node . type === "VCSSStyleSheet" ) {
164158 // noop
159+ } else if ( node . type === "VCSSDeclarationProperty" ) {
160+ rangeText = rangeText . replace ( / ^ \* | \s * ; \s * $ / g, "" )
161+ postcssText = postcssText . trim ( )
162+ } else if ( node . type === "VCSSAtRule" ) {
163+ rangeText = rangeText . replace ( / \s * ; \s * $ / g, "" )
164+ postcssText = postcssText . trim ( )
165165 } else {
166166 postcssText = postcssText . trim ( )
167167 }
168- assert . strictEqual ( rangeText , `${ node . type } :\n${ postcssText } ` )
168+ assert . strictEqual (
169+ `${ node . type } :\n${ rangeText } ` ,
170+ `${ node . type } :\n${ postcssText } ` ,
171+ )
169172 }
170173 if ( node . type === "VCSSStyleSheet" ) {
171174 if ( node . errors . length ) {
0 commit comments