diff --git a/tests/phpunit/includes/testcase.php b/tests/phpunit/includes/testcase.php index 44f668e9d1..2a2abf381e 100644 --- a/tests/phpunit/includes/testcase.php +++ b/tests/phpunit/includes/testcase.php @@ -483,6 +483,28 @@ class WP_UnitTestCase extends PHPUnit_Framework_TestCase { return $files; } + function delete_folders( $path ) { + $this->matched_dirs = array(); + if ( ! is_dir( $path ) ) { + return; + } + + $this->scandir( $path ); + foreach ( array_reverse( $this->matched_dirs ) as $dir ) { + rmdir( $dir ); + } + rmdir( $path ); + } + + function scandir( $dir ) { + foreach ( scandir( $dir ) as $path ) { + if ( 0 !== strpos( $path, '.' ) && is_dir( $dir . '/' . $path ) ) { + $this->matched_dirs[] = $dir . '/' . $path; + $this->scandir( $dir . '/' . $path ); + } + } + } + /** * Helper to Convert a microtime string into a float */ diff --git a/tests/phpunit/tests/upload.php b/tests/phpunit/tests/upload.php index 685976fa78..399d059e2e 100644 --- a/tests/phpunit/tests/upload.php +++ b/tests/phpunit/tests/upload.php @@ -1,6 +1,4 @@ knownUTBug( 35 ); + } + $this->_reset_options(); parent::setUp(); - return; + } + + function _reset_options() { // system defaults update_option( 'upload_path', 'wp-content/uploads' ); update_option( 'upload_url_path', '' ); update_option( 'uploads_use_yearmonth_folders', 1 ); } - function tearDown() { - $this->remove_added_uploads(); - - parent::tearDown(); - } - function test_upload_dir_default() { // wp_upload_dir() with default parameters $info = wp_upload_dir(); @@ -40,6 +36,8 @@ class Tests_Upload extends WP_UnitTestCase { // wp_upload_dir() with a relative upload path that is not 'wp-content/uploads' update_option( 'upload_path', 'foo/bar' ); $info = wp_upload_dir(); + $this->delete_folders( ABSPATH . 'foo' ); + $this->assertEquals( get_option( 'siteurl' ) . '/foo/bar/' . gmstrftime('%Y/%m'), $info['url'] ); $this->assertEquals( ABSPATH . 'foo/bar/' . gmstrftime('%Y/%m'), $info['path'] ); $this->assertEquals( gmstrftime('/%Y/%m'), $info['subdir'] ); @@ -56,6 +54,8 @@ class Tests_Upload extends WP_UnitTestCase { // doesn't make sense to use an absolute file path without setting the url path update_option( 'upload_url_path', '/baz' ); $info = wp_upload_dir(); + $this->delete_folders( $path ); + $this->assertEquals( '/baz/' . gmstrftime('%Y/%m'), $info['url'] ); $this->assertEquals( "$path/" . gmstrftime('%Y/%m'), $info['path'] ); $this->assertEquals( gmstrftime('/%Y/%m'), $info['subdir'] );