Don't modify app/Config/bootstrap when running tests.

This commit is contained in:
mark_story 2012-06-12 22:10:47 -04:00
parent f625742a12
commit 5413143178
2 changed files with 38 additions and 7 deletions

View file

@ -34,6 +34,13 @@ class PluginTask extends AppShell {
*/ */
public $path = null; public $path = null;
/**
* Path to the bootstrap file. Changed in tests.
*
* @var string
*/
public $bootstrap = null;
/** /**
* initialize * initialize
* *
@ -41,6 +48,7 @@ class PluginTask extends AppShell {
*/ */
public function initialize() { public function initialize() {
$this->path = current(App::path('plugins')); $this->path = current(App::path('plugins'));
$this->bootstrap = APP . 'Config' . DS . 'bootstrap.php';
} }
/** /**
@ -148,13 +156,7 @@ class PluginTask extends AppShell {
$out .= "}\n\n"; $out .= "}\n\n";
$this->createFile($this->path . $plugin . DS . 'Model' . DS . $modelFileName, $out); $this->createFile($this->path . $plugin . DS . 'Model' . DS . $modelFileName, $out);
$bootstrap = new File(APP . 'Config' . DS . 'bootstrap.php', false); $this->_modifyBootstrap($plugin);
$contents = $bootstrap->read();
if (!preg_match("@\n\s*CakePlugin::loadAll@", $contents)) {
$bootstrap->append("\nCakePlugin::load('$plugin', array('bootstrap' => false, 'routes' => false));\n");
$this->out('');
$this->out(__d('cake_dev', '%s modified', APP . 'Config' . DS . 'bootstrap.php'));
}
$this->hr(); $this->hr();
$this->out(__d('cake_console', '<success>Created:</success> %s in %s', $plugin, $this->path . $plugin), 2); $this->out(__d('cake_console', '<success>Created:</success> %s in %s', $plugin, $this->path . $plugin), 2);
@ -163,6 +165,21 @@ class PluginTask extends AppShell {
return true; return true;
} }
/**
* Update the app's bootstrap.php file.
*
* @return void
*/
protected function _modifyBootstrap($plugin) {
$bootstrap = new File($this->bootstrap, false);
$contents = $bootstrap->read();
if (!preg_match("@\n\s*CakePlugin::loadAll@", $contents)) {
$bootstrap->append("\nCakePlugin::load('$plugin', array('bootstrap' => false, 'routes' => false));\n");
$this->out('');
$this->out(__d('cake_dev', '%s modified', APP . 'Config' . DS . 'bootstrap.php'));
}
}
/** /**
* find and change $this->path to the user selection * find and change $this->path to the user selection
* *

View file

@ -50,6 +50,8 @@ class PluginTaskTest extends CakeTestCase {
array($this->out, $this->out, $this->in) array($this->out, $this->out, $this->in)
); );
$this->Task->path = TMP . 'tests' . DS; $this->Task->path = TMP . 'tests' . DS;
$this->Task->bootstrap = TMP . 'tests' . DS . 'bootstrap.php';
touch($this->Task->bootstrap);
$this->_paths = $paths = App::path('plugins'); $this->_paths = $paths = App::path('plugins');
foreach ($paths as $i => $p) { foreach ($paths as $i => $p) {
@ -61,6 +63,18 @@ class PluginTaskTest extends CakeTestCase {
App::build(array('plugins' => $paths)); App::build(array('plugins' => $paths));
} }
/**
* tearDown()
*
* @return void
*/
public function tearDown() {
if (file_exists($this->Task->bootstrap)) {
unlink($this->Task->bootstrap);
}
parent::tearDown();
}
/** /**
* test bake() * test bake()
* *