WordPress.org

Make WordPress Core

Changeset 29120


Ignore:
Timestamp:
07/12/14 07:08:15 (3 years ago)
Author:
wonderboymusic
Message:

Wouldn't it be incredible if you could run Unit Tests without all of your uploads being indiscriminately blown away and your upload folder permissions being destroyed?

The Future Is Now.

Fixes #28847.

Location:
trunk/tests/phpunit
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/includes/testcase.php

    r28943 r29120  
    1212    protected $caught_doing_it_wrong = array(); 
    1313 
     14    protected static $ignore_files; 
     15 
    1416    /** 
    1517     * @var WP_UnitTest_Factory 
     
    1921    function setUp() { 
    2022        set_time_limit(0); 
     23 
     24        if ( ! self::$ignore_files ) { 
     25            self::$ignore_files = $this->scan_user_uploads(); 
     26        } 
    2127 
    2228        global $wpdb; 
     
    326332        $this->assertTrue( $passed, $message ); 
    327333    } 
     334 
     335    function unlink( $file ) { 
     336        $exists = is_file( $file ); 
     337        if ( $exists && ! in_array( $file, self::$ignore_files ) ) { 
     338            //error_log( $file ); 
     339            unlink( $file ); 
     340        } elseif ( ! $exists ) { 
     341            $this->fail( "Trying to delete a file that doesn't exist: $file" ); 
     342        } 
     343    } 
     344 
     345    function rmdir( $path ) { 
     346        $files = $this->files_in_dir( $path ); 
     347        foreach ( $files as $file ) { 
     348            if ( ! in_array( $file, self::$ignore_files ) ) { 
     349                $this->unlink( $file ); 
     350            } 
     351        } 
     352    } 
     353 
     354    function remove_added_uploads() { 
     355        // Remove all uploads. 
     356        $uploads = wp_upload_dir(); 
     357        $this->rmdir( $uploads['basedir'] ); 
     358    } 
     359 
     360    function files_in_dir( $dir ) { 
     361        $files = array(); 
     362 
     363        $iterator = new RecursiveDirectoryIterator( $dir ); 
     364        $objects = new RecursiveIteratorIterator( $iterator ); 
     365        foreach ( $objects as $name => $object ) { 
     366            if ( is_file( $name ) ) { 
     367                $files[] = $name; 
     368            } 
     369        } 
     370 
     371        return $files; 
     372    } 
     373 
     374    function scan_user_uploads() { 
     375        static $files = array(); 
     376        if ( ! empty( $files ) ) { 
     377            return $files; 
     378        } 
     379 
     380        $uploads = wp_upload_dir(); 
     381        $files = $this->files_in_dir( $uploads['basedir'] ); 
     382        return $files; 
     383    } 
    328384} 
  • trunk/tests/phpunit/includes/utils.php

    r28797 r29120  
    314314} 
    315315 
    316 function _rmdir( $path ) { 
    317     if ( in_array(basename( $path ), array( '.', '..' ) ) ) { 
    318         return; 
    319     } elseif ( is_file( $path ) ) { 
    320         unlink( $path ); 
    321     } elseif ( is_dir( $path ) ) { 
    322         foreach ( scandir( $path ) as $file ) 
    323             _rmdir( $path . '/' . $file ); 
    324         rmdir( $path ); 
    325     } 
    326 } 
    327  
    328316/** 
    329317 * Removes the post type and its taxonomy associations. 
  • trunk/tests/phpunit/tests/ajax/MediaEdit.php

    r26088 r29120  
    3333    public function tearDown() { 
    3434        // Cleanup 
    35         foreach ($this->_ids as $id){ 
    36             wp_delete_attachment($id, true); 
     35        foreach ( $this->_ids as $id ) { 
     36            wp_delete_attachment( $id, true ); 
    3737        } 
    38  
    39         $uploads = wp_upload_dir(); 
    40         foreach ( scandir( $uploads['basedir'] ) as $file ) 
    41             _rmdir( $uploads['basedir'] . '/' . $file ); 
    4238 
    4339        parent::tearDown(); 
  • trunk/tests/phpunit/tests/functions/deprecated.php

    r25409 r29120  
    149149        wp_save_image_file( $file, $img, 'image/jpeg', 1 ); 
    150150        imagedestroy( $img ); 
    151         @unlink($file); 
     151        unlink( $file ); 
    152152 
    153153        // Check if the arg was deprecated 
     
    170170        wp_save_image_file( $file, $img, 'image/jpeg', 1 ); 
    171171        unset( $img ); 
    172         @unlink($file); 
     172        unlink( $file ); 
    173173 
    174174        // Check if the arg was deprecated 
  • trunk/tests/phpunit/tests/http/base.php

    r25224 r29120  
    285285        $this->assertTrue( ! is_wp_error( $res ), print_r( $res, true ) ); 
    286286    } 
    287      
    288      
     287 
     288 
    289289} 
  • trunk/tests/phpunit/tests/image/base.php

    r27794 r29120  
    1010     */ 
    1111    public function setUp() { 
     12        parent::setUp(); 
     13 
    1214        if ( ! call_user_func( array( $this->editor_engine, 'test' ) ) ) { 
    1315            $this->markTestSkipped( sprintf('The image editor engine %s is not supported on this system', $this->editor_engine) ); 
     
    2123     */ 
    2224    public function tearDown() { 
     25        parent::tearDown(); 
     26 
    2327        remove_filter( 'wp_image_editors', array( $this, 'setEngine' ), 10, 2 ); 
    2428    } 
     
    3438    /** 
    3539     * Helper assertion for testing alpha on images 
    36      *  
     40     * 
    3741     * @param  string $image_path 
    3842     * @param  array $point      array(x,y) 
  • trunk/tests/phpunit/tests/image/editor_gd.php

    r27794 r29120  
    77 * @group wp-image-editor-gd 
    88 */ 
     9require_once( dirname( __FILE__ ) . '/base.php' ); 
    910 
    1011class Tests_Image_Editor_GD extends WP_Image_UnitTestCase { 
     
    1920    } 
    2021 
    21     public function shutDown() { 
     22    public function tearDown() { 
    2223        $folder = DIR_TESTDATA . '/images/waffles-*.jpg'; 
    2324 
     
    2627        } 
    2728 
    28         parent::shutDown(); 
     29        $this->remove_added_uploads(); 
     30 
     31        parent::tearDown(); 
    2932    } 
    3033 
     
    468471 
    469472        $this->assertImageAlphaAtPoint( $save_to_file, array( 0,0 ), 127 ); 
     473 
     474        unlink( $save_to_file ); 
    470475    } 
    471476 
     
    486491 
    487492        $this->assertImageAlphaAtPoint( $save_to_file, array( 0,0 ), 127 ); 
     493 
     494        unlink( $save_to_file ); 
    488495    } 
    489496} 
  • trunk/tests/phpunit/tests/image/editor_imagick.php

    r27794 r29120  
    77 * @group wp-image-editor-imagick 
    88 */ 
     9require_once( dirname( __FILE__ ) . '/base.php' ); 
    910 
    1011class Tests_Image_Editor_Imagick extends WP_Image_UnitTestCase { 
     
    1920    } 
    2021 
    21     public function shutDown() { 
     22    public function tearDown() { 
    2223        $folder = DIR_TESTDATA . '/images/waffles-*.jpg'; 
    2324 
     
    2627        } 
    2728 
    28         parent::shutDown(); 
     29        $this->remove_added_uploads(); 
     30 
     31        parent::tearDown(); 
    2932    } 
    3033 
     
    464467        $editor->resize( 5, 5 ); 
    465468        $save_to_file = tempnam( get_temp_dir(), '' ) . '.png'; 
    466          
     469 
    467470        $editor->save( $save_to_file ); 
    468471 
    469472        $this->assertImageAlphaAtPoint( $save_to_file, array( 0,0 ), 127 ); 
     473 
     474        unlink( $save_to_file ); 
    470475    } 
    471476 
     
    486491 
    487492        $this->assertImageAlphaAtPoint( $save_to_file, array( 0,0 ), 127 ); 
     493 
     494        unlink( $save_to_file ); 
    488495    } 
    489496} 
  • trunk/tests/phpunit/tests/image/functions.php

    r28603 r29120  
    8989        $files = array( 
    9090            // 'test-image-cmyk.jpg', Allowed in r9727 
    91             // 'test-image.bmp', Allowed in r28589  
     91            // 'test-image.bmp', Allowed in r28589 
    9292            // 'test-image-grayscale.jpg', Allowed in r9727 
    9393            'test-image.pct', 
     
    145145 
    146146                // Clean up 
    147                 @unlink( $file ); 
    148                 @unlink( $ret['path'] ); 
     147                unlink( $file ); 
     148                unlink( $ret['path'] ); 
    149149            } 
    150150 
     
    186186 
    187187            // Clean up 
    188             @unlink( $file ); 
    189             @unlink( $ret['path'] ); 
     188            unlink( $file ); 
     189            unlink( $ret['path'] ); 
    190190            unset( $img ); 
    191191        } 
     
    232232                $this->assertNotInstanceOf( 'WP_Error', $ret ); 
    233233                $this->assertEquals( $mime_type, $this->get_mime_type( $ret['path'] ) ); 
    234                 @unlink( $file ); 
    235                 @unlink( $ret['path'] ); 
     234                unlink( $ret['path'] ); 
    236235            } 
    237236 
  • trunk/tests/phpunit/tests/image/intermediate_size.php

    r25507 r29120  
    11<?php 
    2  
    32/** 
    43 * @group image 
     
    76 */ 
    87class Tests_Image_Intermediate_Size extends WP_UnitTestCase { 
     8    function tearDown() { 
     9        $this->remove_added_uploads(); 
     10        parent::tearDown(); 
     11    } 
     12 
    913    function test_make_intermediate_size_no_size() { 
    1014        $image = image_make_intermediate_size( DIR_TESTDATA . '/images/a2-small.jpg', 0, 0, false ); 
  • trunk/tests/phpunit/tests/image/resize.php

    r25002 r29120  
    55 * @group media 
    66 * @group upload 
     7 * @group resize 
    78 */ 
     9require_once( dirname( __FILE__ ) . '/base.php' ); 
     10 
    811abstract class WP_Tests_Image_Resize_UnitTestCase extends WP_Image_UnitTestCase { 
    912 
     
    109112        $this->assertEquals( IMAGETYPE_JPEG, $type ); 
    110113 
    111         unlink($image); 
     114        unlink( $image ); 
    112115    } 
    113116 
  • trunk/tests/phpunit/tests/image/resize_gd.php

    r25002 r29120  
    55 * @group media 
    66 * @group upload 
     7 * @group resize 
    78 */ 
     9require_once( dirname( __FILE__ ) . '/resize.php' ); 
     10 
    811class Test_Image_Resize_GD extends WP_Tests_Image_Resize_UnitTestCase { 
    912 
     
    1316     */ 
    1417    public $editor_engine = 'WP_Image_Editor_GD'; 
     18 
     19    public function setUp() { 
     20        require_once( ABSPATH . WPINC . '/class-wp-image-editor.php' ); 
     21        require_once( ABSPATH . WPINC . '/class-wp-image-editor-gd.php' ); 
     22 
     23        parent::setUp(); 
     24    } 
    1525} 
  • trunk/tests/phpunit/tests/image/resize_imagick.php

    r25002 r29120  
    55 * @group media 
    66 * @group upload 
     7 * @group resize 
    78 */ 
     9require_once( dirname( __FILE__ ) . '/resize.php' ); 
     10 
    811class Test_Image_Resize_Imagick extends WP_Tests_Image_Resize_UnitTestCase { 
    912 
     
    1316     */ 
    1417    public $editor_engine = 'WP_Image_Editor_Imagick'; 
     18 
     19    public function setUp() { 
     20        require_once( ABSPATH . WPINC . '/class-wp-image-editor.php' ); 
     21        require_once( ABSPATH . WPINC . '/class-wp-image-editor-imagick.php' ); 
     22 
     23        parent::setUp(); 
     24    } 
    1525} 
  • trunk/tests/phpunit/tests/post/attachments.php

    r28788 r29120  
    1010    function tearDown() { 
    1111        // Remove all uploads. 
    12         $uploads = wp_upload_dir(); 
    13         foreach ( scandir( $uploads['basedir'] ) as $file ) 
    14             _rmdir( $uploads['basedir'] . '/' . $file ); 
    15  
     12        $this->remove_added_uploads(); 
    1613        parent::tearDown(); 
    1714    } 
  • trunk/tests/phpunit/tests/upload.php

    r26552 r29120  
    2323 
    2424    function tearDown() { 
     25        $this->remove_added_uploads(); 
     26 
    2527        parent::tearDown(); 
    26  
    27         // Remove year/month folders created by wp_upload_dir(). 
    28         $uploads = wp_upload_dir(); 
    29         foreach ( scandir( $uploads['basedir'] ) as $file ) 
    30             _rmdir( $uploads['basedir'] . '/' . $file ); 
    31         _rmdir( ABSPATH . 'foo/' ); 
    3228    } 
    3329 
Note: See TracChangeset for help on using the changeset viewer.