summaryrefslogtreecommitdiff
path: root/tools/wpt/utils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tools/wpt/utils.ts')
-rw-r--r--tools/wpt/utils.ts214
1 files changed, 0 insertions, 214 deletions
diff --git a/tools/wpt/utils.ts b/tools/wpt/utils.ts
deleted file mode 100644
index bc25505bd..000000000
--- a/tools/wpt/utils.ts
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
-/// FLAGS
-
-import { parse } from "../../tests/util/std/flags/mod.ts";
-import { join, resolve, ROOT_PATH } from "../util.js";
-
-export const {
- json,
- wptreport,
- quiet,
- release,
- rebuild,
- ["--"]: rest,
- ["auto-config"]: autoConfig,
- ["inspect-brk"]: inspectBrk,
- ["no-ignore"]: noIgnore,
- binary,
-} = parse(Deno.args, {
- "--": true,
- boolean: ["quiet", "release", "no-interactive", "inspect-brk", "no-ignore"],
- string: ["json", "wptreport", "binary"],
-});
-
-export function denoBinary() {
- if (binary) {
- return resolve(binary);
- }
- return join(ROOT_PATH, `./target/${release ? "release" : "debug"}/deno`);
-}
-
-/// WPT TEST MANIFEST
-
-export interface Manifest {
- items: {
- testharness: ManifestFolder;
- };
-}
-export interface ManifestFolder {
- [key: string]: ManifestFolder | ManifestTest;
-}
-export type ManifestTest = [
- hash: string,
- ...variations: ManifestTestVariation[],
-];
-export type ManifestTestVariation = [
- path: string,
- options: ManifestTestOptions,
-];
-export interface ManifestTestOptions {
- // deno-lint-ignore camelcase
- script_metadata: [string, string][];
-}
-
-const MANIFEST_PATH = join(ROOT_PATH, "./tools/wpt/manifest.json");
-
-export async function updateManifest() {
- const status = await runPy(
- [
- "wpt",
- "manifest",
- "--tests-root",
- ".",
- "-p",
- MANIFEST_PATH,
- ...(rebuild ? ["--rebuild"] : []),
- ],
- {},
- ).status;
- assert(status.success, "updating wpt manifest should succeed");
-}
-
-export function getManifest(): Manifest {
- const manifestText = Deno.readTextFileSync(MANIFEST_PATH);
- return JSON.parse(manifestText);
-}
-
-/// WPT TEST EXPECTATIONS
-
-const EXPECTATION_PATH = join(ROOT_PATH, "./tools/wpt/expectation.json");
-
-export interface Expectation {
- [key: string]: Expectation | boolean | string[];
-}
-
-export function getExpectation(): Expectation {
- const expectationText = Deno.readTextFileSync(EXPECTATION_PATH);
- return JSON.parse(expectationText);
-}
-
-export function saveExpectation(expectation: Expectation) {
- Deno.writeTextFileSync(
- EXPECTATION_PATH,
- JSON.stringify(expectation, undefined, " "),
- );
-}
-
-export function getExpectFailForCase(
- expectation: boolean | string[],
- caseName: string,
-): boolean {
- if (noIgnore) return false;
- if (typeof expectation == "boolean") {
- return !expectation;
- }
- return expectation.includes(caseName);
-}
-
-/// UTILS
-
-class AssertionError extends Error {
- name = "AssertionError";
- constructor(message: string) {
- super(message);
- }
-}
-
-export function assert(condition: unknown, message: string): asserts condition {
- if (!condition) {
- throw new AssertionError(message);
- }
-}
-
-export function runPy<T extends Omit<Deno.CommandOptions, "cwd">>(
- args: string[],
- options: T,
-): Deno.ChildProcess {
- const cmd = Deno.build.os == "windows" ? "python.exe" : "python3";
- return new Deno.Command(cmd, {
- args,
- stdout: "inherit",
- stderr: "inherit",
- ...options,
- cwd: join(ROOT_PATH, "./tests/wpt/suite/"),
- }).spawn();
-}
-
-export async function checkPy3Available() {
- const { success, stdout } = await runPy(["--version"], {
- stdout: "piped",
- }).output();
- assert(success, "failed to run python --version");
- const output = new TextDecoder().decode(stdout);
- assert(
- output.includes("Python 3."),
- `The ${
- Deno.build.os == "windows" ? "python.exe" : "python3"
- } in your path is not Python 3.`,
- );
-}
-
-export async function cargoBuild() {
- if (binary) return;
- const { success } = await new Deno.Command("cargo", {
- args: ["build", ...(release ? ["--release"] : [])],
- cwd: ROOT_PATH,
- stdout: "inherit",
- stderr: "inherit",
- }).output();
- assert(success, "cargo build failed");
-}
-
-export function escapeLoneSurrogates(input: string): string;
-export function escapeLoneSurrogates(input: string | null): string | null;
-export function escapeLoneSurrogates(input: string | null): string | null {
- if (input === null) return null;
- return input.replace(
- /[\uD800-\uDFFF]/gu,
- (match) => `U+${match.charCodeAt(0).toString(16)}`,
- );
-}
-
-/// WPTREPORT
-
-export async function generateRunInfo(): Promise<unknown> {
- const oses = {
- "windows": "win",
- "darwin": "mac",
- "linux": "linux",
- "freebsd": "freebsd",
- "openbsd": "openbsd",
- };
- const proc = await new Deno.Command("git", {
- args: ["rev-parse", "HEAD"],
- cwd: join(ROOT_PATH, "tests", "wpt", "suite"),
- stderr: "inherit",
- }).output();
- const revision = (new TextDecoder().decode(proc.stdout)).trim();
- const proc2 = await new Deno.Command(denoBinary(), {
- args: ["eval", "console.log(JSON.stringify(Deno.version))"],
- cwd: join(ROOT_PATH, "tests", "wpt", "suite"),
- }).output();
- const version = JSON.parse(new TextDecoder().decode(proc2.stdout));
- const runInfo = {
- "os": oses[Deno.build.os],
- "processor": Deno.build.arch,
- "version": "unknown",
- "os_version": "unknown",
- "bits": 64,
- "has_sandbox": true,
- "webrender": false,
- "automation": false,
- "linux_distro": "unknown",
- "revision": revision,
- "python_version": 3,
- "product": "deno",
- "debug": false,
- "browser_version": version.deno,
- "browser_channel": version.deno.includes("+") ? "canary" : "stable",
- "verify": false,
- "wasm": false,
- "headless": true,
- };
- return runInfo;
-}