@wp-tester/phpunit 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/runner.d.ts +1 -14
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +94 -143
- package/dist/runner.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/wordpress-test-lib.js +1 -1
- package/package.json +4 -4
- package/dist/junit-parser.d.ts +0 -11
- package/dist/junit-parser.d.ts.map +0 -1
- package/dist/junit-parser.js +0 -114
- package/dist/junit-parser.js.map +0 -1
package/dist/runner.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { WPTesterConfig, ResolvedWPTesterConfig } from "@wp-tester/config";
|
|
2
2
|
import type { Report } from "@wp-tester/results";
|
|
3
|
-
export declare function shouldRunPhpunitTests(config: WPTesterConfig): boolean;
|
|
3
|
+
export declare function shouldRunPhpunitTests(config: WPTesterConfig | ResolvedWPTesterConfig): boolean;
|
|
4
4
|
/**
|
|
5
5
|
* Options for running PHPUnit tests
|
|
6
6
|
*/
|
|
@@ -16,17 +16,4 @@ export interface RunPhpunitTestsOptions {
|
|
|
16
16
|
* @returns CTRF report with test results
|
|
17
17
|
*/
|
|
18
18
|
export declare function runPhpunitTests(config: ResolvedWPTesterConfig, phpunitArgsOrOptions?: string[] | RunPhpunitTestsOptions): Promise<Report>;
|
|
19
|
-
interface PlaygroundClient {
|
|
20
|
-
fileExists(path: string): Promise<boolean>;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Resolve PHPUnit arguments to map host paths to VFS paths
|
|
24
|
-
*
|
|
25
|
-
* @param args - Original arguments
|
|
26
|
-
* @param config - Resolved configuration
|
|
27
|
-
* @param playground - Playground client for checking VFS file existence
|
|
28
|
-
* @returns Resolved arguments
|
|
29
|
-
*/
|
|
30
|
-
export declare function resolvePhpunitArgs(args: string[], config: ResolvedWPTesterConfig, playground: PlaygroundClient): Promise<string[]>;
|
|
31
|
-
export {};
|
|
32
19
|
//# sourceMappingURL=runner.d.ts.map
|
package/dist/runner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAMjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,sBAAsB,GAAG,OAAO,CAE9F;AAkVD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,sBAAsB,EAC9B,oBAAoB,CAAC,EAAE,MAAM,EAAE,GAAG,sBAAsB,GACvD,OAAO,CAAC,MAAM,CAAC,CAyEjB"}
|
package/dist/runner.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { resolvePhpunitArgs } from "@wp-tester/config";
|
|
2
|
+
import { defineWpConfigConsts } from "@wp-playground/blueprints";
|
|
3
|
+
import { setPhpIniEntries } from "@php-wasm/universal";
|
|
2
4
|
import { EMPTY_REPORT, mergeReports, PHPUnitStreamingReporter, TeamCityParser } from "@wp-tester/results";
|
|
3
5
|
import { startPlayground } from "@wp-tester/runtime";
|
|
4
6
|
import { mountWordPressTestLibrary } from "./wordpress-test-lib.js";
|
|
@@ -11,10 +13,9 @@ export function shouldRunPhpunitTests(config) {
|
|
|
11
13
|
*
|
|
12
14
|
* @param config - Resolved test configuration
|
|
13
15
|
* @param environment - Environment configuration
|
|
14
|
-
* @param hostPhpunitConfigPath - Absolute path to PHPUnit config on host
|
|
15
16
|
* @returns CTRF report with test results
|
|
16
17
|
*/
|
|
17
|
-
async function runPhpunitTestsForEnvironment(config, environment
|
|
18
|
+
async function runPhpunitTestsForEnvironment(config, environment) {
|
|
18
19
|
const testMode = config.tests.phpunit.testMode;
|
|
19
20
|
let environmentWithMount = {
|
|
20
21
|
...environment,
|
|
@@ -27,32 +28,51 @@ async function runPhpunitTestsForEnvironment(config, environment, hostPhpunitCon
|
|
|
27
28
|
// Start playground with all mounts and steps including test library initialization
|
|
28
29
|
const runtime = await startPlayground(environmentWithMount);
|
|
29
30
|
const playground = runtime.playground;
|
|
31
|
+
// Configure PHP error handling for PHPUnit compatibility
|
|
32
|
+
// - html_errors=0: PHPUnit needs plain text errors, not HTML
|
|
33
|
+
// Note: display_errors is left enabled so test failures show useful output
|
|
34
|
+
await setPhpIniEntries(playground, {
|
|
35
|
+
html_errors: "0",
|
|
36
|
+
});
|
|
37
|
+
// Remove Playground's error handler file to allow PHPUnit to register its own
|
|
38
|
+
// Playground registers an error handler in /internal/shared/preload/error-handler.php
|
|
39
|
+
// to suppress certain warnings. This file is loaded via auto_prepend_file on EVERY
|
|
40
|
+
// PHP execution (including PHPUnit CLI). However, PHPUnit's ErrorHandler::register()
|
|
41
|
+
// refuses to override existing handlers, which breaks expectWarning() and similar assertions.
|
|
42
|
+
// Solution: Delete the file so it doesn't get loaded when PHPUnit runs.
|
|
43
|
+
try {
|
|
44
|
+
await playground.unlink("/internal/shared/preload/error-handler.php");
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// File might not exist, that's fine
|
|
48
|
+
}
|
|
49
|
+
// Set WP_TESTS_DOMAIN constant
|
|
50
|
+
await defineWpConfigConsts(playground, {
|
|
51
|
+
consts: {
|
|
52
|
+
WP_TESTS_DOMAIN: new URL(await playground.absoluteUrl).host,
|
|
53
|
+
},
|
|
54
|
+
});
|
|
30
55
|
try {
|
|
31
56
|
// Determine the plugin or theme being tested
|
|
32
57
|
if (!config.projectType) {
|
|
33
58
|
console.error("Project type must be specified in config for PHPUnit tests");
|
|
34
59
|
return EMPTY_REPORT;
|
|
35
60
|
}
|
|
36
|
-
if (!config.
|
|
61
|
+
if (!config.projectPath.vfsPath) {
|
|
37
62
|
console.error(`Project type '${config.projectType}' does not support PHPUnit tests`);
|
|
38
63
|
return EMPTY_REPORT;
|
|
39
64
|
}
|
|
40
|
-
//
|
|
41
|
-
const vfsPhpunitConfigPath =
|
|
42
|
-
|
|
43
|
-
const vfsPhpunitPath = hostToVfs(config.tests.phpunit.phpunitPath, config);
|
|
65
|
+
// Get VFS paths from resolved config
|
|
66
|
+
const vfsPhpunitConfigPath = config.tests.phpunit.configPath.vfsPath;
|
|
67
|
+
const vfsPhpunitPath = config.tests.phpunit.phpunitPath.vfsPath;
|
|
44
68
|
// Only create WordPress bootstrap in integration mode
|
|
45
69
|
let bootstrapFilePath = null;
|
|
46
70
|
if (testMode === "integration") {
|
|
47
|
-
//
|
|
48
|
-
const bootstrapPath =
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// Bootstrap path from parseBootstrapPath is relative, convert to absolute
|
|
53
|
-
const absoluteBootstrapPath = resolveAbsolute(bootstrapPath, config.projectHostPath);
|
|
54
|
-
userBootstrap = hostToVfs(absoluteBootstrapPath, config);
|
|
55
|
-
}
|
|
71
|
+
// Use resolved bootstrap path from config (already resolved during config resolution)
|
|
72
|
+
const bootstrapPath = config.tests.phpunit.bootstrapPath;
|
|
73
|
+
// Get VFS path directly from resolved path (or use default if not found)
|
|
74
|
+
const userBootstrap = bootstrapPath?.vfsPath
|
|
75
|
+
?? `${config.projectPath.vfsPath}/tests/bootstrap.php`;
|
|
56
76
|
// Create a custom bootstrap file that loads WordPress, then user's bootstrap if it exists
|
|
57
77
|
bootstrapFilePath = `/tmp/wp-tester-bootstrap.php`;
|
|
58
78
|
await playground.writeFile(bootstrapFilePath, `<?php
|
|
@@ -86,19 +106,16 @@ async function runPhpunitTestsForEnvironment(config, environment, hostPhpunitCon
|
|
|
86
106
|
if (bootstrapFilePath !== null) {
|
|
87
107
|
cliArgs.push("--bootstrap", bootstrapFilePath);
|
|
88
108
|
}
|
|
89
|
-
// Append additional PHPUnit arguments from config
|
|
90
|
-
// Resolve file/directory paths from host to VFS
|
|
109
|
+
// Append additional PHPUnit arguments from config (already resolved to VFS paths)
|
|
91
110
|
const phpunitArgs = config.tests.phpunit.phpunitArgs;
|
|
92
111
|
if (phpunitArgs && phpunitArgs.length > 0) {
|
|
93
|
-
|
|
94
|
-
const resolvedArgs = await resolvePhpunitArgs(phpunitArgs, config, playground);
|
|
95
|
-
cliArgs.push(...resolvedArgs);
|
|
112
|
+
cliArgs.push(...phpunitArgs);
|
|
96
113
|
}
|
|
97
114
|
// Create streaming reporter
|
|
98
115
|
// Disable summary since the CLI will print a combined summary
|
|
99
116
|
const useStreaming = config.reporters?.default !== undefined;
|
|
100
117
|
// Get filter options from config reporters (only if it's an object, not boolean)
|
|
101
|
-
const filter = typeof config.reporters?.default ===
|
|
118
|
+
const filter = typeof config.reporters?.default === "object"
|
|
102
119
|
? config.reporters.default
|
|
103
120
|
: undefined;
|
|
104
121
|
const reporter = new PHPUnitStreamingReporter({
|
|
@@ -125,8 +142,8 @@ async function runPhpunitTestsForEnvironment(config, environment, hostPhpunitCon
|
|
|
125
142
|
// PHPUnit outputs TeamCity format to both stdout and stderr
|
|
126
143
|
const textDecoder = new TextDecoder();
|
|
127
144
|
const stderrDecoder = new TextDecoder();
|
|
128
|
-
let stdoutCapture =
|
|
129
|
-
let stderrCapture =
|
|
145
|
+
let stdoutCapture = "";
|
|
146
|
+
let stderrCapture = "";
|
|
130
147
|
await Promise.all([
|
|
131
148
|
result.stdout.pipeTo(new WritableStream({
|
|
132
149
|
write(chunk) {
|
|
@@ -160,41 +177,37 @@ async function runPhpunitTestsForEnvironment(config, environment, hostPhpunitCon
|
|
|
160
177
|
},
|
|
161
178
|
})),
|
|
162
179
|
]);
|
|
163
|
-
// Close the outer suite that was started earlier
|
|
164
|
-
reporter.onEvent({
|
|
165
|
-
type: "suite:end",
|
|
166
|
-
name: `${environment.name} - PHPUnit ${testMode} tests`,
|
|
167
|
-
});
|
|
168
|
-
// Signal test run end to finalize timing
|
|
169
|
-
reporter.onEvent({
|
|
170
|
-
type: "run:end",
|
|
171
|
-
});
|
|
172
180
|
const exitCode = await result.exitCode;
|
|
173
|
-
// Get the report from the streaming reporter
|
|
174
|
-
const report = reporter.getReport();
|
|
175
181
|
// PHPUnit outputs errors to stdout, not stderr, so we need to check both
|
|
176
|
-
|
|
182
|
+
// Combine both streams to ensure we capture all output including "No tests executed!"
|
|
183
|
+
const combinedOutput = (stderrCapture.trim() +
|
|
184
|
+
"\n" +
|
|
185
|
+
stdoutCapture.trim()).trim();
|
|
186
|
+
const errorOutput = combinedOutput || stderrCapture.trim() || stdoutCapture.trim();
|
|
187
|
+
// Get current report to check if tests were reported
|
|
188
|
+
const currentReport = reporter.getReport();
|
|
189
|
+
const hasReportedTests = currentReport.results.tests.length > 0;
|
|
177
190
|
// Check for bad exit codes that indicate fatal errors
|
|
178
191
|
// Exit code 0 = success, 1 = test failures, 2 = errors (all acceptable)
|
|
179
192
|
// Other exit codes (e.g., 127 = command not found, 255 = fatal error) are not acceptable
|
|
180
193
|
if (exitCode !== 0 && exitCode !== 1 && exitCode !== 2) {
|
|
181
194
|
// For bad exit codes without error output or with tests that already ran, return empty report
|
|
182
|
-
if (!errorOutput ||
|
|
183
|
-
console.error(
|
|
195
|
+
if (!errorOutput || hasReportedTests) {
|
|
196
|
+
console.error("\nPHPUnit tests could not run.");
|
|
184
197
|
// Provide specific guidance based on common exit codes
|
|
185
198
|
if (exitCode === 127) {
|
|
186
|
-
console.error(
|
|
187
|
-
console.error(
|
|
188
|
-
console.error(
|
|
189
|
-
console.error(
|
|
199
|
+
console.error("The PHPUnit executable was not found.");
|
|
200
|
+
console.error("Check that:");
|
|
201
|
+
console.error(" - PHPUnit is installed (run: composer install)");
|
|
202
|
+
console.error(" - The phpunitPath in your config points to the correct location");
|
|
190
203
|
}
|
|
191
204
|
else if (exitCode === 255) {
|
|
192
|
-
console.error(
|
|
193
|
-
console.error(
|
|
205
|
+
console.error("PHPUnit encountered a fatal error.");
|
|
206
|
+
console.error("Check your phpunit.xml configuration and test bootstrap files.");
|
|
194
207
|
}
|
|
195
208
|
else {
|
|
196
209
|
console.error(`Unexpected error occurred (exit code: ${exitCode})`);
|
|
197
|
-
console.error(
|
|
210
|
+
console.error("Check your PHPUnit configuration and ensure all dependencies are installed.");
|
|
198
211
|
}
|
|
199
212
|
return EMPTY_REPORT;
|
|
200
213
|
}
|
|
@@ -202,31 +215,46 @@ async function runPhpunitTestsForEnvironment(config, environment, hostPhpunitCon
|
|
|
202
215
|
}
|
|
203
216
|
// Add error output to CTRF results if present and no tests ran
|
|
204
217
|
// This handles both bad exit codes (from above) and acceptable exit codes with errors
|
|
205
|
-
if (errorOutput &&
|
|
218
|
+
if (errorOutput && !hasReportedTests) {
|
|
206
219
|
// Check if this is a "no tests executed" scenario vs an actual error
|
|
207
220
|
// PHPUnit outputs "No tests executed!" when no tests match the filter
|
|
208
221
|
const noTestsPattern = /No tests executed!?/i;
|
|
209
|
-
|
|
222
|
+
// Also check if the output only contains informational messages (no actual errors)
|
|
223
|
+
// These messages appear at the start of test runs and aren't errors
|
|
224
|
+
const onlyInfoMessages = /^(Installing\.\.\.|Running as|Not running|PHPUnit \d+|Warning:|Suggestion:)/m.test(errorOutput) &&
|
|
225
|
+
!/(Fatal error|Parse error|Undefined|Call to|failed to open stream|syntax error)/i.test(errorOutput);
|
|
226
|
+
const isNoTestsExecuted = (noTestsPattern.test(errorOutput) && exitCode === 0) ||
|
|
227
|
+
(onlyInfoMessages && (exitCode === 0 || exitCode === 255));
|
|
210
228
|
if (false === isNoTestsExecuted) {
|
|
211
|
-
// Bootstrap failure -
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
229
|
+
// Bootstrap failure - send event to reporter so it appears in streaming output
|
|
230
|
+
reporter.onEvent({
|
|
231
|
+
type: "test:fail",
|
|
232
|
+
name: "PHPUnit Bootstrap",
|
|
233
|
+
suiteName: `${environment.name} - PHPUnit ${testMode} tests`,
|
|
215
234
|
duration: 0,
|
|
216
|
-
message:
|
|
235
|
+
message: "Bootstrap failed - see trace for details",
|
|
217
236
|
trace: errorOutput,
|
|
218
237
|
});
|
|
219
|
-
report.results.summary.tests = 1;
|
|
220
|
-
report.results.summary.failed = 1;
|
|
221
238
|
}
|
|
222
|
-
// If no tests executed (isNoTestsExecuted === true),
|
|
239
|
+
// If no tests executed (isNoTestsExecuted === true), continue without synthetic test
|
|
223
240
|
// The runner will handle this based on passWithNoTests option
|
|
224
241
|
}
|
|
225
|
-
|
|
242
|
+
// Close the outer suite that was started earlier
|
|
243
|
+
reporter.onEvent({
|
|
244
|
+
type: "suite:end",
|
|
245
|
+
name: `${environment.name} - PHPUnit ${testMode} tests`,
|
|
246
|
+
});
|
|
247
|
+
// Signal test run end to finalize timing
|
|
248
|
+
reporter.onEvent({
|
|
249
|
+
type: "run:end",
|
|
250
|
+
});
|
|
251
|
+
// Get the final report from the streaming reporter
|
|
252
|
+
const report = reporter.getReport();
|
|
253
|
+
if (stderrCapture.trim() && hasReportedTests) {
|
|
226
254
|
// Tests ran but there's stderr - add it to extra field
|
|
227
255
|
report.results.extra = {
|
|
228
256
|
...report.results.extra,
|
|
229
|
-
stderr: stderrCapture.split(
|
|
257
|
+
stderr: stderrCapture.split("\n"),
|
|
230
258
|
};
|
|
231
259
|
}
|
|
232
260
|
// Update tool name with environment
|
|
@@ -262,11 +290,13 @@ export async function runPhpunitTests(config, phpunitArgsOrOptions) {
|
|
|
262
290
|
? { phpunitArgs: phpunitArgsOrOptions }
|
|
263
291
|
: phpunitArgsOrOptions || {};
|
|
264
292
|
const { phpunitArgs } = options;
|
|
265
|
-
// Merge additional PHPUnit args if provided
|
|
293
|
+
// Merge additional PHPUnit args if provided (resolve them first)
|
|
266
294
|
let resolvedConfig = { ...config };
|
|
267
295
|
if (phpunitArgs && phpunitArgs.length > 0) {
|
|
296
|
+
// Resolve the additional args before merging
|
|
297
|
+
const resolvedAdditionalArgs = resolvePhpunitArgs(phpunitArgs, config.projectPath);
|
|
268
298
|
const configArgs = resolvedConfig.tests.phpunit?.phpunitArgs || [];
|
|
269
|
-
const mergedArgs = [...configArgs, ...
|
|
299
|
+
const mergedArgs = [...configArgs, ...resolvedAdditionalArgs];
|
|
270
300
|
resolvedConfig = {
|
|
271
301
|
...resolvedConfig,
|
|
272
302
|
tests: {
|
|
@@ -285,20 +315,20 @@ export async function runPhpunitTests(config, phpunitArgsOrOptions) {
|
|
|
285
315
|
return Promise.resolve(EMPTY_REPORT);
|
|
286
316
|
}
|
|
287
317
|
// Get PHPUnit config path from resolved config (already absolute after resolveConfig)
|
|
288
|
-
const
|
|
318
|
+
const phpunitConfigPath = resolvedConfig.tests.phpunit.configPath;
|
|
289
319
|
// Verify the config file exists
|
|
290
320
|
try {
|
|
291
|
-
await access(
|
|
321
|
+
await access(phpunitConfigPath.hostPath);
|
|
292
322
|
}
|
|
293
323
|
catch {
|
|
294
|
-
console.error(`PHPUnit config file not found: ${
|
|
324
|
+
console.error(`PHPUnit config file not found: ${phpunitConfigPath.hostPath}`);
|
|
295
325
|
return Promise.resolve(EMPTY_REPORT);
|
|
296
326
|
}
|
|
297
327
|
// Run tests for all enabled environments (skip those marked with skip: true)
|
|
298
328
|
const reports = [];
|
|
299
329
|
const enabledEnvironments = resolvedConfig.environments.filter((env) => !env.skip);
|
|
300
330
|
for (const environment of enabledEnvironments) {
|
|
301
|
-
const report = await runPhpunitTestsForEnvironment(resolvedConfig, environment
|
|
331
|
+
const report = await runPhpunitTestsForEnvironment(resolvedConfig, environment);
|
|
302
332
|
// Include report only if it has tests
|
|
303
333
|
if (report.results.summary.tests > 0) {
|
|
304
334
|
reports.push(report);
|
|
@@ -315,83 +345,4 @@ export async function runPhpunitTests(config, phpunitArgsOrOptions) {
|
|
|
315
345
|
// Import mergeReports for multiple environments
|
|
316
346
|
return mergeReports(reports);
|
|
317
347
|
}
|
|
318
|
-
/**
|
|
319
|
-
* PHPUnit flags that are boolean (do not take a value).
|
|
320
|
-
* If a flag is NOT in this list, we assume it takes a value,
|
|
321
|
-
* and therefore the next argument should NOT be resolved as a path.
|
|
322
|
-
*/
|
|
323
|
-
const booleanFlags = new Set([
|
|
324
|
-
'--teamcity', '--debug', '--verbose', '--testdox',
|
|
325
|
-
'--stderr', '--stop-on-error', '--stop-on-failure', '--stop-on-warning',
|
|
326
|
-
'--stop-on-defect', '--stop-on-risky', '--stop-on-skipped', '--stop-on-incomplete',
|
|
327
|
-
'--stop-on-deprecation', '--stop-on-notice', // Added in recent versions
|
|
328
|
-
'--fail-on-warning', '--fail-on-risky', '--fail-on-incomplete', '--fail-on-skipped',
|
|
329
|
-
'--fail-on-deprecation', '--fail-on-notice', // Added in recent versions
|
|
330
|
-
'--strict-coverage', '--strict-global-state', '--disallow-test-output',
|
|
331
|
-
'--disallow-resource-usage', '--enforce-time-limit',
|
|
332
|
-
'--process-isolation', '--no-globals-backup', '--static-backup',
|
|
333
|
-
'--no-configuration', '--no-coverage', '--no-logging', '--no-interaction',
|
|
334
|
-
'--no-extensions', '--no-output', '--dont-report-useless-tests',
|
|
335
|
-
'--no-progress', // Added
|
|
336
|
-
'--display-deprecations', '--display-errors', '--display-incomplete', // Added
|
|
337
|
-
'--display-notices', '--display-skipped', '--display-warnings', // Added
|
|
338
|
-
'--strict',
|
|
339
|
-
'--help', '--version',
|
|
340
|
-
'--list-groups', '--list-suites', '--list-tests', '--list-tests-xml',
|
|
341
|
-
// Colors often handled as boolean in simple usage
|
|
342
|
-
]);
|
|
343
|
-
/**
|
|
344
|
-
* Resolve PHPUnit arguments to map host paths to VFS paths
|
|
345
|
-
*
|
|
346
|
-
* @param args - Original arguments
|
|
347
|
-
* @param config - Resolved configuration
|
|
348
|
-
* @param playground - Playground client for checking VFS file existence
|
|
349
|
-
* @returns Resolved arguments
|
|
350
|
-
*/
|
|
351
|
-
export async function resolvePhpunitArgs(args, config, playground) {
|
|
352
|
-
const resolvedArgs = [];
|
|
353
|
-
for (let i = 0; i < args.length; i++) {
|
|
354
|
-
const arg = args[i];
|
|
355
|
-
// Don't resolve flags
|
|
356
|
-
if (arg.startsWith('-')) {
|
|
357
|
-
resolvedArgs.push(arg);
|
|
358
|
-
continue;
|
|
359
|
-
}
|
|
360
|
-
// Check if the previous argument was a flag that takes a value
|
|
361
|
-
const prevArg = args[i - 1];
|
|
362
|
-
if (prevArg?.startsWith('-') && !prevArg.includes('=')) {
|
|
363
|
-
// If the previous flag is NOT a known boolean flag, assume it takes a value
|
|
364
|
-
const flagName = prevArg.split('=')[0];
|
|
365
|
-
if (!booleanFlags.has(flagName)) {
|
|
366
|
-
resolvedArgs.push(arg); // This is the flag's value, not a path
|
|
367
|
-
continue;
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
// Resolve arguments that look like file/directory paths
|
|
371
|
-
const looksLikePath = arg.includes('/') ||
|
|
372
|
-
arg.endsWith('.php') ||
|
|
373
|
-
arg === 'tests' || arg === 'test';
|
|
374
|
-
if (looksLikePath) {
|
|
375
|
-
const absoluteHostPath = resolveAbsolute(arg, config.projectHostPath);
|
|
376
|
-
const vfsPath = hostToVfs(absoluteHostPath, config);
|
|
377
|
-
try {
|
|
378
|
-
// Validate that the file actually exists in the VFS
|
|
379
|
-
const exists = await playground.fileExists(vfsPath);
|
|
380
|
-
if (exists) {
|
|
381
|
-
resolvedArgs.push(vfsPath);
|
|
382
|
-
continue;
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
catch {
|
|
386
|
-
// Ignore validation errors and fallback to original arg (or should we?)
|
|
387
|
-
// If file check fails, it's safer to probably not resolve it if we are strict,
|
|
388
|
-
// but existing behavior was "looksLikePath -> resolve".
|
|
389
|
-
// If we add this check, we might break things that "look like path" but aren't files YET?
|
|
390
|
-
// But for running tests, the files must exist.
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
resolvedArgs.push(arg);
|
|
394
|
-
}
|
|
395
|
-
return resolvedArgs;
|
|
396
|
-
}
|
|
397
348
|
//# sourceMappingURL=runner.js.map
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|