Public dry run dryrun-1714a9eedd5b
Source commit: 1714a9eedd5b1e30c6c9aceb7a999f2f695ba83c Public tree identity: sha256:e5daffad23fa7c7f1822adccd3c3b4ee0bc7f1a45e0d321eb9a6fb8282b269db
This commit is contained in:
commit
20c72e6066
102 changed files with 32054 additions and 0 deletions
113
scripts/acceptance-report-smoke.js
Normal file
113
scripts/acceptance-report-smoke.js
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const assert = require("assert");
|
||||
const cp = require("child_process");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const repo = path.resolve(__dirname, "..");
|
||||
|
||||
function runReport(mode, env = {}) {
|
||||
const output = cp.execFileSync(
|
||||
"node",
|
||||
["scripts/acceptance-report.js", mode],
|
||||
{
|
||||
cwd: repo,
|
||||
encoding: "utf8",
|
||||
env: { ...process.env, ...env },
|
||||
}
|
||||
);
|
||||
const report = JSON.parse(output);
|
||||
const persistedPath = path.join(
|
||||
repo,
|
||||
"target",
|
||||
"acceptance",
|
||||
`${mode}-environment.json`
|
||||
);
|
||||
const persisted = JSON.parse(fs.readFileSync(persistedPath, "utf8"));
|
||||
assert.deepStrictEqual(persisted, report, `${mode} report was not persisted`);
|
||||
return report;
|
||||
}
|
||||
|
||||
function assertString(value, name) {
|
||||
assert.strictEqual(typeof value, "string", `${name} must be a string`);
|
||||
assert(value.length > 0, `${name} must not be empty`);
|
||||
}
|
||||
|
||||
function assertNullableString(value, name) {
|
||||
if (value === null) return;
|
||||
assertString(value, name);
|
||||
}
|
||||
|
||||
function assertPodmanReport(podman) {
|
||||
assert(podman && typeof podman === "object", "podman report must be an object");
|
||||
assert(
|
||||
["available", "incomplete"].includes(podman.status),
|
||||
"podman.status must be available or incomplete"
|
||||
);
|
||||
assertNullableString(podman.version, "podman.version");
|
||||
assertNullableString(podman.rootless, "podman.rootless");
|
||||
assertNullableString(podman.incomplete_reason, "podman.incomplete_reason");
|
||||
if (podman.status === "available") {
|
||||
assertString(podman.version, "podman.version");
|
||||
assert.strictEqual(podman.rootless, "true");
|
||||
assert.strictEqual(podman.incomplete_reason, null);
|
||||
} else {
|
||||
assertString(podman.incomplete_reason, "podman.incomplete_reason");
|
||||
}
|
||||
}
|
||||
|
||||
function assertReport(report, mode, expectedWindowsValidation) {
|
||||
assert.strictEqual(report.kind, "disasmer_acceptance_environment");
|
||||
assert.strictEqual(report.mode, mode);
|
||||
assert.match(report.generated_at, /^\d{4}-\d{2}-\d{2}T/);
|
||||
assert.match(report.commit, /^[0-9a-f]{40}$/);
|
||||
assert(Array.isArray(report.tree_status), "tree_status must be an array");
|
||||
|
||||
assertString(report.os.platform, "os.platform");
|
||||
assertString(report.os.release, "os.release");
|
||||
assertString(report.os.kernel, "os.kernel");
|
||||
assertString(report.os.arch, "os.arch");
|
||||
|
||||
assertString(report.rust.rustc, "rust.rustc");
|
||||
assertString(report.rust.cargo, "rust.cargo");
|
||||
assertString(report.node.version, "node.version");
|
||||
assert(report.node.version.startsWith("v"), "node.version must be Node.js style");
|
||||
|
||||
assertPodmanReport(report.podman);
|
||||
assertNullableString(report.postgres.version, "postgres.version");
|
||||
assertNullableString(report.browser_harness.version, "browser_harness.version");
|
||||
assertNullableString(report.browser_harness.command, "browser_harness.command");
|
||||
assertString(report.browser_harness.configured, "browser_harness.configured");
|
||||
|
||||
assert(Array.isArray(report.vscode_harness.smokes), "vscode smokes must be listed");
|
||||
assert(
|
||||
report.vscode_harness.smokes.includes("scripts/vscode-extension-smoke.js"),
|
||||
"VS Code extension smoke must be recorded"
|
||||
);
|
||||
assert(
|
||||
report.vscode_harness.smokes.includes("scripts/vscode-f5-smoke.js"),
|
||||
"VS Code F5 smoke must be recorded"
|
||||
);
|
||||
assertString(report.vscode_harness.engine, "vscode_harness.engine");
|
||||
assertString(
|
||||
report.vscode_harness.extension_version,
|
||||
"vscode_harness.extension_version"
|
||||
);
|
||||
|
||||
assert.strictEqual(report.windows_validation, expectedWindowsValidation);
|
||||
}
|
||||
|
||||
for (const mode of ["public", "private"]) {
|
||||
assertReport(runReport(mode), mode, "not-run");
|
||||
}
|
||||
|
||||
assertReport(
|
||||
runReport("windows", {
|
||||
DISASMER_WINDOWS_VALIDATION: "forgejo-windows-runner",
|
||||
}),
|
||||
"windows",
|
||||
"forgejo-windows-runner"
|
||||
);
|
||||
|
||||
console.log("Acceptance report smoke passed");
|
||||
Loading…
Add table
Add a link
Reference in a new issue