Public dry run dryrun-309831e1e021
Source commit: 309831e1e021f962c118452336776fd9a94025f9 Public tree identity: sha256:6fa95c1745579bd6256dbeb3d476db0b07c2f24aa9213b0f7783ce1adfc8aca5
This commit is contained in:
commit
f22d0a5791
113 changed files with 39348 additions and 0 deletions
139
scripts/acceptance-report.js
Executable file
139
scripts/acceptance-report.js
Executable file
|
|
@ -0,0 +1,139 @@
|
|||
#!/usr/bin/env node
|
||||
|
||||
const cp = require("child_process");
|
||||
const fs = require("fs");
|
||||
const os = require("os");
|
||||
const path = require("path");
|
||||
|
||||
const repo = path.resolve(__dirname, "..");
|
||||
const mode = process.argv[2] || "public";
|
||||
|
||||
function commandOutput(command, args = []) {
|
||||
try {
|
||||
return cp
|
||||
.execFileSync(command, args, {
|
||||
cwd: repo,
|
||||
encoding: "utf8",
|
||||
stdio: ["ignore", "pipe", "pipe"]
|
||||
})
|
||||
.trim();
|
||||
} catch (_) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function packageJson() {
|
||||
return JSON.parse(
|
||||
fs.readFileSync(path.join(repo, "vscode-extension/package.json"), "utf8")
|
||||
);
|
||||
}
|
||||
|
||||
function firstCommandOutput(candidates) {
|
||||
for (const [command, args] of candidates) {
|
||||
const output = commandOutput(command, args);
|
||||
if (output) {
|
||||
return { command, version: output };
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function podmanReport() {
|
||||
const version = commandOutput("podman", ["--version"]);
|
||||
if (!version) {
|
||||
return {
|
||||
status: "incomplete",
|
||||
version: null,
|
||||
rootless: null,
|
||||
incomplete_reason: "podman command is unavailable"
|
||||
};
|
||||
}
|
||||
const rootless = commandOutput("podman", [
|
||||
"info",
|
||||
"--format",
|
||||
"{{.Host.Security.Rootless}}"
|
||||
]);
|
||||
if (!rootless) {
|
||||
return {
|
||||
status: "incomplete",
|
||||
version,
|
||||
rootless: null,
|
||||
incomplete_reason: "podman info did not report rootless status"
|
||||
};
|
||||
}
|
||||
if (rootless !== "true") {
|
||||
return {
|
||||
status: "incomplete",
|
||||
version,
|
||||
rootless,
|
||||
incomplete_reason: "podman is not running in rootless mode"
|
||||
};
|
||||
}
|
||||
return {
|
||||
status: "available",
|
||||
version,
|
||||
rootless,
|
||||
incomplete_reason: null
|
||||
};
|
||||
}
|
||||
|
||||
const extensionPackage = packageJson();
|
||||
const sourceCommit =
|
||||
process.env.DISASMER_ACCEPTANCE_COMMIT || commandOutput("git", ["rev-parse", "HEAD"]);
|
||||
const browserVersion = firstCommandOutput([
|
||||
["chromium", ["--version"]],
|
||||
["chromium-browser", ["--version"]],
|
||||
["google-chrome", ["--version"]],
|
||||
["firefox", ["--version"]]
|
||||
]);
|
||||
const report = {
|
||||
kind: "disasmer_acceptance_environment",
|
||||
mode,
|
||||
commit: sourceCommit,
|
||||
tree_status: (commandOutput("git", ["status", "--short"]) || "")
|
||||
.split("\n")
|
||||
.filter(Boolean),
|
||||
generated_at: new Date().toISOString(),
|
||||
os: {
|
||||
platform: os.platform(),
|
||||
release: os.release(),
|
||||
kernel: os.release(),
|
||||
arch: os.arch()
|
||||
},
|
||||
rust: {
|
||||
rustc: commandOutput("rustc", ["--version"]),
|
||||
cargo: commandOutput("cargo", ["--version"])
|
||||
},
|
||||
node: {
|
||||
version: process.version
|
||||
},
|
||||
podman: podmanReport(),
|
||||
postgres: {
|
||||
version:
|
||||
commandOutput("postgres", ["--version"]) ||
|
||||
commandOutput("psql", ["--version"])
|
||||
},
|
||||
browser_harness: {
|
||||
version: browserVersion && browserVersion.version,
|
||||
command: browserVersion && browserVersion.command,
|
||||
configured: process.env.DISASMER_BROWSER_HARNESS || "not-configured"
|
||||
},
|
||||
vscode_harness: {
|
||||
smokes: [
|
||||
"scripts/vscode-extension-smoke.js",
|
||||
"scripts/vscode-f5-smoke.js"
|
||||
],
|
||||
engine: extensionPackage.engines && extensionPackage.engines.vscode,
|
||||
extension_version: extensionPackage.version
|
||||
},
|
||||
windows_validation: process.env.DISASMER_WINDOWS_VALIDATION || "not-run"
|
||||
};
|
||||
|
||||
const outDir = path.join(repo, "target/acceptance");
|
||||
fs.mkdirSync(outDir, { recursive: true });
|
||||
fs.writeFileSync(
|
||||
path.join(outDir, `${mode}-environment.json`),
|
||||
`${JSON.stringify(report, null, 2)}\n`
|
||||
);
|
||||
|
||||
console.log(JSON.stringify(report, null, 2));
|
||||
Loading…
Add table
Add a link
Reference in a new issue