Changeset 31002
- Timestamp:
- 12/30/2014 07:23:49 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/tests/phpunit/tests/admin/includesPlugin.php
r30557 r31002 62 62 $test = is_plugin_active( 'hello.php' ); 63 63 $this->assertTrue( $test ); 64 65 deactivate_plugins( 'hello.php' ); 64 66 } 65 67 … … 80 82 $test = is_plugin_inactive( 'hello.php' ); 81 83 $this->assertFalse( $test ); 84 85 deactivate_plugins( 'hello.php' ); 86 } 87 88 /** 89 * @covers ::get_plugin_files 90 */ 91 public function test_get_plugin_files_single() { 92 $name = 'hello.php'; 93 $this->assertEquals( array( $name ), get_plugin_files( $name ) ); 94 } 95 96 /** 97 * @covers ::get_mu_plugins 98 */ 99 public function test_get_mu_plugins_when_mu_plugins_exists_but_is_empty() { 100 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 101 $exists = true; 102 $this->_back_up_mu_plugins(); 103 } else { 104 $exists = false; 105 mkdir( WPMU_PLUGIN_DIR ); 106 } 107 108 $this->assertEquals( array(), get_mu_plugins() ); 109 110 // Clean up. 111 if ( $exists ) { 112 $this->_restore_mu_plugins(); 113 } else { 114 rmdir( WPMU_PLUGIN_DIR ); 115 } 116 } 117 118 /** 119 * @covers ::get_mu_plugins 120 */ 121 public function test_get_mu_plugins_when_mu_plugins_directory_does_not_exist() { 122 $exists = false; 123 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 124 $exists = true; 125 $this->_back_up_mu_plugins(); 126 rmdir( WPMU_PLUGIN_DIR ); 127 } 128 129 $this->assertEquals( array(), get_mu_plugins() ); 130 131 // Clean up. 132 if ( $exists ) { 133 mkdir( WPMU_PLUGIN_DIR ); 134 $this->_restore_mu_plugins(); 135 } 136 } 137 138 /** 139 * @covers ::get_mu_plugins 140 */ 141 public function test_get_mu_plugins_should_ignore_index_php_containing_silence_is_golden() { 142 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 143 $exists = true; 144 $this->_back_up_mu_plugins(); 145 } else { 146 $exists = false; 147 mkdir( WPMU_PLUGIN_DIR ); 148 } 149 150 $this->_create_plugin( '<?php\n//Silence is golden.', 'index.php', WPMU_PLUGIN_DIR ); 151 $this->assertEquals( array(), get_mu_plugins() ); 152 153 // Clean up. 154 unlink( WPMU_PLUGIN_DIR . '/index.php' ); 155 if ( $exists ) { 156 $this->_restore_mu_plugins(); 157 } else { 158 rmdir( WPMU_PLUGIN_DIR ); 159 } 160 } 161 162 /** 163 * @covers ::get_mu_plugins 164 */ 165 public function test_get_mu_plugins_should_not_ignore_index_php_containing_something_other_than_silence_is_golden() { 166 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 167 $exists = true; 168 $this->_back_up_mu_plugins(); 169 } else { 170 $exists = false; 171 mkdir( WPMU_PLUGIN_DIR ); 172 } 173 174 $this->_create_plugin( '<?php\n//Silence is not golden.', 'index.php', WPMU_PLUGIN_DIR ); 175 $found = get_mu_plugins(); 176 $this->assertEquals( array( 'index.php' ), array_keys( $found ) ); 177 178 // Clean up. 179 unlink( WPMU_PLUGIN_DIR . '/index.php' ); 180 if ( $exists ) { 181 $this->_restore_mu_plugins(); 182 } else { 183 rmdir( WPMU_PLUGIN_DIR ); 184 } 185 } 186 187 /** 188 * @covers ::get_mu_plugins 189 */ 190 public function test_get_mu_plugins_should_ignore_files_without_php_extensions() { 191 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 192 $exists = true; 193 $this->_back_up_mu_plugins(); 194 } else { 195 $exists = false; 196 mkdir( WPMU_PLUGIN_DIR ); 197 } 198 199 $this->_create_plugin( '<?php\n//Test', 'foo.php', WPMU_PLUGIN_DIR ); 200 $this->_create_plugin( '<?php\n//Test 2', 'bar.txt', WPMU_PLUGIN_DIR ); 201 $found = get_mu_plugins(); 202 $this->assertEquals( array( 'foo.php' ), array_keys( $found ) ); 203 204 // Clean up. 205 unlink( WPMU_PLUGIN_DIR . '/foo.php' ); 206 unlink( WPMU_PLUGIN_DIR . '/bar.txt' ); 207 if ( $exists ) { 208 $this->_restore_mu_plugins(); 209 } else { 210 rmdir( WPMU_PLUGIN_DIR ); 211 } 212 } 213 214 /** 215 * @covers ::_sort_uname_callback 216 */ 217 public function test__sort_uname_callback() { 218 $this->assertLessThan( 0, _sort_uname_callback( array( 'Name' => 'a' ), array( 'Name' => 'b' ) ) ); 219 $this->assertGreaterThan( 0, _sort_uname_callback( array( 'Name' => 'c' ), array( 'Name' => 'b' ) ) ); 220 $this->assertEquals( 0, _sort_uname_callback( array( 'Name' => 'a' ), array( 'Name' => 'a' ) ) ); 221 } 222 223 /** 224 * @covers ::get_dropins 225 */ 226 public function test_get_dropins_empty() { 227 $this->assertEquals( array(), get_dropins() ); 228 } 229 230 /** 231 * @covers ::get_dropins 232 */ 233 public function test_get_dropins_not_empty() { 234 $p1 = $this->_create_plugin( "<?php\n//Test", 'advanced-cache.php', WP_CONTENT_DIR ); 235 $p2 = $this->_create_plugin( "<?php\n//Test", 'not-a-dropin.php', WP_CONTENT_DIR ); 236 237 $dropins = get_dropins(); 238 $this->assertEquals( array( 'advanced-cache.php' ), array_keys( $dropins ) ); 239 240 unlink( $p1[1] ); 241 unlink( $p2[1] ); 242 } 243 244 /** 245 * @covers ::is_network_only_plugin 246 */ 247 public function test_is_network_only_plugin_hello() { 248 $this->assertFalse( is_network_only_plugin( 'hello.php' ) ); 249 } 250 251 /** 252 * @covers ::is_network_only_plugin 253 */ 254 public function test_is_network_only_plugin() { 255 $p = $this->_create_plugin( "<?php\n/*\nPlugin Name: test\nNetwork: true" ); 256 257 $this->assertTrue( is_network_only_plugin( $p[0] ) ); 258 259 unlink( $p[1] ); 260 } 261 262 /** 263 * @covers ::activate_plugins 264 */ 265 public function test_activate_plugins_single_no_array() { 266 $name = 'hello.php'; 267 activate_plugins( $name ); 268 $this->assertTrue( is_plugin_active( $name ) ); 269 deactivate_plugins( $name ); 270 } 271 272 /** 273 * @covers ::activate_plugins 274 */ 275 public function test_activate_plugins_single_array() { 276 $name = 'hello.php'; 277 activate_plugins( array( $name ) ); 278 $this->assertTrue( is_plugin_active( $name ) ); 279 deactivate_plugins( $name ); 280 } 281 282 /** 283 * @covers ::validate_active_plugins 284 */ 285 public function test_validate_active_plugins_remove_invalid() { 286 $plugin = $this->_create_plugin(); 287 288 activate_plugin( $plugin[ 0 ] ); 289 unlink( $plugin[ 1 ] ); 290 291 $result = validate_active_plugins(); 292 $this->assertTrue( isset( $result[ $plugin[ 0 ] ] ) ); 293 } 294 295 /** 296 * @covers ::is_uninstallable_plugin 297 */ 298 public function test_is_uninstallable_plugin() { 299 $this->assertFalse( is_uninstallable_plugin( 'hello' ) ); 300 } 301 302 /** 303 * @covers ::is_uninstallable_plugin 304 */ 305 public function test_is_uninstallable_plugin_true() { 306 $plugin = $this->_create_plugin(); 307 308 $uninstallable_plugins = (array) get_option( 'uninstall_plugins' ); 309 $uninstallable_plugins[ $plugin[0] ] = true; 310 update_option( 'uninstall_plugins', $uninstallable_plugins ); 311 312 $this->assertTrue( is_uninstallable_plugin( $plugin[0] ) ); 313 314 unset( $uninstallable_plugins[ $plugin[0] ] ); 315 update_option( 'uninstall_plugins', $uninstallable_plugins ); 316 317 unlink( $plugin[1] ); 318 } 319 320 /** 321 * Generate a plugin. 322 * 323 * This creates a single-file plugin. 324 * 325 * @since 4.2.0 326 * 327 * @access private 328 * 329 * @param string $data Optional. Data for the plugin file. Default is a dummy plugin header. 330 * @param string $filename Optional. Filename for the plugin file. Default is a random string. 331 * @param string $dir_path Optional. Path for directory where the plugin should live. 332 * @return array Two-membered array of filename and full plugin path. 333 */ 334 private function _create_plugin( $data = "<?php\n/*\nPlugin Name: Test\n*/", $filename = false, $dir_path = false ) { 335 if ( false === $filename ) { 336 $filename = rand_str() . '.php'; 337 } 338 339 if ( false === $dir_path ) { 340 $dir_path = WP_PLUGIN_DIR; 341 } 342 343 $full_name = $dir_path . '/' . wp_unique_filename( $dir_path, $filename ); 344 345 $file = fopen( $full_name, 'w' ); 346 fwrite( $file, $data ); 347 fclose( $file ); 348 349 return array( $filename, $full_name ); 350 } 351 352 /** 353 * Move existing mu-plugins to wp-content/mu-plugin/backup. 354 * 355 * @since 4.2.0 356 * 357 * @access private 358 */ 359 private function _back_up_mu_plugins() { 360 if ( is_dir( WPMU_PLUGIN_DIR ) ) { 361 $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup'; 362 if ( ! is_dir( $mu_bu_dir ) ) { 363 mkdir( $mu_bu_dir ); 364 } 365 366 $files_to_move = array(); 367 if ( $mu_plugins = opendir( WPMU_PLUGIN_DIR ) ) { 368 while ( false !== $plugin = readdir( $mu_plugins ) ) { 369 if ( 0 !== strpos( $plugin, '.' ) ) { 370 $files_to_move[] = $plugin; 371 } 372 } 373 } 374 375 @closedir( $mu_plugins ); 376 377 foreach ( $files_to_move as $file_to_move ) { 378 $f = rename( WPMU_PLUGIN_DIR . '/' . $file_to_move, $mu_bu_dir . '/' . $file_to_move ); 379 } 380 } 381 } 382 383 /** 384 * Restore backed-up mu-plugins. 385 * 386 * @since 4.2.0 387 * 388 * @access private 389 */ 390 private function _restore_mu_plugins() { 391 $mu_bu_dir = WP_CONTENT_DIR . '/mu-plugin-backup'; 392 $files_to_move = array(); 393 if ( is_dir( $mu_bu_dir ) && $mu_plugins = opendir( $mu_bu_dir ) ) { 394 while ( false !== $plugin = readdir( $mu_plugins ) ) { 395 if ( 0 !== strpos( $plugin, '.' ) ) { 396 $files_to_move[] = $plugin; 397 } 398 } 399 } 400 401 @closedir( $mu_plugins ); 402 403 foreach ( $files_to_move as $file_to_move ) { 404 rename( $mu_bu_dir . '/' . $file_to_move, WPMU_PLUGIN_DIR . '/' . $file_to_move ); 405 } 406 407 if ( is_dir( $mu_bu_dir ) ) { 408 rmdir( $mu_bu_dir ); 409 } 82 410 } 83 411 }
Note: See TracChangeset
for help on using the changeset viewer.