From eebc7648a57d792bee6fd0140d9fa971bb7cf8aa Mon Sep 17 00:00:00 2001 From: Liang Gong Date: Mon, 13 May 2024 10:05:30 -0700 Subject: [PATCH] fix(core): improve quoting args in running integration test jobs Reviewed By: tulga1970 Differential Revision: D57249292 fbshipit-source-id: 4f24c20269217a13230e09f6f9f6225077556c6e --- packages/core/src/lib/ProcessManager.ts | 3 ++- packages/core/src/lib/Utils.ts | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/packages/core/src/lib/ProcessManager.ts b/packages/core/src/lib/ProcessManager.ts index d4c1597dd..9ddd692ee 100644 --- a/packages/core/src/lib/ProcessManager.ts +++ b/packages/core/src/lib/ProcessManager.ts @@ -13,6 +13,7 @@ import type {Command, Optional} from './Types'; import info from './Console'; import cp from 'child_process'; import os from 'os'; +import utils from './Utils'; type Options = { msg?: string; @@ -66,7 +67,7 @@ class ProcessManager { if (options.msg) { info.lowLevel(options.msg); } - const str = [cmd, ...args].join(' '); + const str = utils.convertCLIArgsToReadableCommand([cmd, ...args]); this.nProc++; const proc = cp.spawn(cmd, args); proc.on('exit', code => { diff --git a/packages/core/src/lib/Utils.ts b/packages/core/src/lib/Utils.ts index a2d3fa332..0a5a3b663 100644 --- a/packages/core/src/lib/Utils.ts +++ b/packages/core/src/lib/Utils.ts @@ -2141,6 +2141,22 @@ function setChromiumBinary(config: MemLabConfig, chromiumBinary: string) { config.puppeteerConfig.executablePath = binaryPath; } +function convertToReadableArg(arg: string): string { + const startsWithBackslashAndQuote = arg.startsWith('\\"'); + const endsWithBackslashAndQuote = arg.endsWith('\\"'); + if (startsWithBackslashAndQuote && endsWithBackslashAndQuote) { + return `"${arg.substring(2, arg.length - 2)}"`; + } + if (/\s/.test(arg)) { + return `"${arg}"`; + } + return arg; +} + +function convertCLIArgsToReadableCommand(args: string[]): string { + return args.map(convertToReadableArg).join(' '); +} + export default { aggregateDominatorMetrics, applyToNodes, @@ -2150,6 +2166,7 @@ export default { checkSnapshots, checkUninstalledLibrary, closePuppeteer, + convertCLIArgsToReadableCommand, dumpSnapshot, equalOrMatch, extractClosureNodeInfo,