@wp-tester/phpunit 0.1.0 → 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 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
@@ -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;AAM3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAMjD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAErE;AAsSD;;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,CAwEjB;AA6BD,UAAU,gBAAgB;IACxB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,sBAAsB,EAC9B,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB"}
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 { parseBootstrapPath, hostToVfs, resolveAbsolute, } from "@wp-tester/config";
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, hostPhpunitConfigPath) {
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.projectVFSPath) {
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
- // Map host PHPUnit config path to VFS
41
- const vfsPhpunitConfigPath = hostToVfs(hostPhpunitConfigPath, config);
42
- // Map host PHPUnit executable path to VFS
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
- // Parse bootstrap path from PHPUnit config and map to VFS
48
- const bootstrapPath = await parseBootstrapPath(hostPhpunitConfigPath);
49
- // Determine bootstrap file path in the playground filesystem
50
- let userBootstrap = `${config.projectVFSPath}/tests/bootstrap.php`; // Default fallback
51
- if (bootstrapPath) {
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
- // Use the helper to resolve arguments
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 === 'object'
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
- const errorOutput = stderrCapture.trim() || stdoutCapture.trim();
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 || report.results.tests.length > 0) {
183
- console.error('\nPHPUnit tests could not run.');
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('The PHPUnit executable was not found.');
187
- console.error('Check that:');
188
- console.error(' - PHPUnit is installed (run: composer install)');
189
- console.error(' - The phpunitPath in your config points to the correct location');
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('PHPUnit encountered a fatal error.');
193
- console.error('Check your phpunit.xml configuration and test bootstrap files.');
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('Check your PHPUnit configuration and ensure all dependencies are installed.');
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 && report.results.tests.length === 0) {
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
- const isNoTestsExecuted = noTestsPattern.test(errorOutput) && exitCode === 0;
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 - create a synthetic test with the error
212
- report.results.tests.push({
213
- name: 'PHPUnit Bootstrap',
214
- status: 'failed',
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: 'Bootstrap failed - see trace for details',
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), return empty report
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
- else if (stderrCapture.trim()) {
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('\n'),
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, ...phpunitArgs];
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 hostPhpunitConfigPath = resolvedConfig.tests.phpunit.configPath;
318
+ const phpunitConfigPath = resolvedConfig.tests.phpunit.configPath;
289
319
  // Verify the config file exists
290
320
  try {
291
- await access(hostPhpunitConfigPath);
321
+ await access(phpunitConfigPath.hostPath);
292
322
  }
293
323
  catch {
294
- console.error(`PHPUnit config file not found: ${hostPhpunitConfigPath}`);
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, hostPhpunitConfigPath);
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
@@ -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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"}