167 lines
5.9 KiB
JavaScript
167 lines
5.9 KiB
JavaScript
// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
|
|
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
|
|
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
|
|
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
|
|
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
|
|
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
|
|
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
|
|
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
|
|
// ┃ This file is part of the Perspective library, distributed under the terms ┃
|
|
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
|
|
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
|
|
|
|
import { execSync } from "child_process";
|
|
import { getarg, run_with_scope, get_scope } from "./sh_perspective.mjs";
|
|
|
|
const IS_NEEDS_BUILD = get_scope().some((x) => x === "jupyterlab");
|
|
|
|
// Unfortunately we have to handle parts of the Jupyter test case here,
|
|
// as the Jupyter server needs to be run outside of the main Jest process.
|
|
const IS_JUPYTER = !!getarg("--jupyter") && IS_NEEDS_BUILD;
|
|
|
|
if (getarg("--debug")) {
|
|
console.log("-- Running tests in debug mode.");
|
|
}
|
|
|
|
const IS_PLAYWRIGHT = get_scope().reduce(
|
|
(is_playwright, pkg) =>
|
|
is_playwright ||
|
|
[
|
|
"docs",
|
|
"client",
|
|
"react",
|
|
"viewer",
|
|
"viewer-datagrid",
|
|
"viewer-charts",
|
|
"viewer-workspace",
|
|
"workspace",
|
|
"jupyterlab",
|
|
].includes(pkg),
|
|
false,
|
|
);
|
|
|
|
const IS_RUST = get_scope().reduce(
|
|
(is_playwright, pkg) => is_playwright || ["rust"].includes(pkg),
|
|
false,
|
|
);
|
|
|
|
const IS_CI = process.env.CI || getarg("--ci") ? "CI=1" : "";
|
|
if (IS_CI) {
|
|
console.log("-- Running tests in CI mode.");
|
|
}
|
|
|
|
function playwright(pkg, is_jlab) {
|
|
const pkg_name = pkg ? `"${pkg}" ` : "";
|
|
console.log(`-- Running ${pkg_name}Playwright test suite`);
|
|
const args = process.argv
|
|
.slice(2)
|
|
.filter(
|
|
(x) =>
|
|
x !== "--ci" && x !== "--jupyter" && x !== "--fetch-snapshots",
|
|
);
|
|
|
|
const env = { ...process.env, TZ: "UTC" };
|
|
if (is_jlab) {
|
|
env.PSP_JUPYTERLAB_TESTS = "1";
|
|
env.__JUPYTERLAB_PORT__ = "6538";
|
|
}
|
|
|
|
if (getarg("--fetch-snapshots")) {
|
|
env.PSP_FETCH_SNAPSHOTS = "1";
|
|
}
|
|
|
|
if (getarg("--update-snapshots")) {
|
|
env.PSP_UPDATE_SNAPSHOTS = "1";
|
|
}
|
|
|
|
if (IS_CI) {
|
|
env.CI = "1";
|
|
}
|
|
|
|
if (pkg) {
|
|
env.PACKAGE = pkg;
|
|
}
|
|
|
|
const cmd = [
|
|
"npx",
|
|
"playwright",
|
|
"test",
|
|
"--config=tools/test/playwright.config.ts",
|
|
...args,
|
|
].join(" ");
|
|
execSync(cmd, { stdio: "inherit", env });
|
|
}
|
|
|
|
if (!IS_JUPYTER) {
|
|
// test:build irrelevant for jupyter tests
|
|
await run_with_scope`test:build`;
|
|
}
|
|
|
|
if (process.env.PACKAGE) {
|
|
if (IS_NEEDS_BUILD) {
|
|
await run_with_scope`test:jupyter:build`;
|
|
}
|
|
|
|
if (IS_JUPYTER) {
|
|
// Jupyterlab is guaranteed to have started at this point, so
|
|
// copy the test files over and run the tests.
|
|
playwright("jupyterlab", true);
|
|
process.exit(0);
|
|
}
|
|
|
|
if (IS_PLAYWRIGHT) {
|
|
playwright(process.env.PACKAGE);
|
|
}
|
|
|
|
if (
|
|
process.env.PACKAGE.indexOf("python") >= 0 &&
|
|
process.env.PACKAGE.indexOf("!python") === -1
|
|
) {
|
|
// Support `pnpm test -- --my_cool --test_arguments`
|
|
const args = process.argv.slice(2);
|
|
execSync(
|
|
`pnpm run --recursive --filter @perspective-dev/python test ${args.join(" ")}`,
|
|
{ stdio: "inherit" },
|
|
);
|
|
}
|
|
|
|
if (IS_RUST) {
|
|
let target = "";
|
|
let flags = "--release";
|
|
if (!!process.env.PSP_DEBUG) {
|
|
flags = "";
|
|
}
|
|
|
|
if (
|
|
process.env.PSP_ARCH === "x86_64" &&
|
|
process.platform === "darwin"
|
|
) {
|
|
target = "--target=x86_64-apple-darwin";
|
|
} else if (
|
|
process.env.PSP_ARCH === "aarch64" &&
|
|
process.platform === "darwin"
|
|
) {
|
|
target = "--target=aarch64-apple-darwin";
|
|
} else if (
|
|
process.env.PSP_ARCH === "x86_64" &&
|
|
process.platform === "linux"
|
|
) {
|
|
target =
|
|
"--target=x86_64-unknown-linux-gnu --compatibility manylinux_2_28";
|
|
} else if (
|
|
process.env.PSP_ARCH === "aarch64" &&
|
|
process.platform === "linux"
|
|
) {
|
|
target = "--target=aarch64-unknown-linux-gnu";
|
|
}
|
|
|
|
execSync(
|
|
`cargo test ${flags} ${target} -p perspective -p perspective-client`,
|
|
{ stdio: "inherit" },
|
|
);
|
|
}
|
|
} else {
|
|
console.log("-- Running all tests");
|
|
playwright();
|
|
}
|