MCPcopy Create free account
hub / github.com/webpack/webpack-cli / runTestStdoutWithInput

Function runTestStdoutWithInput

smoketests/helpers.js:140–202  ·  view source on GitHub ↗
({
  packageName,
  cliArgs,
  inputs,
  logMessage,
  isSubPackage,
} = {})

Source from the content-addressed store, hash-verified

138};
139
140const runTestStdoutWithInput = async ({
141 packageName,
142 cliArgs,
143 inputs,
144 logMessage,
145 isSubPackage,
146} = {}) => {
147 // Simulate package missing
148 swapPkgName(packageName, isSubPackage);
149
150 const { execa } = await import("execa");
151 const abortController = new AbortController();
152 const proc = execa(CLI_ENTRY_PATH, cliArgs, {
153 cwd: __dirname,
154 reject: false,
155 gracefulCancel: true,
156 cancelSignal: abortController.signal,
157 });
158
159 proc.stdin.setDefaultEncoding("utf8");
160
161 return new Promise((resolve) => {
162 const timeout = setTimeout(() => {
163 console.log(" timeout: killing process");
164 proc.kill();
165 }, 300000);
166
167 let hasPassed = false;
168
169 proc.stdout.on("data", (chunk) => {
170 const data = stripVTControlCharacters(chunk.toString());
171 console.log(` stdout: ${data}`);
172
173 if (data.includes(logMessage)) {
174 hasPassed = true;
175 abortController.abort();
176 }
177
178 for (const input of Object.keys(inputs)) {
179 if (data.includes(input)) {
180 proc.stdin.write(inputs[input]);
181 }
182 }
183 });
184
185 proc.stderr.on("data", (chunk) => {
186 const data = stripVTControlCharacters(chunk.toString());
187 console.log(` stderr: ${data}`);
188 });
189
190 proc.on("exit", () => {
191 swapPkgName(`.${packageName}`, isSubPackage);
192 clearTimeout(timeout);
193 resolve(hasPassed);
194 });
195
196 proc.on("error", () => {
197 swapPkgName(`.${packageName}`, isSubPackage);

Callers

nothing calls this directly

Calls 2

swapPkgNameFunction · 0.85
resolveFunction · 0.85

Tested by

no test coverage detected