mirror of
https://github.com/atlanticbiomedical/portal-legacy.git
synced 2025-07-02 01:47:28 -04:00
113 lines
2.7 KiB
PHP
113 lines
2.7 KiB
PHP
![]() |
<?php
|
||
|
|
||
|
/**
|
||
|
* @package pake
|
||
|
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
|
||
|
* @copyright 2004-2005 Fabien Potencier <fabien.potencier@symfony-project.com>
|
||
|
* @license see the LICENSE file included in the distribution
|
||
|
* @version SVN: $Id: pakeSimpletestTask.class.php 1791 2006-08-23 21:17:06Z fabien $
|
||
|
*/
|
||
|
|
||
|
class pakeSimpletestTask
|
||
|
{
|
||
|
public static function import_default_tasks()
|
||
|
{
|
||
|
pake_desc('launch project test suite');
|
||
|
pake_task('pakeSimpletestTask::test');
|
||
|
}
|
||
|
|
||
|
public static function call_simpletest($task, $type = 'text', $dirs = array())
|
||
|
{
|
||
|
// remove E_STRICT because simpletest is not E_STRICT compatible
|
||
|
$old_error_reporting = ini_get('error_reporting');
|
||
|
if ($old_error_reporting & E_STRICT)
|
||
|
{
|
||
|
error_reporting($old_error_reporting ^ E_STRICT);
|
||
|
}
|
||
|
|
||
|
set_include_path('test'.PATH_SEPARATOR.'lib'.PATH_SEPARATOR.'classes'.PATH_SEPARATOR.get_include_path());
|
||
|
|
||
|
include_once('simpletest/unit_tester.php');
|
||
|
include_once('simpletest/web_tester.php');
|
||
|
if (!class_exists('GroupTest'))
|
||
|
{
|
||
|
throw new pakeException('You must install SimpleTest to use this task.');
|
||
|
}
|
||
|
|
||
|
require_once('simpletest/reporter.php');
|
||
|
require_once('simpletest/mock_objects.php');
|
||
|
|
||
|
$base_test_dir = 'test';
|
||
|
$test_dirs = array();
|
||
|
|
||
|
// run tests only in these subdirectories
|
||
|
if ($dirs)
|
||
|
{
|
||
|
foreach ($dirs as $dir)
|
||
|
{
|
||
|
$test_dirs[] = $base_test_dir.DIRECTORY_SEPARATOR.$dir;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$test_dirs[] = $base_test_dir;
|
||
|
}
|
||
|
|
||
|
$test = new GroupTest('Test suite in ('.implode(', ', $test_dirs).')');
|
||
|
$files = pakeFinder::type('file')->name('*Test.php')->in($test_dirs);
|
||
|
foreach ($files as $file)
|
||
|
{
|
||
|
$test->addTestFile($file);
|
||
|
}
|
||
|
|
||
|
if (count($files))
|
||
|
{
|
||
|
ob_start();
|
||
|
if ($type == 'html')
|
||
|
{
|
||
|
$result = $test->run(new HtmlReporter());
|
||
|
}
|
||
|
else if ($type == 'xml')
|
||
|
{
|
||
|
$result = $test->run(new XmlReporter());
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
$result = $test->run(new TextReporter());
|
||
|
}
|
||
|
$content = ob_get_contents();
|
||
|
ob_end_clean();
|
||
|
|
||
|
if ($task->is_verbose())
|
||
|
{
|
||
|
echo $content;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
throw new pakeException('No test to run.');
|
||
|
}
|
||
|
|
||
|
error_reporting($old_error_reporting);
|
||
|
}
|
||
|
|
||
|
public static function run_test($task, $args)
|
||
|
{
|
||
|
$types = array('text', 'html', 'xml');
|
||
|
$type = 'text';
|
||
|
if (array_key_exists(0, $args) && in_array($args[0], $types))
|
||
|
{
|
||
|
$type = $args[0];
|
||
|
array_shift($args);
|
||
|
}
|
||
|
|
||
|
$dirs = array();
|
||
|
if (is_array($args) && array_key_exists(0, $args))
|
||
|
{
|
||
|
$dirs[] = $args[0];
|
||
|
}
|
||
|
|
||
|
self::call_simpletest($task, $type, $dirs);
|
||
|
}
|
||
|
}
|