Browse Source

Fix plugin path filtering when directories do not exist.

When paths do not exist we should correctly remove them from the output
paths.

Fixes #2748
mark_story 12 years ago
parent
commit
4d57d3ce5b

+ 3 - 1
lib/Cake/Console/Command/Task/PluginTask.php

@@ -191,9 +191,11 @@ class PluginTask extends AppShell {
 		$valid = false;
 		foreach ($pathOptions as $i => $path) {
 			if (!is_dir($path)) {
-				array_splice($pathOptions, $i, 1);
+				unset($pathOptions[$i]);
 			}
 		}
+		$pathOptions = array_values($pathOptions);
+
 		$max = count($pathOptions);
 		while (!$valid) {
 			foreach ($pathOptions as $i => $option) {

+ 3 - 1
lib/Cake/Test/Case/Console/Command/Task/PluginTaskTest.php

@@ -185,7 +185,9 @@ class PluginTaskTest extends CakeTestCase {
 	public function testFindPathNonExistant() {
 		$paths = App::path('plugins');
 		$last = count($paths);
-		$paths[] = '/fake/path';
+
+		array_unshift($paths, '/fake/path');
+		$paths[] = '/fake/path2';
 
 		$this->Task = $this->getMock('PluginTask',
 			array('in', 'out', 'err', 'createFile', '_stop'),