






















11#!/usr/bin/env node
223-import { spawn, spawnSync } from "node:child_process";
3+import { spawn } from "node:child_process";
44import fs from "node:fs";
55import os from "node:os";
66import path from "node:path";
@@ -374,55 +374,8 @@ function writeCommandLog(params) {
374374return logPath;
375375}
376376377-export function runMeasuredCommand(params) {
378-const { command, args, mode } =
379-params.timeMode === "none"
380- ? { command: params.command, args: params.args, mode: "none" }
381- : timeWrapperArgs(params.command, params.args);
382-const started = performance.now();
383-const result = spawnSync(command, args, {
384-cwd: params.cwd,
385-env: params.env,
386-encoding: "utf8",
387-timeout: params.timeoutMs,
388-maxBuffer: params.maxBufferBytes ?? COMMAND_OUTPUT_MAX_BUFFER_BYTES,
389- ...(mode === "none" ? (params.spawnOptions ?? {}) : {}),
390-});
391-const wallMs = performance.now() - started;
392-const spawnError = result.error
393- ? {
394-code: typeof result.error.code === "string" ? result.error.code : null,
395-message: result.error.message,
396-}
397- : null;
398-const status = result.status ?? (result.signal || spawnError ? 1 : 0);
399-const stdout = result.stdout ?? "";
400-const stderr = [
401-result.stderr ?? "",
402-spawnError ? `[spawn error] ${spawnError.code ?? "unknown"} ${spawnError.message}` : "",
403-]
404-.filter(Boolean)
405-.join("\n");
406-const diagnosticFailure = detectCommandDiagnosticFailure(stdout, stderr);
407-const logPath = writeCommandLog({
408-logDir: params.logDir,
409-label: params.label,
410-command: [params.command, ...params.args],
411- stdout,
412- stderr,
413-});
414-return {
415-label: params.label,
416-phase: params.phase,
417-pluginId: params.pluginId ?? null,
418- status,
419- diagnosticFailure,
420-signal: result.signal ?? null,
421-timedOut: spawnError?.code === "ETIMEDOUT",
422- spawnError,
423- logPath,
424- ...parseTimedMetrics(stderr, wallMs, mode),
425-};
377+export async function runMeasuredCommand(params) {
378+return await runMeasuredCommandLive(params);
426379}
427380428381export function runMeasuredCommandLive(params) {
@@ -642,7 +595,7 @@ export function hasGauntletWorkRows(rows) {
642595return rows.some((row) => row.phase !== "prebuild");
643596}
644597645-function runPluginLifecycle(params) {
598+async function runPluginLifecycle(params) {
646599for (const plugin of params.plugins) {
647600const commands = [
648601{
@@ -658,7 +611,7 @@ function runPluginLifecycle(params) {
658611for (const { phase, args } of commands) {
659612process.stderr.write(`[plugin-gauntlet] ${plugin.id} ${phase}\n`);
660613params.rows.push(
661-runMeasuredCommand({
614+await runMeasuredCommand({
662615cwd: params.repoRoot,
663616env: params.env,
664617logDir: path.join(params.outputDir, "logs", "lifecycle"),
@@ -673,13 +626,13 @@ function runPluginLifecycle(params) {
673626}
674627}
675628676-function runSlashHelpProbes(params) {
629+async function runSlashHelpProbes(params) {
677630for (const plugin of params.plugins) {
678631for (const alias of plugin.cliCommandAliases) {
679632const command = alias.cliCommand ?? alias.name;
680633process.stderr.write(`[plugin-gauntlet] ${plugin.id} slash-help /${alias.name}\n`);
681634params.rows.push(
682-runMeasuredCommand({
635+await runMeasuredCommand({
683636cwd: params.repoRoot,
684637env: params.env,
685638logDir: path.join(params.outputDir, "logs", "slash-help"),
@@ -694,7 +647,7 @@ function runSlashHelpProbes(params) {
694647}
695648}
696649697-function runQaChunks(params) {
650+async function runQaChunks(params) {
698651const chunks = [
699652 ...(params.qaBaseline ? [{ label: "baseline", plugins: [] }] : []),
700653 ...chunkArray(params.plugins, params.qaPluginChunkSize).map((plugins, index) => ({
@@ -712,7 +665,7 @@ function runQaChunks(params) {
712665process.stderr.write(
713666`[plugin-gauntlet] qa chunk ${index + 1}/${chunks.length}: ${pluginIdLabel}\n`,
714667);
715-const row = runMeasuredCommand({
668+const row = await runMeasuredCommand({
716669cwd: params.repoRoot,
717670env: params.env,
718671logDir: path.join(params.outputDir, "logs", "qa-suite"),
@@ -849,7 +802,7 @@ async function main() {
849802(row) => row.phase === "prebuild" && (row.status !== 0 || row.timedOut),
850803);
851804if (!prebuildFailed && !options.skipLifecycle) {
852-runPluginLifecycle({
805+await runPluginLifecycle({
853806 repoRoot,
854807outputDir: options.outputDir,
855808env: commandEnv,
@@ -859,7 +812,7 @@ async function main() {
859812});
860813}
861814if (!prebuildFailed && !options.skipSlashHelp) {
862-runSlashHelpProbes({
815+await runSlashHelpProbes({
863816 repoRoot,
864817outputDir: options.outputDir,
865818env: commandEnv,
@@ -871,7 +824,7 @@ async function main() {
871824const qaSummaries =
872825options.skipQa || prebuildFailed
873826 ? []
874- : runQaChunks({
827+ : await runQaChunks({
875828 repoRoot,
876829outputDir: options.outputDir,
877830env: commandEnv,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。