From 7b3c110bededaf1522d73469d2ec16e34bfc2a14 Mon Sep 17 00:00:00 2001 From: shulaoda <165626830+shulaoda@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:35:07 +0800 Subject: [PATCH 1/3] fix: make island CSS rewrite tests cross-platform --- .../void/test/unit/island-css-rewrite.test.ts | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/void/test/unit/island-css-rewrite.test.ts b/packages/void/test/unit/island-css-rewrite.test.ts index bf3e4a038..0e1fa0fd1 100644 --- a/packages/void/test/unit/island-css-rewrite.test.ts +++ b/packages/void/test/unit/island-css-rewrite.test.ts @@ -1,30 +1,35 @@ +import { resolve } from "node:path"; import { describe, it, expect } from "vitest"; +import { normalizePath } from "vite"; import { rewriteCssImportForVirtualModule } from "../../src/pages/islands-plugin"; +/** Resolve a POSIX-style absolute path to a platform-correct path with forward slashes. */ +const p = (posix: string) => normalizePath(resolve(posix)); + describe("rewriteCssImportForVirtualModule", () => { it("rewrites relative CSS import to absolute path", () => { const result = rewriteCssImportForVirtualModule( 'import "./global.css"', "./global.css", - "/project/pages/layout.tsx", + p("/project/pages/layout.tsx"), ); - expect(result).toBe('import "/project/pages/global.css";'); + expect(result).toBe(`import "${p("/project/pages/global.css")}";`); }); it("rewrites parent-relative CSS import to absolute path", () => { const result = rewriteCssImportForVirtualModule( 'import "../styles/theme.css"', "../styles/theme.css", - "/project/pages/blog/index.tsx", + p("/project/pages/blog/index.tsx"), ); - expect(result).toBe('import "/project/pages/styles/theme.css";'); + expect(result).toBe(`import "${p("/project/pages/styles/theme.css")}";`); }); it("preserves bare specifiers (package imports)", () => { const result = rewriteCssImportForVirtualModule( 'import "@void/md/theme.css"', "@void/md/theme.css", - "/project/pages/layout.tsx", + p("/project/pages/layout.tsx"), ); expect(result).toBe('import "@void/md/theme.css";'); }); @@ -33,7 +38,7 @@ describe("rewriteCssImportForVirtualModule", () => { const result = rewriteCssImportForVirtualModule( 'import "/absolute/path/style.css"', "/absolute/path/style.css", - "/project/pages/layout.tsx", + p("/project/pages/layout.tsx"), ); expect(result).toBe('import "/absolute/path/style.css";'); }); @@ -42,20 +47,18 @@ describe("rewriteCssImportForVirtualModule", () => { const result = rewriteCssImportForVirtualModule( ' import "some-lib/styles.css" ', "some-lib/styles.css", - "/project/pages/layout.tsx", + p("/project/pages/layout.tsx"), ); expect(result).toBe('import "some-lib/styles.css";'); }); it("normalizes backslashes to forward slashes", () => { - // normalizePath ensures Windows-style paths become valid import specifiers const result = rewriteCssImportForVirtualModule( 'import "./card.css"', "./card.css", - "/project/pages/components/deep/Card.tsx", + p("/project/pages/components/deep/Card.tsx"), ); - // Should always use forward slashes regardless of OS expect(result).not.toContain("\\"); - expect(result).toBe('import "/project/pages/components/deep/card.css";'); + expect(result).toBe(`import "${p("/project/pages/components/deep/card.css")}";`); }); }); From 1df4a58b41f8492b38766427863f9eee8f1438f2 Mon Sep 17 00:00:00 2001 From: shulaoda <165626830+shulaoda@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:36:45 +0800 Subject: [PATCH 2/3] u --- packages/void/test/unit/island-css-rewrite.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/void/test/unit/island-css-rewrite.test.ts b/packages/void/test/unit/island-css-rewrite.test.ts index 0e1fa0fd1..fe6ce0d40 100644 --- a/packages/void/test/unit/island-css-rewrite.test.ts +++ b/packages/void/test/unit/island-css-rewrite.test.ts @@ -1,6 +1,6 @@ import { resolve } from "node:path"; -import { describe, it, expect } from "vitest"; import { normalizePath } from "vite"; +import { describe, it, expect } from "vitest"; import { rewriteCssImportForVirtualModule } from "../../src/pages/islands-plugin"; /** Resolve a POSIX-style absolute path to a platform-correct path with forward slashes. */ From 469b41a47942923a6e5f41f8b7afdd2f659fefd2 Mon Sep 17 00:00:00 2001 From: shulaoda <165626830+shulaoda@users.noreply.github.com> Date: Fri, 3 Apr 2026 13:38:12 +0800 Subject: [PATCH 3/3] u --- packages/void/test/unit/island-css-rewrite.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/void/test/unit/island-css-rewrite.test.ts b/packages/void/test/unit/island-css-rewrite.test.ts index fe6ce0d40..2d62536aa 100644 --- a/packages/void/test/unit/island-css-rewrite.test.ts +++ b/packages/void/test/unit/island-css-rewrite.test.ts @@ -53,11 +53,13 @@ describe("rewriteCssImportForVirtualModule", () => { }); it("normalizes backslashes to forward slashes", () => { + // normalizePath ensures Windows-style paths become valid import specifiers const result = rewriteCssImportForVirtualModule( 'import "./card.css"', "./card.css", p("/project/pages/components/deep/Card.tsx"), ); + // Should always use forward slashes regardless of OS expect(result).not.toContain("\\"); expect(result).toBe(`import "${p("/project/pages/components/deep/card.css")}";`); });