feat(rules): 建立共享排版契约并收束 WebKit 与 Unicode 基线
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { mkdirSync, mkdtempSync, rmSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { dirname, join, resolve } from "node:path";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
if (process.platform !== "darwin")
|
||||
{
|
||||
console.error("test:wkwebview requires macOS, Xcode, and an active GUI session.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const testDir = dirname(fileURLToPath(import.meta.url));
|
||||
const projectRoot = resolve(testDir, "..");
|
||||
const temporaryRoot = mkdtempSync(join(tmpdir(), "cjk-autospace-wkwebview-"));
|
||||
const moduleCache = join(temporaryRoot, "ModuleCache");
|
||||
const binary = join(temporaryRoot, "wkwebview-e2e");
|
||||
mkdirSync(moduleCache);
|
||||
|
||||
function run(command, args)
|
||||
{
|
||||
const result = spawnSync(command, args, {
|
||||
cwd: projectRoot,
|
||||
encoding: "utf8",
|
||||
stdio: "inherit",
|
||||
});
|
||||
if (result.error) { throw result.error; }
|
||||
if (result.status !== 0) { process.exitCode = result.status ?? 1; }
|
||||
return result.status === 0;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
const compiled = run("xcrun", [
|
||||
"swiftc",
|
||||
"-parse-as-library",
|
||||
"-swift-version", "5",
|
||||
"-module-cache-path", moduleCache,
|
||||
"-framework", "AppKit",
|
||||
"-framework", "WebKit",
|
||||
join(testDir, "wkwebview-e2e.swift"),
|
||||
"-o", binary,
|
||||
]);
|
||||
if (compiled)
|
||||
{
|
||||
run(binary, [ join(projectRoot, "demo/e2e.html"), projectRoot ]);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
rmSync(temporaryRoot, { recursive: true, force: true });
|
||||
}
|
||||
Reference in New Issue
Block a user