[wp-trac] [WordPress Trac] #40910: Limit writable directories required by WordPress unit test suite

WordPress Trac noreply at wordpress.org
Fri Jun 2 16:21:07 UTC 2017

#40910: Limit writable directories required by WordPress unit test suite
 Reporter:  danielbachhuber   |      Owner:
     Type:  defect (bug)      |     Status:  new
 Priority:  normal            |  Milestone:  Awaiting Review
Component:  Build/Test Tools  |    Version:
 Severity:  normal            |   Keywords:
  Focuses:                    |
 Some environments only permit writing to specific directories. But, the
 WordPress test suite currently assumes it can write to a variety of

 Based on searches for `file_put_contents()`, `copy()`, and `symlink()`,
 here are the directories I found:

 * `tests/phpunit/data`
         * `.trac-ticket-cache.*` is created to store a cache of Trac
 ticket numbers.
 * `tests/phpunit/build/logs/`
         * `junit.xml` is created with the results of the test run.
 * `tests/qunit/fixtures`
         * `wp-api-generated.js` is generated by PHPUnit  for use in QUnit
 * `/tmp/`
         * Variety of files are copied out of `phpunit/data` into `/tmp/`
 for test-specific transformation.
 * `wp-content/themes`
         * `theme-file-parent` and `theme-file-child` are symlinked from
 the PHPUnit data directory into the theme directory
 * `wp-content/uploads`
         * Attachments are copied

 Generally, in write-restricted environments, the test suite fails when it
 tries to write to directories it doesn't have access to. More directories
 could be found by running the test suite against a write-restricted

 To better ensure WordPress compatibility with a variety of platforms, we
 should ensure these file write requirements are compatible with limited
 write directories. Here are some strategies we can use:

 * Properly use `wp_tempnam()` instead of hardcoding `/tmp/` paths.
 * Permit some write directories to be configurable with a constant or
 environment variable.
 * Failing gracefully, in certain cases, when a file can't be written.

 cc @mikeschroder @octalmage

Ticket URL: <https://core.trac.wordpress.org/ticket/40910>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list