cakephp2-php8/cake/scripts/test.php

160 lines
3.9 KiB
PHP
Raw Normal View History

<?php
/* SVN FILE: $Id$ */
/**
* Test reporter for Cake
*
* A test reporter that extends HtmlReporter.
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework <http://www.cakephp.org/>
* Copyright (c) 2005, Cake Software Foundation, Inc.
* 1785 E. Sahara Avenue, Suite 490-204
* Las Vegas, Nevada 89104
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @filesource
* @copyright Copyright (c) 2005, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
Merging from sandboxes [1079] Merged [1005] committed by nate but not added to core prior to release. Merged [1078] prior to modifying all developers sandboxes. [1081] adding view and template directories [1082] adding base files for view generator [1083] correcting all package and sub package tags for in doc blocks. Making sure every file in the core has doc block in them [1084] renaming working copy of latest release [1093] Added fix for associations using underscores if var $useTable is set in the associated models. This closes ticket #11. [1094] Fix for Ticket #24. The problem was tracked to a variable in View::_render(); $loadedHelpers was being assigned a reference when it when it should not have been. [1096] Initial work on controller components needs testing. Also added a work around for the basics.php uses(). Using the define DS where the files from the original version are now located in deeper libs directories. [1097] committing a few typos in the code I added [1098] reformatting code in component.php [1104] changed the test route and corrected a regex in inflector. [1111] removing the contructor from dispatcher, it is not needed [1112] Changes made for errors when a file is not present in webroot. Fixed the regex used in Router::parse(). Change the error layout template. [1113] Changes to Folder class to allow setting the permissions mode when constructing. This class needs to be refactored and move everything that is in the contructor out. The constructor should set the vars for use in other Folder::"methods"(). Will work on this at a later time. git-svn-id: https://svn.cakephp.org/repo/trunk/cake@1114 3807eeeb-6ff5-0310-8944-8be069107fe0
2005-10-09 01:56:21 +00:00
* @subpackage cake.cake.scripts
* @since CakePHP v 0.2.9
* @version $Revision$
* @modifiedby $LastChangedBy$
* @lastmodified $Date$
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
/**
* Helper function for outputting data.
*
* @param mixed $data Data to be dumped
* @return string Dumped data
* @todo Should be moved somevhere else.
*/
function dump($data)
{
ob_start();
var_dump($data);
return ob_get_clean();
}
/**
* Defining some constatnts and requireing some files - so that this script can
* be run from CLI.
*/
if (!defined('DS'))
{
define ('DS', DIRECTORY_SEPARATOR);
}
if (!defined('ROOT'))
{
define ('ROOT', dirname(dirname(__FILE__)).DS);
}
require_once ROOT.'config'.DS.'paths.php';
require_once CONFIGS.'core.php';
require_once CONFIGS.'tags.ini.php';
require_once LIBS.'basics.php';
if (file_exists(CONFIGS.'database.php'))
require_once CONFIGS.'database.php';
/**
* Simpletest setup.
*/
if (!defined('SIMPLE_TEST'))
{
define('SIMPLE_TEST', VENDORS.'simpletest/');
}
require_once SIMPLE_TEST.'unit_tester.php';
require_once SIMPLE_TEST.'reporter.php';
$groupTest = new GroupTest('Cake tests');
/**
* We need to loop through the tests folder.
*/
uses('folder');
$testsFolder = new Folder(TESTS);
foreach ($testsFolder->findRecursive('.*\.php') as $test)
{
$groupTest->addTestFile($test);
}
/**
* Better formatting of HTML reporter.
* @package cake
* @subpackage cake.scripts
*/
class CakeHtmlReporter extends HtmlReporter
{
/**
* Returns CSS formatting for the reporter.
*
* @return string
*/
function _getCss()
{
return '.error { margin: 10px 0px; border: 1px solid #d7d4c7; padding: 4px; } .fail { color: red; font-weight: bold; } pre { background-color: lightgray; } .msg { margin-top: 5px; } body { font-family: Verdana; font-size: small; }';
}
/**
* Renders a test failure
*
* @param string $message
*/
function paintFail($message)
{
print '<div class="error">';
print "<div class=\"fail\">Fail</div>";
$breadcrumb = $this->getTestList();
array_shift($breadcrumb);
print implode(" &raquo; ", $breadcrumb);
print '<div class="msg">' . $this->_htmlEntities($message) . "</div>\n";
print '</div>';
}
/**
* Renders an exception
*
* @param string $message Message to be rendered
*/
function paintException($message)
{
print '<div class="error">';
print "<div class=\"fail\">Exception</div>";
$breadcrumb = $this->getTestList();
array_shift($breadcrumb);
print implode(" &raquo; ", $breadcrumb);
print '<div class="msg">' . $this->_htmlEntities($message) . "</div>\n";
print '</div>';
}
}
/**
* We need to run different reporters, depending on wheter we are CLI or not.
*/
if (TextReporter::inCli())
{
/**
* Native text-reporter.
*/
if ($argv[1] == '-h' || $argv[1] == '--human-readable' || !is_file(VENDORS.'php/rephlux/cli_reporter.php'))
{
exit($groupTest->run(new TextReporter()) ? 0 : 1);
}
/**
* Rephlux reporter.
*/
else
{
require_once VENDORS.'php/rephlux/cli_reporter.php';
exit($groupTest->run(new CLIReporter()) ? 0 : 1);
}
}
else
{
$groupTest->run(new CakeHtmlReporter());
}
?>