Permalink
Browse files

Merge branch '1.3-console' into 1.3

Conflicts:
	cake/tests/cases/console/libs/schema.test.php
  • Loading branch information...
2 parents 89bf344 + 91503f8 commit 42017e95c69eecc92b66e44d751eff31afc16789 @markstory markstory committed Sep 20, 2009
Showing with 56 additions and 15 deletions.
  1. +21 −10 cake/console/libs/schema.php
  2. +5 −3 cake/libs/model/cake_schema.php
  3. +30 −2 cake/tests/cases/console/libs/schema.test.php
@@ -58,18 +58,12 @@ function initialize() {
* @access public
*/
function startup() {
- $name = null;
+ $name = $file = $path = $connection = null;
if (!empty($this->params['name'])) {
$name = $this->params['name'];
$this->params['file'] = Inflector::underscore($name);
}
-
- $path = null;
- if (!empty($this->params['path'])) {
- $path = $this->params['path'];
- }
-
- $file = null;
+ $path = $this->_getPath();
if (empty($this->params['file'])) {
$this->params['file'] = 'schema.php';
}
@@ -78,7 +72,6 @@ function startup() {
}
$file = $this->params['file'];
- $connection = null;
if (!empty($this->params['connection'])) {
$connection = $this->params['connection'];
}
@@ -87,6 +80,23 @@ function startup() {
}
/**
+ * Get the correct path for the params. Uses path, and plugin to find the correct path.
+ * path param takes precedence over any plugins specified.
+ *
+ * @return mixed string to correct path or null.
+ **/
+ function _getPath() {
+ if (!empty($this->params['path'])) {
+ return $this->params['path'];
+ }
+ if (!empty($this->params['plugin'])) {
+ $pluginPath = $this->_pluginPath($this->params['plugin']);
+ return $pluginPath . 'config' . DS . 'schema' . DS;
+ }
+ return null;
+ }
+
+/**
* Override main
*
* @access public
@@ -107,7 +117,8 @@ function view() {
$this->out($File->read());
$this->_stop();
} else {
- $this->err(__('Schema could not be found', true));
+ $file = $this->Schema->path . DS . $this->params['file'];
+ $this->err(sprintf(__('Schema file (%s) could not be found.', true), $file));
$this->_stop();
}
}
@@ -90,7 +90,11 @@ function __construct($options = array()) {
}
if (empty($options['path'])) {
- $this->path = CONFIGS . 'schema';
+ if (is_dir(CONFIGS . 'schema')) {
+ $this->path = CONFIGS . 'schema';
+ } else {
+ $this->path = CONFIGS . 'sql';
+ }
}
$options = array_merge(get_object_vars($this), $options);
@@ -239,8 +243,6 @@ function read($options = array()) {
foreach ($Object->hasAndBelongsToMany as $Assoc => $assocData) {
if (isset($assocData['with'])) {
$class = $assocData['with'];
- } elseif ($assocData['_with']) {
- $class = $assocData['_with'];
}
if (is_object($Object->$class)) {
$table = $db->fullTableName($Object->$class, false);
@@ -148,7 +148,7 @@ function testStartup() {
$this->Shell->startup();
$this->assertTrue(isset($this->Shell->Schema));
$this->assertTrue(is_a($this->Shell->Schema, 'CakeSchema'));
- $this->assertEqual(strtolower($this->Shell->Schema->name), APP_DIR);
+ $this->assertEqual(strtolower($this->Shell->Schema->name), strtolower(APP_DIR));
$this->assertEqual($this->Shell->Schema->file, 'schema.php');
unset($this->Shell->Schema);
@@ -168,7 +168,7 @@ function testStartup() {
'path' => '/test/path'
);
$this->Shell->startup();
- $this->assertEqual(strtolower($this->Shell->Schema->name), APP_DIR);
+ $this->assertEqual(strtolower($this->Shell->Schema->name), strtolower(APP_DIR));
$this->assertEqual($this->Shell->Schema->file, 'other_file.php');
$this->assertEqual($this->Shell->Schema->connection, 'test_suite');
$this->assertEqual($this->Shell->Schema->path, '/test/path');
@@ -354,5 +354,33 @@ function testRunUpdateWithTable() {
$this->_fixtures['core.article']->create($this->db);
}
+/**
+ * test that the plugin param creates the correct path in the schema object.
+ *
+ * @return void
+ **/
+ function testPluginParam() {
+ App::build(array(
+ 'plugins' => array(TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS)
+ ));
+ $this->Shell->params = array(
+ 'plugin' => 'TestPlugin',
+ 'connection' => 'test_suite'
+ );
+ $this->Shell->startup();
+ $expected = TEST_CAKE_CORE_INCLUDE_PATH . 'tests' . DS . 'test_app' . DS . 'plugins' . DS . 'test_plugin' . DS . 'config' . DS . 'schema' . DS;
+ $this->assertEqual($this->Shell->Schema->path, $expected);
+
+ unset($this->Shell->Schema);
+ $this->Shell->params = array(
+ 'plugin' => 'TestPlugin',
+ 'connection' => 'test_suite',
+ 'path' => '/some/path'
+ );
+ $this->Shell->startup();
+ $expected = '/some/path';
+ $this->assertEqual($this->Shell->Schema->path, $expected);
+ }
+
}
?>

0 comments on commit 42017e9

Please sign in to comment.