diff --git a/README.md b/README.md
index 7945ada8..9812dfe8 100644
--- a/README.md
+++ b/README.md
@@ -21,13 +21,25 @@ What it doesn't do (yet)
* Virtualised testing.
* Multiple PHP-version tests.
* Install PEAR or PECL extensions.
-* Deployments - We strongly recommend using [Deployer](http://phpdeployment.org)
+* Deployments
Documentation
=============
[PHP Censor documentation](docs/README.md)
+Tests
+=====
+
+```bash
+cd /path/to/php-censor
+./vendor/bin/phpunit
+```
+
+For Phar plugin tests set 'phar.readonly' setting to Off (0) in `php.ini` config. Otherwise tests will be skipped.
+
+For database B8Framework tests create empty 'b8_test' MySQL database on 'localhost' with user/password: `root/root`.
+
License
=======
diff --git a/app/config.example.yml b/app/config.example.yml
index 6bd101ca..fba80e9d 100644
--- a/app/config.example.yml
+++ b/app/config.example.yml
@@ -3,7 +3,8 @@ b8:
servers:
read: localhost
write: localhost
- name: php-censor-db
+ port: 3306
+ name: php-censor-db
username: php-censor-user
password: php-censor-password
php-censor:
diff --git a/phpunit.xml b/phpunit.xml
index 166bea97..44fba5e7 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -12,15 +12,16 @@
bootstrap="./tests/bootstrap.php"
>
-
-
- ./tests/PHPCensor/Controller
+
+ ./tests/B8Framework
+
./tests/PHPCensor/Helper
+
+ ./tests/PHPCensor/Controller
+
./tests/PHPCensor/Logging
@@ -30,14 +31,14 @@
./tests/PHPCensor/Plugin
-
./tests/PHPCensor/Service
-
+
+ ./tests/PHPCensor/Command
+
+
+ ./tests/PHPCensor/ProcessControl
+
diff --git a/src/B8Framework/Database.php b/src/B8Framework/Database.php
index 43cb2d88..07f5cd9a 100755
--- a/src/B8Framework/Database.php
+++ b/src/B8Framework/Database.php
@@ -10,52 +10,16 @@ class Database extends \PDO
protected static $details = [];
protected static $lastUsed = ['read' => null, 'write' => null];
- /**
- * @deprecated
- */
- public static function setReadServers($read)
- {
- $config = Config::getInstance();
-
- $settings = $config->get('b8.database', []);
- $settings['servers']['read'] = $read;
- $config->set('b8.database', $settings);
- }
-
- /**
- * @deprecated
- */
- public static function setWriteServers($write)
- {
- $config = Config::getInstance();
-
- $settings = $config->get('b8.database', []);
- $settings['servers']['write'] = $write;
- $config->set('b8.database', $settings);
- }
-
- /**
- * @deprecated
- */
- public static function setDetails($database, $username, $password)
- {
- $config = Config::getInstance();
- $settings = $config->get('b8.database', []);
- $settings['name'] = $database;
- $settings['username'] = $username;
- $settings['password'] = $password;
- $config->set('b8.database', $settings);
- }
-
protected static function init()
{
- $config = Config::getInstance();
+ $config = Config::getInstance();
$settings = $config->get('b8.database', []);
- self::$servers['read'] = $settings['servers']['read'];
+
+ self::$servers['read'] = $settings['servers']['read'];
self::$servers['write'] = $settings['servers']['write'];
- self::$details['db'] = $settings['name'];
- self::$details['user'] = $settings['username'];
- self::$details['pass'] = $settings['password'];
+ self::$details['db'] = $settings['name'];
+ self::$details['user'] = $settings['username'];
+ self::$details['pass'] = $settings['password'];
self::$initialised = true;
}
@@ -63,6 +27,7 @@ class Database extends \PDO
* @param string $type
*
* @return \b8\Database
+ *
* @throws \Exception
*/
public static function getConnection($type = 'read')
diff --git a/src/B8Framework/Database/Generator.php b/src/B8Framework/Database/Generator.php
deleted file mode 100755
index 940f8331..00000000
--- a/src/B8Framework/Database/Generator.php
+++ /dev/null
@@ -1,380 +0,0 @@
-_db = $db;
- $this->_ns = $namespace;
- $this->_path = $path;
- $this->_map = new Map($this->_db);
- $this->_tables = $this->_map->generate();
- }
-
- public function generate()
- {
- error_reporting(E_ERROR & E_WARNING);
- $di = new \DirectoryIterator($this->_path);
-
- $this->_todo = [
- 'drop_fk' => [],
- 'drop_index' => [],
- 'create' => [],
- 'alter' => [],
- 'add_index' => [],
- 'add_fk' => [],
- ];
-
- foreach ($di as $file) {
- if ($file->isDot()) {
- continue;
- }
- $fileName = explode('.', $file->getBasename());
- if ($fileName[count($fileName) - 1] != 'php') {
- continue;
- }
-
- $modelName = '\\' . $this->_ns . '\\Model\\Base\\' . str_replace('.php', '', $file->getFilename());
-
- require_once($this->_path . $file->getFilename());
- $model = new $modelName();
- $columns = $model->columns;
- $indexes = $model->indexes;
- $foreignKeys = $model->foreignKeys;
- $tableName = $model->getTableName();
-
- if (!array_key_exists($tableName, $this->_tables)) {
- $this->_createTable($tableName, $columns, $indexes, $foreignKeys);
- continue;
- } else {
- $table = $this->_tables[$tableName];
- $this->_updateColumns($tableName, $table, $columns);
- $this->_updateRelationships($tableName, $table, $foreignKeys);
- $this->_updateIndexes($tableName, $table, $indexes);
- }
- }
-
- print 'DROP FK: ' . count($this->_todo['drop_fk']) . PHP_EOL;
- print 'DROP INDEX: ' . count($this->_todo['drop_index']) . PHP_EOL;
- print 'CREATE TABLE: ' . count($this->_todo['create']) . PHP_EOL;
- print 'ALTER TABLE: ' . count($this->_todo['alter']) . PHP_EOL;
- print 'ADD INDEX: ' . count($this->_todo['add_index']) . PHP_EOL;
- print 'ADD FK: ' . count($this->_todo['add_fk']) . PHP_EOL;
-
-
- $order = array_keys($this->_todo);
-
- while ($group = array_shift($order)) {
- if (!isset($this->_todo[$group]) || !is_array($this->_todo[$group]) || !count($this->_todo[$group])) {
- continue;
- }
-
- foreach ($this->_todo[$group] as $query) {
- try {
- //print $query . PHP_EOL;
- $this->_db->query($query);
- } catch (\Exception $ex) {
- print 'FAILED TO EXECUTE: ' . $query . PHP_EOL;
- print $ex->getMessage() . PHP_EOL . PHP_EOL;
- }
- }
- }
- }
-
- protected function _createTable($tbl, $cols, $idxs, $fks)
- {
- $defs = [];
- $pks = [];
- foreach ($cols as $colName => $def) {
- $add = '`' . $colName . '` ' . $def['type'];
-
- switch ($def['type']) {
- case 'text':
- case 'longtext':
- case 'mediumtext':
- case 'date':
- case 'datetime':
- case 'float':
- $add .= '';
- break;
-
- default:
- $add .= !empty($def['length']) ? '(' . $def['length'] . ')' : '';
- break;
- }
-
- if (empty($def['nullable']) || !$def['nullable']) {
- $add .= ' NOT NULL ';
- }
-
- if (!empty($def['default'])) {
- $add .= ' DEFAULT ' . (is_numeric($def['default']) ? $def['default'] : '\'' . $def['default'] . '\'');
- }
-
- if (!empty($def['auto_increment']) && $def['auto_increment']) {
- $add .= ' AUTO_INCREMENT ';
- }
-
- if (!empty($def['primary_key']) && $def['primary_key']) {
- $pks[] = '`' . $colName . '`';
- }
-
- $defs[] = $add;
- }
-
- if (count($pks)) {
- $defs[] = 'PRIMARY KEY (' . implode(', ', $pks) . ')';
- }
-
- $stmt = 'CREATE TABLE `' . $tbl . '` (' . PHP_EOL;
- $stmt .= implode(", \n", $defs);
-
- $stmt .= PHP_EOL . ') ENGINE=InnoDB DEFAULT CHARSET=utf8';
- $stmt .= PHP_EOL;
-
- $this->_todo['create'][] = $stmt;
-
- foreach ($idxs as $name => $idx) {
- $this->_addIndex($tbl, $name, $idx);
- }
-
- foreach ($fks as $name => $fk) {
- $this->_addFk($tbl, $name, $fk);
- }
- }
-
- protected function _updateColumns($tableName, $table, $columns)
- {
- $currentColumns = $table['columns'];
-
- while ($column = array_shift($currentColumns)) {
- if (!array_key_exists($column['name'], $columns)) {
- $this->_todo['alter'][$tableName . '.' . $column['name']] = 'ALTER TABLE `' . $tableName . '` DROP COLUMN `' . $column['name'] . '`';
- } else {
- $model = $columns[$column['name']];
-
- $model['nullable'] = !isset($model['nullable']) ? false : $model['nullable'];
- $model['default'] = !isset($model['default']) ? false : $model['default'];
- $model['auto_increment'] = !isset($model['auto_increment']) ? false : $model['auto_increment'];
- $model['primary_key'] = !isset($model['primary_key']) ? false : $model['primary_key'];
- $column['is_primary_key'] = !isset($column['is_primary_key']) ? false : $column['is_primary_key'];
-
- if (
- $column['type'] != $model['type'] || (
- $column['length'] != $model['length'] &&
- !in_array($model['type'], ['text', 'longtext', 'mediumtext', 'date', 'datetime', 'float'])
- ) ||
- $column['null'] != $model['nullable'] ||
- $column['default'] != $model['default'] ||
- $column['auto'] != $model['auto_increment']
- ) {
- $this->_updateColumn($tableName, $column['name'], $column['name'], $model);
- }
- }
-
- unset($columns[$column['name']]);
- }
-
- if (count($columns)) {
- foreach ($columns as $name => $model) {
- // Check if we're renaming a column:
- if (isset($model['rename'])) {
- unset($this->_todo['alter'][$tableName . '.' . $model['rename']]);
- $this->_updateColumn($tableName, $model['rename'], $name, $model);
- continue;
- }
-
- // New column
- $add = '`' . $name . '` ' . $model['type'];;
- switch ($model['type']) {
- case 'text':
- case 'longtext':
- case 'mediumtext':
- case 'date':
- case 'datetime':
- case 'float':
- $add .= '';
- break;
-
- default:
- $add .= !empty($model['length']) ? '(' . $model['length'] . ')' : '';
- break;
- }
-
- if (empty($model['nullable']) || !$model['nullable']) {
- $add .= ' NOT NULL ';
- }
-
- if (!empty($model['default'])) {
- $add .= ' DEFAULT ' . (is_numeric($model['default']) ? $model['default'] : '\'' . $model['default'] . '\'');
- }
-
- if (!empty($model['auto_increment']) && $model['auto_increment']) {
- $add .= ' AUTO_INCREMENT ';
- }
-
- if (!empty($model['primary_key']) && $model['primary_key'] && !isset($table['indexes']['PRIMARY'])) {
- $add .= ' PRIMARY KEY ';
- }
-
- $this->_todo['alter'][] = 'ALTER TABLE `' . $tableName . '` ADD COLUMN ' . $add;
- }
- }
- }
-
- protected function _updateColumn($tableName, $prevName, $newName, $model)
- {
- $add = '`' . $newName . '` ' . $model['type'];;
- switch ($model['type']) {
- case 'text':
- case 'longtext':
- case 'mediumtext':
- case 'date':
- case 'datetime':
- case 'float':
- $add .= '';
- break;
-
- default:
- $add .= !empty($model['length']) ? '(' . $model['length'] . ')' : '';
- break;
- }
-
- if (empty($model['nullable']) || !$model['nullable']) {
- $add .= ' NOT NULL ';
- }
-
- if (!empty($model['default'])) {
- $add .= ' DEFAULT ' . (is_numeric($model['default']) ? $model['default'] : '\'' . $model['default'] . '\'');
- }
-
- if (!empty($model['auto_increment']) && $model['auto_increment']) {
- $add .= ' AUTO_INCREMENT ';
- }
-
- $this->_todo['alter'][] = 'ALTER TABLE `' . $tableName . '` CHANGE COLUMN `' . $prevName . '` ' . $add;
- }
-
- protected function _updateRelationships($tableName, $table, $foreignKeys)
- {
- $current = $table['relationships']['toOne'];
-
- while ($foreignKey = array_shift($current)) {
- if (!array_key_exists($foreignKey['fk_name'], $foreignKeys)) {
- $this->_dropFk($tableName, $foreignKey['fk_name']);
- } elseif ($foreignKey['from_col'] != $foreignKeys[$foreignKey['fk_name']]['local_col'] ||
- $foreignKey['table'] != $foreignKeys[$foreignKey['fk_name']]['table'] ||
- $foreignKey['col'] != $foreignKeys[$foreignKey['fk_name']]['col'] ||
- $foreignKey['fk_update'] != $foreignKeys[$foreignKey['fk_name']]['update'] ||
- $foreignKey['fk_delete'] != $foreignKeys[$foreignKey['fk_name']]['delete']
- ) {
- $this->_alterFk($tableName, $foreignKey['fk_name'], $foreignKeys[$foreignKey['fk_name']]);
- }
-
- unset($foreignKeys[$foreignKey['fk_name']]);
- }
-
- if (count($foreignKeys)) {
- foreach ($foreignKeys as $name => $foreignKey) {
- // New column
- $this->_addFk($tableName, $name, $foreignKey);
- }
- }
- }
-
- protected function _updateIndexes($tableName, $table, $indexes)
- {
- $current = $table['indexes'];
-
- while ($index = array_shift($current)) {
- if (!array_key_exists($index['name'], $indexes)) {
- $this->_dropIndex($tableName, $index['name']);
- } elseif ($index['unique'] != $indexes[$index['name']]['unique'] ||
- $index['columns'] != $indexes[$index['name']]['columns']
- ) {
- $this->_alterIndex($tableName, $index['name'], $index);
- }
-
- unset($indexes[$index['name']]);
- }
-
- if (count($indexes)) {
- foreach ($indexes as $name => $index) {
- if ($name == 'PRIMARY') {
- continue;
- }
-
- // New index
- $this->_addIndex($tableName, $name, $index);
- }
- }
- }
-
- protected function _addIndex($table, $name, $idx, $stage = 'add_index')
- {
- if ($name == 'PRIMARY') {
- return;
- }
-
- $q = 'CREATE ' . (isset($idx['unique']) && $idx['unique'] ? 'UNIQUE' : '') . ' INDEX `' . $name . '` ON `' . $table . '` (' . $idx['columns'] . ')';
-
- $this->_todo[$stage][] = $q;
- }
-
- protected function _alterIndex($table, $name, $idx, $stage = 'index')
- {
- $this->_dropIndex($table, $name, $stage);
- $this->_addIndex($table, $name, $idx, $stage);
- }
-
- protected function _dropIndex($table, $idxName, $stage = 'drop_index')
- {
- if ($idxName == 'PRIMARY') {
- return;
- }
-
- $q = 'DROP INDEX `' . $idxName . '` ON `' . $table . '`';
- $this->_todo[$stage][] = $q;
- }
-
- protected function _addFk($table, $name, $fk)
- {
- $q = 'ALTER TABLE `' . $table . '` ADD CONSTRAINT `' . $name . '` FOREIGN KEY (`' . $fk['local_col'] . '`) REFERENCES `' . $fk['table'] . '` (`' . $fk['col'] . '`)';
-
- if (!empty($fk['delete'])) {
- $q .= ' ON DELETE ' . $fk['delete'] . ' ';
- }
-
- if (!empty($fk['update'])) {
- $q .= ' ON UPDATE ' . $fk['update'] . ' ';
- }
-
- $this->_todo['add_fk'][] = $q;
- }
-
- protected function _alterFk($table, $name, $fk)
- {
- $this->_dropFk($table, $name);
- $this->_addFk($table, $name, $fk);
- }
-
- protected function _dropFk($table, $name)
- {
- $q = 'ALTER TABLE `' . $table . '` DROP FOREIGN KEY `' . $name . '`';
- $this->_todo['drop_fk'][] = $q;
- }
-}
diff --git a/src/B8Framework/Database/Map.php b/src/B8Framework/Database/Map.php
deleted file mode 100755
index a9ef5374..00000000
--- a/src/B8Framework/Database/Map.php
+++ /dev/null
@@ -1,258 +0,0 @@
-_db = $db;
- }
-
- public function generate()
- {
- $tables = $this->_getTables();
-
-
- foreach ($tables as $table) {
- $this->_tables[$table] = [];
- $this->_tables[$table]['php_name'] = $this->_generatePhpName($table);
- }
-
- $this->_getRelationships();
- $this->_getColumns();
- $this->_getIndexes();
-
- return $this->_tables;
- }
-
- protected function _getTables()
- {
- $details = $this->_db->getDetails();
-
- $rtn = [];
-
- foreach ($this->_db->query('SHOW TABLES')->fetchAll(\PDO::FETCH_ASSOC) as $tbl) {
- $rtn[] = $tbl['Tables_in_' . $details['db']];
- }
-
- return $rtn;
- }
-
- protected function _getRelationships()
- {
- foreach ($this->_tables as $table => $t) {
- $res = $this->_db->query('SHOW CREATE TABLE `' . $table . '`')->fetchAll(\PDO::FETCH_ASSOC);
-
- foreach ($res as $r) {
- $str = $r['Create Table'];
-
- $matches = [];
- if (preg_match_all('/CONSTRAINT\s+\`([a-zA-Z0-9_]+)\`\s+FOREIGN\s+KEY\s+\(\`([a-zA-Z0-9_]+)\`\)\s+REFERENCES\s+\`([a-zA-Z0-9_]+)\`\s+\(\`([a-zA-Z0-9_]+)\`\)(\s+ON (DELETE|UPDATE) (SET NULL|NO ACTION|CASCADE|RESTRICT))?(\s+ON (DELETE|UPDATE) (SET NULL|NO ACTION|CASCADE|RESTRICT))?/',
- $str, $matches)) {
- for ($i = 0; $i < count($matches[0]); $i++) {
- $fromTable = $table;
- $fromCol = $matches[2][$i];
- $toTable = $matches[3][$i];
- $toCol = $matches[4][$i];
- $fkName = $matches[1][$i];
- $fk = [];
-
- if (isset($matches[6][$i])) {
- $fk[$matches[6][$i]] = $matches[7][$i];
- }
-
- if (isset($matches[9][$i])) {
- $fk[$matches[9][$i]] = $matches[10][$i];
- }
-
- $fk['UPDATE'] = empty($fk['UPDATE']) ? '' : $fk['UPDATE'];
- $fk['DELETE'] = empty($fk['DELETE']) ? '' : $fk['DELETE'];
-
- if (isset($this->_tables[$fromTable]) && isset($this->_tables[$toTable])) {
- $phpName = $this->_generateFkName($fromCol, $this->_tables[$fromTable]['php_name']);
-
- $this->_tables[$fromTable]['relationships']['toOne'][$fromCol] = [
- 'fk_name' => $fkName,
- 'fk_delete' => $fk['DELETE'],
- 'fk_update' => $fk['UPDATE'],
- 'table_php_name' => $this->_tables[$toTable]['php_name'],
- 'from_col_php' => $this->_generatePhpName($fromCol),
- 'from_col' => $fromCol,
- 'php_name' => $phpName,
- 'table' => $toTable,
- 'col' => $toCol,
- 'col_php' => $this->_generatePhpName($toCol)
- ];
-
- $phpName = $this->_generateFkName(
- $fromCol,
- $this->_tables[$fromTable]['php_name']
- ) . $this->_tables[$fromTable]['php_name'] . 's';
- $this->_tables[$toTable]['relationships']['toMany'][] = [
- 'from_col_php' => $this->_generatePhpName($fromCol),
- 'php_name' => $phpName,
- 'thisCol' => $toCol,
- 'table' => $fromTable,
- 'table_php' => $this->_generatePhpName($fromTable),
- 'fromCol' => $fromCol,
- 'col_php' => $this->_generatePhpName($toCol)
- ];
- }
- }
- }
- }
- }
- }
-
- protected function _getColumns()
- {
- foreach ($this->_tables as $key => &$val) {
- $cols = [];
- foreach ($this->_db->query('DESCRIBE `' . $key . '`')->fetchAll(\PDO::FETCH_ASSOC) as $column) {
- $col = $this->_processColumn([], $column, $val);
- $cols[$col['name']] = $col;
- }
-
- $val['columns'] = $cols;
- }
-
- }
-
- protected function _getIndexes()
- {
- foreach ($this->_tables as $key => &$val) {
- $indexes = [];
-
- foreach ($this->_db->query('SHOW INDEXES FROM `' . $key . '`')->fetchAll(\PDO::FETCH_ASSOC) as $idx) {
- if (!isset($indexes[$idx['Key_name']])) {
- $indexes[$idx['Key_name']] = [];
- $indexes[$idx['Key_name']]['name'] = $idx['Key_name'];
- $indexes[$idx['Key_name']]['unique'] = ($idx['Non_unique'] == '0') ? true : false;
- $indexes[$idx['Key_name']]['columns'] = [];
- }
-
- $indexes[$idx['Key_name']]['columns'][$idx['Seq_in_index']] = $idx['Column_name'];
- }
-
- $indexes = array_map(function ($idx) {
- ksort($idx['columns']);
- $idx['columns'] = implode(', ', $idx['columns']);
-
- return $idx;
- }, $indexes);
-
- $val['indexes'] = $indexes;
- }
- }
-
- protected function _processColumn($col, $column, &$table)
- {
- $col['name'] = $column['Field'];
- $col['php_name'] = $this->_generatePhpName($col['name']);
- $matches = [];
-
- preg_match('/^([a-zA-Z]+)(\()?([0-9\,]+)?(\))?/', $column['Type'], $matches);
-
- $col['type'] = strtolower($matches[1]);
-
- if (isset($matches[3])) {
- $col['length'] = $matches[3];
- }
-
- $col['null'] = strtolower($column['Null']) == 'yes' ? true : false;
- $col['auto'] = strtolower($column['Extra']) == 'auto_increment' ? true : false;
-
- if ($column['Default'] == 'NULL' || is_null($column['Default'])) {
- $col['default_is_null'] = true;
- } else {
- $col['default_is_null'] = false;
- $col['default'] = $column['Default'];
- }
-
- if (!empty($column['Key'])) {
- if ($column['Key'] == 'PRI') {
- $col['is_primary_key'] = true;
- $table['primary_key'] = ['column' => $col['name'], 'php_name' => $col['php_name']];
- }
-
- if ($column['Key'] == 'PRI' || $column['Key'] == 'UNI') {
- $col['unique_indexed'] = true;
- } else {
- $col['many_indexed'] = true;
- }
- }
-
- $col['validate'] = [];
-
- if (!$col['null']) {
- $col['validate_null'] = true;
- }
-
- switch ($col['type']) {
- case 'tinyint':
- case 'smallint':
- case 'int':
- case 'mediumint':
- case 'bigint':
- $col['php_type'] = 'int';
- $col['to_php'] = '_sqlToInt';
- $col['validate_int'] = true;
- break;
-
- case 'float':
- case 'decimal':
- $col['php_type'] = 'float';
- $col['to_php'] = '_sqlToFloat';
- $col['validate_float'] = true;
- break;
-
- case 'datetime':
- case 'date':
- $col['php_type'] = 'DateTime';
- $col['to_php'] = '_sqlToDateTime';
- $col['to_sql'] = '_dateTimeToSql';
- $col['validate_date'] = true;
- break;
-
- case 'varchar':
- case 'text':
- default:
- $col['php_type'] = 'string';
- $col['validate_string'] = true;
- break;
- }
-
- return $col;
- }
-
- protected function _generatePhpName($sqlName)
- {
- $rtn = $sqlName;
- $rtn = str_replace('_', ' ', $rtn);
- $rtn = ucwords($rtn);
- $rtn = str_replace(' ', '', $rtn);
-
- return $rtn;
- }
-
- protected function _generateFkName($sqlName, $tablePhpName)
- {
- $fkMethod = substr($sqlName, 0, strripos($sqlName, '_'));
-
- if (empty($fkMethod)) {
- $fkMethod = (substr(strtolower($sqlName), -2) == 'id') ? substr($sqlName, 0, -2) : $tablePhpName;
- }
-
- $fkMethod = str_replace('_', ' ', $fkMethod);
- $fkMethod = ucwords($fkMethod);
- $fkMethod = str_replace(' ', '', $fkMethod);
-
- return $fkMethod;
- }
-}
diff --git a/src/B8Framework/Form/Element.php b/src/B8Framework/Form/Element.php
index ab1157db..519dee19 100755
--- a/src/B8Framework/Form/Element.php
+++ b/src/B8Framework/Form/Element.php
@@ -97,11 +97,11 @@ abstract class Element
$view = new View($viewFile, B8_PATH . 'Form/View/');
}
- $view->name = $this->getName();
- $view->id = $this->getId();
- $view->label = $this->getLabel();
- $view->css = $this->getClass();
- $view->ccss = $this->getContainerClass();
+ $view->name = $this->getName();
+ $view->id = $this->getId();
+ $view->label = $this->getLabel();
+ $view->css = $this->getClass();
+ $view->ccss = $this->getContainerClass();
$view->parent = $this->_parent;
$this->_onPreRender($view);
diff --git a/src/B8Framework/View.php b/src/B8Framework/View.php
index e4f4ab06..4b2b538d 100755
--- a/src/B8Framework/View.php
+++ b/src/B8Framework/View.php
@@ -2,7 +2,7 @@
namespace b8;
-use b8\Exception\HttpException;
+class ViewRuntimeException extends \RuntimeException {}
class View
{
@@ -13,7 +13,7 @@ class View
public function __construct($file, $path = null)
{
if (!self::exists($file, $path)) {
- throw new \Exception('View file does not exist: ' . $file);
+ throw new ViewRuntimeException('View file does not exist: ' . $file);
}
$this->viewFile = self::getViewFile($file, $path);
@@ -61,7 +61,7 @@ class View
}
if (!class_exists($class)) {
- throw new HttpException('Helper class does not exist: ' . $class);
+ throw new \Exception('Helper class does not exist: ' . $class);
}
self::$_helpers[$method] = new $class();
diff --git a/src/PHPCensor/Command/CreateAdminCommand.php b/src/PHPCensor/Command/CreateAdminCommand.php
index e151847f..1c9223c7 100644
--- a/src/PHPCensor/Command/CreateAdminCommand.php
+++ b/src/PHPCensor/Command/CreateAdminCommand.php
@@ -20,9 +20,10 @@ use Symfony\Component\Console\Question\Question;
/**
* Create admin command - creates an admin user
- * @author Wogan May (@woganmay)
- * @package PHPCI
- * @subpackage Console
+ *
+ * @author Wogan May (@woganmay)
+ * @package PHPCI
+ * @subpackage Console
*/
class CreateAdminCommand extends Command
{
diff --git a/src/PHPCensor/Helper/BaseCommandExecutor.php b/src/PHPCensor/Helper/BaseCommandExecutor.php
index 3afbbb17..de6b0485 100644
--- a/src/PHPCensor/Helper/BaseCommandExecutor.php
+++ b/src/PHPCensor/Helper/BaseCommandExecutor.php
@@ -144,9 +144,13 @@ abstract class BaseCommandExecutor implements CommandExecutor
}
/**
- * Find a binary required by a plugin.
+ * Find a binary required by a plugin
+ *
* @param string $binary
- * @param bool $quiet
+ * @param bool $quiet
+ *
+ * @throws Exception
+ *
* @return null|string
*/
public function findBinary($binary, $quiet = false)
@@ -162,22 +166,26 @@ abstract class BaseCommandExecutor implements CommandExecutor
if (is_dir($composerBin) && is_file($composerBin . DIRECTORY_SEPARATOR . $bin)) {
$this->logger->log(Lang::get('found_in_path', $composerBin, $bin), LogLevel::DEBUG);
+
return $composerBin . DIRECTORY_SEPARATOR . $bin;
}
- if (is_file($this->rootDir . $bin)) {
+ if (is_file($this->rootDir . DIRECTORY_SEPARATOR . $bin)) {
$this->logger->log(Lang::get('found_in_path', 'root', $bin), LogLevel::DEBUG);
- return $this->rootDir . $bin;
+
+ return $this->rootDir . DIRECTORY_SEPARATOR . $bin;
}
if (is_file($this->rootDir . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . $bin)) {
$this->logger->log(Lang::get('found_in_path', 'vendor/bin', $bin), LogLevel::DEBUG);
+
return $this->rootDir . 'vendor' . DIRECTORY_SEPARATOR . 'bin' . DIRECTORY_SEPARATOR . $bin;
}
$findCmdResult = $this->findGlobalBinary($bin);
if (is_file($findCmdResult)) {
$this->logger->log(Lang::get('found_in_path', '', $bin), LogLevel::DEBUG);
+
return $findCmdResult;
}
}
@@ -185,6 +193,7 @@ abstract class BaseCommandExecutor implements CommandExecutor
if ($quiet) {
return null;
}
+
throw new Exception(Lang::get('could_not_find', implode('/', $binary)));
}
diff --git a/src/PHPCensor/Helper/Email.php b/src/PHPCensor/Helper/Email.php
index d6a16a37..f2a2ef11 100644
--- a/src/PHPCensor/Helper/Email.php
+++ b/src/PHPCensor/Helper/Email.php
@@ -102,7 +102,7 @@ class Email
*
* @param Builder $builder
*
- * @return bool|int
+ * @return integer
*/
public function send(Builder $builder)
{
@@ -110,9 +110,9 @@ class Email
$builder->logDebug(sprintf("SMTP: '%s'", !empty($smtpServer) ? 'true' : 'false'));
if (empty($smtpServer)) {
- return $this->sendViaMail();
+ return (integer)$this->sendViaMail();
} else {
- return $this->sendViaSwiftMailer();
+ return (integer)$this->sendViaSwiftMailer();
}
}
@@ -148,6 +148,7 @@ class Email
/**
* Sends the email using SwiftMailer.
+ *
* @return int
*/
protected function sendViaSwiftMailer()
diff --git a/src/PHPCensor/Helper/Lang.php b/src/PHPCensor/Helper/Lang.php
index c9a43432..2a25f7eb 100644
--- a/src/PHPCensor/Helper/Lang.php
+++ b/src/PHPCensor/Helper/Lang.php
@@ -125,12 +125,17 @@ class Lang
* Initialise the Language helper, try load the language file for the user's browser or the configured default.
*
* @param Config $config
+ * @param string $language_force
*/
- public static function init(Config $config)
+ public static function init(Config $config, $language_force = null)
{
self::$en_strings = self::loadLanguage('en');
self::loadAvailableLanguages();
+ if ($language_force && self::setLanguage($language_force)) {
+ return;
+ }
+
// Try cookies first:
if (isset($_COOKIE) && array_key_exists('php-censor-language', $_COOKIE) && self::setLanguage($_COOKIE['php-censor-language'])) {
return;
@@ -141,7 +146,7 @@ class Lang
$langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach ($langs as $lang) {
- $parts = explode(';', $lang);
+ $parts = explode(';', $lang);
$language = strtolower($parts[0]);
if (self::setLanguage($language)) {
diff --git a/src/PHPCensor/Model/Base/BuildBase.php b/src/PHPCensor/Model/Base/BuildBase.php
index ebaa22c8..ae7886dd 100644
--- a/src/PHPCensor/Model/Base/BuildBase.php
+++ b/src/PHPCensor/Model/Base/BuildBase.php
@@ -184,10 +184,10 @@ class BuildBase extends Model
];
/**
- * Get the value of Id / id.
- *
- * @return int
- */
+ * Get the value of Id / id.
+ *
+ * @return int
+ */
public function getId()
{
$rtn = $this->data['id'];
@@ -196,10 +196,10 @@ class BuildBase extends Model
}
/**
- * Get the value of ProjectId / project_id.
- *
- * @return int
- */
+ * Get the value of ProjectId / project_id.
+ *
+ * @return int
+ */
public function getProjectId()
{
$rtn = $this->data['project_id'];
@@ -208,10 +208,10 @@ class BuildBase extends Model
}
/**
- * Get the value of CommitId / commit_id.
- *
- * @return string
- */
+ * Get the value of CommitId / commit_id.
+ *
+ * @return string
+ */
public function getCommitId()
{
$rtn = $this->data['commit_id'];
@@ -220,10 +220,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Status / status.
- *
- * @return int
- */
+ * Get the value of Status / status.
+ *
+ * @return int
+ */
public function getStatus()
{
$rtn = $this->data['status'];
@@ -232,10 +232,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Log / log.
- *
- * @return string
- */
+ * Get the value of Log / log.
+ *
+ * @return string
+ */
public function getLog()
{
$rtn = $this->data['log'];
@@ -244,10 +244,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Branch / branch.
- *
- * @return string
- */
+ * Get the value of Branch / branch.
+ *
+ * @return string
+ */
public function getBranch()
{
$rtn = $this->data['branch'];
@@ -256,10 +256,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Created / created.
- *
- * @return \DateTime
- */
+ * Get the value of Created / created.
+ *
+ * @return \DateTime
+ */
public function getCreated()
{
$rtn = $this->data['created'];
@@ -272,10 +272,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Started / started.
- *
- * @return \DateTime
- */
+ * Get the value of Started / started.
+ *
+ * @return \DateTime
+ */
public function getStarted()
{
$rtn = $this->data['started'];
@@ -288,10 +288,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Finished / finished.
- *
- * @return \DateTime
- */
+ * Get the value of Finished / finished.
+ *
+ * @return \DateTime
+ */
public function getFinished()
{
$rtn = $this->data['finished'];
@@ -304,10 +304,10 @@ class BuildBase extends Model
}
/**
- * Get the value of CommitterEmail / committer_email.
- *
- * @return string
- */
+ * Get the value of CommitterEmail / committer_email.
+ *
+ * @return string
+ */
public function getCommitterEmail()
{
$rtn = $this->data['committer_email'];
@@ -316,10 +316,10 @@ class BuildBase extends Model
}
/**
- * Get the value of CommitMessage / commit_message.
- *
- * @return string
- */
+ * Get the value of CommitMessage / commit_message.
+ *
+ * @return string
+ */
public function getCommitMessage()
{
$rtn = $this->data['commit_message'];
@@ -328,10 +328,10 @@ class BuildBase extends Model
}
/**
- * Get the value of Extra / extra.
- *
- * @return string
- */
+ * Get the value of Extra / extra.
+ *
+ * @return string
+ */
public function getExtra()
{
$rtn = $this->data['extra'];
@@ -340,11 +340,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Id / id.
- *
- * Must not be null.
- * @param $value int
- */
+ * Set the value of Id / id. Must not be null.
+ *
+ * @param $value int
+ */
public function setId($value)
{
$this->_validateNotNull('Id', $value);
@@ -360,11 +359,10 @@ class BuildBase extends Model
}
/**
- * Set the value of ProjectId / project_id.
- *
- * Must not be null.
- * @param $value int
- */
+ * Set the value of ProjectId / project_id. Must not be null.
+ *
+ * @param $value int
+ */
public function setProjectId($value)
{
$this->_validateNotNull('ProjectId', $value);
@@ -380,11 +378,10 @@ class BuildBase extends Model
}
/**
- * Set the value of CommitId / commit_id.
- *
- * Must not be null.
- * @param $value string
- */
+ * Set the value of CommitId / commit_id. Must not be null.
+ *
+ * @param $value string
+ */
public function setCommitId($value)
{
$this->_validateNotNull('CommitId', $value);
@@ -400,11 +397,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Status / status.
- *
- * Must not be null.
- * @param $value int
- */
+ * Set the value of Status / status. Must not be null.
+ *
+ * @param $value int
+ */
public function setStatus($value)
{
$this->_validateNotNull('Status', $value);
@@ -420,10 +416,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Log / log.
- *
- * @param $value string
- */
+ * Set the value of Log / log.
+ *
+ * @param $value string
+ */
public function setLog($value)
{
$this->_validateString('Log', $value);
@@ -438,11 +434,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Branch / branch.
- *
- * Must not be null.
- * @param $value string
- */
+ * Set the value of Branch / branch. Must not be null.
+ *
+ * @param $value string
+ */
public function setBranch($value)
{
$this->_validateNotNull('Branch', $value);
@@ -458,10 +453,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Created / created.
- *
- * @param $value \DateTime
- */
+ * Set the value of Created / created.
+ *
+ * @param $value \DateTime
+ */
public function setCreated($value)
{
$this->_validateDate('Created', $value);
@@ -476,10 +471,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Started / started.
- *
- * @param $value \DateTime
- */
+ * Set the value of Started / started.
+ *
+ * @param $value \DateTime
+ */
public function setStarted($value)
{
$this->_validateDate('Started', $value);
@@ -494,10 +489,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Finished / finished.
- *
- * @param $value \DateTime
- */
+ * Set the value of Finished / finished.
+ *
+ * @param $value \DateTime
+ */
public function setFinished($value)
{
$this->_validateDate('Finished', $value);
@@ -512,10 +507,10 @@ class BuildBase extends Model
}
/**
- * Set the value of CommitterEmail / committer_email.
- *
- * @param $value string
- */
+ * Set the value of CommitterEmail / committer_email.
+ *
+ * @param $value string
+ */
public function setCommitterEmail($value)
{
$this->_validateString('CommitterEmail', $value);
@@ -530,10 +525,10 @@ class BuildBase extends Model
}
/**
- * Set the value of CommitMessage / commit_message.
- *
- * @param $value string
- */
+ * Set the value of CommitMessage / commit_message.
+ *
+ * @param $value string
+ */
public function setCommitMessage($value)
{
$this->_validateString('CommitMessage', $value);
@@ -548,10 +543,10 @@ class BuildBase extends Model
}
/**
- * Set the value of Extra / extra.
- *
- * @param $value string
- */
+ * Set the value of Extra / extra.
+ *
+ * @param $value string
+ */
public function setExtra($value)
{
$this->_validateString('Extra', $value);
@@ -568,8 +563,6 @@ class BuildBase extends Model
/**
* Get the Project model for this Build by Id.
*
- * @uses \PHPCensor\Store\ProjectStore::getById()
- * @uses \PHPCensor\Model\Project
* @return \PHPCensor\Model\Project
*/
public function getProject()
@@ -592,10 +585,10 @@ class BuildBase extends Model
}
/**
- * Set Project - Accepts an ID, an array representing a Project or a Project model.
- *
- * @param $value mixed
- */
+ * Set Project - Accepts an ID, an array representing a Project or a Project model.
+ *
+ * @param $value mixed
+ */
public function setProject($value)
{
// Is this an instance of Project?
@@ -613,10 +606,10 @@ class BuildBase extends Model
}
/**
- * Set Project - Accepts a Project model.
- *
- * @param $value Project
- */
+ * Set Project - Accepts a Project model.
+ *
+ * @param $value Project
+ */
public function setProjectObject(Project $value)
{
return $this->setProjectId($value->getId());
@@ -624,9 +617,7 @@ class BuildBase extends Model
/**
* Get BuildError models by BuildId for this Build.
- *
- * @uses \PHPCensor\Store\BuildErrorStore::getByBuildId()
- * @uses \PHPCensor\Model\BuildError
+ *
* @return \PHPCensor\Model\BuildError[]
*/
public function getBuildBuildErrors()
@@ -636,9 +627,7 @@ class BuildBase extends Model
/**
* Get BuildMeta models by BuildId for this Build.
- *
- * @uses \PHPCensor\Store\BuildMetaStore::getByBuildId()
- * @uses \PHPCensor\Model\BuildMeta
+ *
* @return \PHPCensor\Model\BuildMeta[]
*/
public function getBuildBuildMetas()
diff --git a/src/PHPCensor/Model/Build.php b/src/PHPCensor/Model/Build.php
index 345e91ec..8c7b1e78 100644
--- a/src/PHPCensor/Model/Build.php
+++ b/src/PHPCensor/Model/Build.php
@@ -15,18 +15,16 @@ use PHPCensor\Builder;
use Symfony\Component\Yaml\Parser as YamlParser;
/**
-* Build Model
-* @uses PHPCensor\Model\Base\BuildBase
-* @author Dan Cryer
-* @package PHPCI
-* @subpackage Core
-*/
+ * Build Model
+ *
+ * @author Dan Cryer
+ */
class Build extends BuildBase
{
- const STATUS_NEW = 0;
+ const STATUS_NEW = 0;
const STATUS_RUNNING = 1;
const STATUS_SUCCESS = 2;
- const STATUS_FAILED = 3;
+ const STATUS_FAILED = 3;
public $currentBuildPath;
@@ -48,6 +46,7 @@ class Build extends BuildBase
/**
* Return a template to use to generate a link to a specific file.
+ *
* @return null
*/
public function getFileLinkTemplate()
diff --git a/src/PHPCensor/Plugin/Email.php b/src/PHPCensor/Plugin/Email.php
index ade99801..ae535b80 100644
--- a/src/PHPCensor/Plugin/Email.php
+++ b/src/PHPCensor/Plugin/Email.php
@@ -9,6 +9,8 @@
namespace PHPCensor\Plugin;
+use b8\Config;
+use b8\ViewRuntimeException;
use Exception;
use b8\View;
use PHPCensor\Builder;
@@ -58,6 +60,8 @@ class Email implements Plugin
/**
* Send a notification mail.
+ *
+ * @return boolean
*/
public function execute()
{
@@ -72,15 +76,7 @@ class Email implements Plugin
$buildStatus = $this->build->isSuccessful() ? "Passing Build" : "Failing Build";
$projectName = $this->build->getProject()->getTitle();
- try {
- $view = $this->getMailTemplate();
- } catch (Exception $e) {
- $this->phpci->log(
- sprintf('Unknown mail template "%s", falling back to default.', $this->options['template']),
- LogLevel::WARNING
- );
- $view = $this->getDefaultMailTemplate();
- }
+ $view = $this->getMailTemplate();
$view->build = $this->build;
$view->project = $this->build->getProject();
@@ -109,7 +105,8 @@ class Email implements Plugin
* @param string[] $ccList
* @param string $subject Email subject
* @param string $body Email body
- * @return array Array of failed addresses
+ *
+ * @return integer
*/
protected function sendEmail($toAddress, $ccList, $subject, $body)
{
@@ -224,8 +221,17 @@ class Email implements Plugin
*/
protected function getMailTemplate()
{
- if (isset($this->options['template'])) {
- return new View('Email/' . $this->options['template']);
+ try {
+ if (isset($this->options['template'])) {
+ return new View('Email/' . $this->options['template']);
+ }
+ } catch (ViewRuntimeException $e) {
+ $this->phpci->log(
+ sprintf('Unknown mail template "%s", falling back to default.', $this->options['template']),
+ LogLevel::WARNING
+ );
+
+ return $this->getDefaultMailTemplate();
}
return $this->getDefaultMailTemplate();
diff --git a/src/PHPCensor/Plugin/PhpCpd.php b/src/PHPCensor/Plugin/PhpCpd.php
index c0ae1956..e075f6fb 100644
--- a/src/PHPCensor/Plugin/PhpCpd.php
+++ b/src/PHPCensor/Plugin/PhpCpd.php
@@ -50,18 +50,13 @@ class PhpCpd implements Plugin
$this->phpci = $phpci;
$this->build = $build;
- $this->path = $phpci->buildPath;
- $this->standard = 'PSR1';
+ $this->path = $phpci->buildPath;
$this->ignore = $phpci->ignore;
if (!empty($options['path'])) {
$this->path = $phpci->buildPath . $options['path'];
}
- if (!empty($options['standard'])) {
- $this->standard = $options['standard'];
- }
-
if (!empty($options['ignore'])) {
$this->ignore = $options['ignore'];
}
diff --git a/src/PHPCensor/Plugin/Util/TapParser.php b/src/PHPCensor/Plugin/Util/TapParser.php
index 0535bf04..290f08b6 100644
--- a/src/PHPCensor/Plugin/Util/TapParser.php
+++ b/src/PHPCensor/Plugin/Util/TapParser.php
@@ -16,7 +16,7 @@ class TapParser
const TEST_LINE_PATTERN = '/^(ok|not ok)(?:\s+\d+)?(?:\s+\-)?\s*(.*?)(?:\s*#\s*(skip|todo)\s*(.*))?\s*$/i';
const TEST_YAML_START = '/^(\s*)---/';
const TEST_DIAGNOSTIC = '/^#/';
- const TEST_COVERAGE = '/^Generating/';
+ const TEST_COVERAGE = '/(Generating code coverage|The Xdebug extension is not loaded|No code coverage)/';
/**
* @var string
diff --git a/src/PHPCensor/ProcessControl/PosixProcessControl.php b/src/PHPCensor/ProcessControl/PosixProcessControl.php
index a8cf0137..d5a27e9f 100644
--- a/src/PHPCensor/ProcessControl/PosixProcessControl.php
+++ b/src/PHPCensor/ProcessControl/PosixProcessControl.php
@@ -28,14 +28,11 @@ class PosixProcessControl implements ProcessControlInterface
}
/**
- * Sends a TERMINATE or KILL signal to the process using posix_kill.
- *
- * @param int $pid
- * @param bool $forcefully Whether to send TERMINATE (false) or KILL (true).
+ * {@inheritdoc}
*/
public function kill($pid, $forcefully = false)
{
- posix_kill($pid, $forcefully ? 9 : 15);
+ return posix_kill($pid, $forcefully ? 9 : 15);
}
/**
diff --git a/src/PHPCensor/ProcessControl/ProcessControlInterface.php b/src/PHPCensor/ProcessControl/ProcessControlInterface.php
index ee70450b..1de6c610 100644
--- a/src/PHPCensor/ProcessControl/ProcessControlInterface.php
+++ b/src/PHPCensor/ProcessControl/ProcessControlInterface.php
@@ -16,7 +16,8 @@ namespace PHPCensor\ProcessControl;
*/
interface ProcessControlInterface
{
- /** Checks if a process exists.
+ /**
+ * Checks if a process exists.
*
* @param int $pid The process identifier.
*
@@ -24,10 +25,13 @@ interface ProcessControlInterface
*/
public function isRunning($pid);
- /** Terminate a running process.
+ /**
+ * Terminate a running process.
*
* @param int $pid The process identifier.
* @param bool $forcefully Whether to gently (false) or forcefully (true) terminate the process.
+ *
+ * @return boolean
*/
public function kill($pid, $forcefully = false);
}
diff --git a/src/PHPCensor/ProcessControl/UnixProcessControl.php b/src/PHPCensor/ProcessControl/UnixProcessControl.php
index 0670d266..ee0781a3 100644
--- a/src/PHPCensor/ProcessControl/UnixProcessControl.php
+++ b/src/PHPCensor/ProcessControl/UnixProcessControl.php
@@ -30,14 +30,16 @@ class UnixProcessControl implements ProcessControlInterface
}
/**
- * Sends a signal using the "kill" command.
- *
- * @param int $pid
- * @param bool $forcefully
+ * {@inheritdoc}
*/
public function kill($pid, $forcefully = false)
{
- exec(sprintf("kill -%d %d", $forcefully ? 9 : 15, $pid));
+ $output = [];
+ $result = 1;
+
+ exec(sprintf("kill -%d %d", $forcefully ? 9 : 15, $pid), $output, $result);
+
+ return !$result;
}
/**
diff --git a/src/PHPCensor/ProcessControl/WindowsProcessControl.php b/src/PHPCensor/ProcessControl/WindowsProcessControl.php
index 1ae4dd6f..0790b72c 100644
--- a/src/PHPCensor/ProcessControl/WindowsProcessControl.php
+++ b/src/PHPCensor/ProcessControl/WindowsProcessControl.php
@@ -31,15 +31,16 @@ class WindowsProcessControl implements ProcessControlInterface
}
/**
- * Terminate the process using the "taskkill" command.
- *
- * @param integer $pid
- *
- * @param bool $forcefully
+ * {@inheritdoc}
*/
public function kill($pid, $forcefully = false)
{
+ $output = [];
+ $result = 1;
+
exec(sprintf("taskkill /t /pid %d %s 2>nul:", $pid, $forcefully ? '/f' : ''));
+
+ return !$result;
}
/**
diff --git a/tests/B8Framework/CacheTest.php b/tests/B8Framework/CacheTest.php
index 4facef7b..8afc08cd 100755
--- a/tests/B8Framework/CacheTest.php
+++ b/tests/B8Framework/CacheTest.php
@@ -4,12 +4,12 @@ namespace Tests\b8;
use b8\Config, b8\Cache;
-class CacheTest extends PHPUnit_Framework_TestCase
+class CacheTest extends \PHPUnit_Framework_TestCase
{
public function testCreateSingleton()
{
$cache = Cache::getCache(Cache::TYPE_APC);
- $this->assertTrue($cache instanceof Cache);
+ self::assertInstanceOf('\b8\Cache\ApcCache', $cache);
}
public function testDisableCaching()
diff --git a/tests/B8Framework/DatabaseGenerationTest.php b/tests/B8Framework/DatabaseGenerationTest.php
deleted file mode 100644
index d0fdf4a5..00000000
--- a/tests/B8Framework/DatabaseGenerationTest.php
+++ /dev/null
@@ -1,75 +0,0 @@
-_name, $this->_user, $this->_pass);
- Database::setWriteServers([$this->_host]);
-
- $this->_db = Database::getConnection('write');
-
- $this->_db->query('DROP TABLE IF EXISTS tres');
- $this->_db->query('DROP TABLE IF EXISTS dos');
- $this->_db->query('DROP TABLE IF EXISTS uno');
- }
-
- public function testCreateDatabase()
- {
- $gen = new Generator($this->_db, 'Test', __DIR__ . '/data/generation/models/');
- $gen->generate();
-
- $map = new Map($this->_db);
- $t = $map->generate();
-
- $this->assertTrue(array_key_exists('uno', $t));
- $this->assertTrue(array_key_exists('dos', $t));
- $this->assertTrue(array_key_exists('tres', $t));
- $this->assertFalse(array_key_exists('bad_table', $t));
- $this->assertTrue(count($t['uno']['indexes']) == 1);
- $this->assertTrue(count($t['dos']['indexes']) == 3);
- $this->assertTrue(count($t['tres']['indexes']) == 2);
- $this->assertTrue(count($t['uno']['columns']) == 11);
- $this->assertTrue(count($t['dos']['columns']) == 4);
- $this->assertTrue(count($t['tres']['columns']) == 6);
- $this->assertTrue(array_key_exists('PRIMARY', $t['uno']['indexes']));
- $this->assertTrue(array_key_exists('PRIMARY', $t['dos']['indexes']));
- $this->assertFalse(array_key_exists('PRIMARY', $t['tres']['indexes']));
- }
-
- public function testUpdateDatabase()
- {
- $gen = new Generator($this->_db, 'Test', __DIR__ . '/data/generation/models/');
- $gen->generate();
-
- $gen = new Generator($this->_db, 'Update', __DIR__ . '/data/generation/update_models/');
- $gen->generate();
-
- $map = new Map($this->_db);
- $t = $map->generate();
-
- $this->assertTrue(array_key_exists('uno', $t));
- $this->assertTrue(array_key_exists('dos', $t));
- $this->assertTrue(array_key_exists('tres', $t));
- $this->assertFalse(array_key_exists('bad_table', $t));
- $this->assertTrue(count($t['uno']['indexes']) == 1);
- $this->assertTrue(count($t['dos']['indexes']) == 3);
- $this->assertTrue(count($t['tres']['indexes']) == 3);
- $this->assertTrue(count($t['uno']['columns']) == 10);
- $this->assertTrue(count($t['dos']['columns']) == 4);
- $this->assertTrue(count($t['tres']['columns']) == 10);
- $this->assertTrue(array_key_exists('PRIMARY', $t['uno']['indexes']));
- $this->assertTrue(array_key_exists('PRIMARY', $t['dos']['indexes']));
- $this->assertTrue(array_key_exists('PRIMARY', $t['tres']['indexes']));
- }
-}
diff --git a/tests/B8Framework/DatabaseTest.php b/tests/B8Framework/DatabaseTest.php
index f7cefbb9..a2142668 100755
--- a/tests/B8Framework/DatabaseTest.php
+++ b/tests/B8Framework/DatabaseTest.php
@@ -2,20 +2,30 @@
namespace Tests\b8;
+use b8\Config;
use b8\Database;
class DatabaseTest extends \PHPUnit_Framework_TestCase
{
- protected $_host = 'localhost';
- protected $_user = 'b8_test';
- protected $_pass = 'b8_test';
- protected $_name = 'b8_test';
-
+ protected function setUp()
+ {
+ $config = new Config([
+ 'b8' => [
+ 'database' => [
+ 'servers' => [
+ 'read' => 'localhost',
+ 'write' => 'localhost',
+ ],
+ 'name' => 'b8_test',
+ 'username' => 'root',
+ 'password' => 'root',
+ ],
+ ],
+ ]);
+ }
+
public function testGetReadConnection()
{
- Database::setDetails($this->_name, $this->_user, $this->_pass);
- Database::setReadServers([$this->_host]);
-
$connection = Database::getConnection('read');
$this->assertInstanceOf('\b8\Database', $connection);
@@ -23,9 +33,6 @@ class DatabaseTest extends \PHPUnit_Framework_TestCase
public function testGetWriteConnection()
{
- Database::setDetails($this->_name, $this->_user, $this->_pass);
- Database::setWriteServers([$this->_host]);
-
$connection = Database::getConnection('write');
$this->assertInstanceOf('\b8\Database', $connection);
@@ -33,14 +40,11 @@ class DatabaseTest extends \PHPUnit_Framework_TestCase
public function testGetDetails()
{
- Database::setDetails($this->_name, $this->_user, $this->_pass);
- Database::setReadServers(['localhost']);
-
$details = Database::getConnection('read')->getDetails();
$this->assertTrue(is_array($details));
- $this->assertTrue(($details['db'] == $this->_name));
- $this->assertTrue(($details['user'] == $this->_user));
- $this->assertTrue(($details['pass'] == $this->_pass));
+ $this->assertTrue(($details['db'] == 'b8_test'));
+ $this->assertTrue(($details['user'] == 'root'));
+ $this->assertTrue(($details['pass'] == 'root'));
}
/**
@@ -48,8 +52,22 @@ class DatabaseTest extends \PHPUnit_Framework_TestCase
*/
public function testConnectionFailure()
{
- Database::setDetails('non_existant', 'invalid_user', 'incorrect_password');
- Database::setReadServers(['localhost']);
+ Database::reset();
+
+ $config = new Config([
+ 'b8' => [
+ 'database' => [
+ 'servers' => [
+ 'read' => 'localhost',
+ 'write' => 'localhost',
+ ],
+ 'name' => 'b8_test_2',
+ 'username' => '',
+ 'password' => '',
+ ],
+ ],
+ ]);
+
Database::getConnection('read');
}
}
\ No newline at end of file
diff --git a/tests/B8Framework/FormTest.php b/tests/B8Framework/FormTest.php
index 515f78cd..360047df 100755
--- a/tests/B8Framework/FormTest.php
+++ b/tests/B8Framework/FormTest.php
@@ -15,12 +15,17 @@ class FormTest extends \PHPUnit_Framework_TestCase
$this->assertTrue($f->getAction() == '/');
$this->assertTrue($f->getMethod() == 'POST');
- $config = new Config();
- Config::getInstance()->set('ViewPath', __DIR__ . '/data/view/');
+ $config = new Config([
+ 'b8' => [
+ 'view' => [
+ 'path' => __DIR__ . '/data/view/'
+ ]
+ ]
+ ]);
$this->assertTrue($f->render('form') == '/POST');
- Config::getInstance()->set('ViewPath', '');
+ Config::getInstance()->set('b8.view.path', '');
$this->assertTrue(strpos((string)$f, '