Fixing issues with ProjectTask and absolute paths.

Fixes #1720
This commit is contained in:
mark_story 2011-05-22 08:49:51 -04:00
parent 3dcee7136d
commit 2b20eb8999
2 changed files with 24 additions and 12 deletions

View file

@ -49,23 +49,21 @@ class ProjectTask extends Shell {
$project = $this->args[0];
}
if ($project && isset($_SERVER['PWD'])) {
$project = $_SERVER['PWD'] . DS . $project;
}
while (!$project) {
$prompt = __d('cake_console', "What is the path to the project you want to bake?");
$project = $this->in($prompt, null, APP_PATH . 'myapp');
}
if ($project) {
$response = false;
while ($response == false && is_dir($project) === true && file_exists($project . 'Config' . 'core.php')) {
$prompt = __d('cake_console', '<warning>A project already exists in this location:</warning> %s Overwrite?', $project);
$response = $this->in($prompt, array('y','n'), 'n');
if (strtolower($response) === 'n') {
$response = $project = false;
}
if ($project && !Folder::isAbsolute($project) && isset($_SERVER['PWD'])) {
$project = $_SERVER['PWD'] . DS . $project;
}
$response = false;
while ($response == false && is_dir($project) === true && file_exists($project . 'Config' . 'core.php')) {
$prompt = __d('cake_console', '<warning>A project already exists in this location:</warning> %s Overwrite?', $project);
$response = $this->in($prompt, array('y','n'), 'n');
if (strtolower($response) === 'n') {
$response = $project = false;
}
}

View file

@ -109,6 +109,20 @@ class ProjectTaskTest extends CakeTestCase {
}
}
/**
* test bake with an absolute path.
*
* @return void
*/
public function testExecuteWithAbsolutePath() {
$this->Task->args[0] = TMP . 'tests' . DS . 'bake_test';
$this->Task->params['skel'] = CAKE . 'Console' . DS . 'templates' . DS . 'skel';
$this->Task->expects($this->at(0))->method('in')->will($this->returnValue('y'));
$this->Task->execute();
$this->assertTrue(is_dir($this->Task->args[0]), 'No project dir');
}
/**
* test bake() method with -empty flag, directory creation and empty files.
*