File Editor: Add support for more than one sub-directory level.

The theme and plugin editors now list all files in the selected theme or plugin, recursing through subdirectories as necessary.

Props WraithKenny, schlessera, chsxf, MikeHansenMe, Daedalon, valendesigns, westonruter, pento.
Fixes #6531.



git-svn-id: https://develop.svn.wordpress.org/trunk@41806 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Gary Pendergast
2017-10-10 05:33:57 +00:00
parent 5deddd9c62
commit 33a0ff50b7
6 changed files with 149 additions and 50 deletions
@@ -93,6 +93,31 @@ class Tests_Admin_includesPlugin extends WP_UnitTestCase {
$this->assertEquals( array( $name ), get_plugin_files( $name ) );
}
/**
* @covers ::get_plugin_files
*/
public function test_get_plugin_files_folder() {
$plugin_dir = WP_PLUGIN_DIR . '/list_files_test_plugin';
@mkdir( $plugin_dir );
$plugin = $this->_create_plugin(null, 'list_files_test_plugin.php', $plugin_dir );
$sub_dir = trailingslashit( dirname( $plugin[1] ) ) . 'subdir';
@mkdir( $sub_dir );
@file_put_contents( $sub_dir . '/subfile.php', '<?php // Silence.' );
$plugin_files = get_plugin_files( plugin_basename( $plugin[1] ) );
$expected = array(
'list_files_test_plugin/list_files_test_plugin.php',
'list_files_test_plugin/subdir/subfile.php',
);
$this->assertEquals( $expected, $plugin_files );
unlink( $sub_dir . '/subfile.php' );
unlink( $plugin[1] );
rmdir( $sub_dir );
rmdir( $plugin_dir );
}
/**
* @covers ::get_mu_plugins
*/
@@ -0,0 +1,20 @@
<?php
/**
* Test list_files().
*
* @group functions.php
*/
class Tests_Functions_ListFiles extends WP_UnitTestCase {
public function test_list_files_returns_a_list_of_files() {
$admin_files = list_files( ABSPATH . 'wp-admin/' );
$this->assertInternalType( 'array', $admin_files );
$this->assertNotEmpty( $admin_files );
$this->assertContains( ABSPATH . 'wp-admin/index.php', $admin_files );
}
public function test_list_files_can_exclude_files() {
$admin_files = list_files( ABSPATH . 'wp-admin/', 100, array( 'index.php' ) );
$this->assertNotContains( ABSPATH . 'wp-admin/index.php', $admin_files );
}
}