Prevent name param from overwriting file if both are passed

This commit is contained in:
Rick Guyer 2013-10-09 23:18:27 -05:00
parent ce1939c4d6
commit a091c630d7
2 changed files with 37 additions and 1 deletions

View file

@ -67,7 +67,7 @@ class SchemaShell extends AppShell {
$name = $this->params['name'] = $splitName;
}
if ($name) {
if ($name && empty($this->params['file'])) {
$this->params['file'] = Inflector::underscore($name);
}

View file

@ -585,6 +585,42 @@ class SchemaShellTest extends CakeTestCase {
CakePlugin::unload();
}
/**
* test that passing name and file creates the passed filename with the
* passed classname
*
* @return void
*/
public function testNameAndFile() {
App::build(array(
'Plugin' => array(CAKE . 'Test' . DS . 'test_app' . DS . 'Plugin' . DS)
));
CakePlugin::load('TestPlugin');
$this->Shell->params = array(
'plugin' => 'TestPlugin',
'connection' => 'test',
'name' => 'custom_name',
'file' => 'other_name',
'force' => false,
'overwrite' => true,
);
$this->Shell->startup();
$file = $this->Shell->Schema->path . DS . 'other_name.php';
if (file_exists($file)) {
unlink($file);
}
$this->Shell->generate();
$this->assertFileExists($file);
$contents = file_get_contents($file);
$this->assertRegExp('/class CustomNameSchema/', $contents);
if (file_exists($file)) {
unlink($file);
}
CakePlugin::unload();
}
/**
* test that using Plugin.name with write.
*