This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
lnkohana/modules/unittest/classes/Kohana/Unittest/TestSuite.php

81 lines
2.2 KiB
PHP
Raw Permalink Normal View History

2013-04-22 04:09:50 +00:00
<?php defined('SYSPATH') or die('No direct script access.');
/**
* A version of the stock PHPUnit testsuite that supports whitelisting and
* blacklisting for code coverage filter
*/
abstract class Kohana_Unittest_TestSuite extends PHPUnit_Framework_TestSuite
{
/**
* Holds the details of files that should be white and blacklisted for
* code coverage
*
* @var array
*/
protected $_filter_calls = array(
'addFileToBlacklist' => array(),
'addDirectoryToBlacklist' => array(),
'addFileToWhitelist' => array());
/**
* Runs the tests and collects their result in a TestResult.
*
* @param PHPUnit_Framework_TestResult $result
* @param mixed $filter
* @param array $groups
* @param array $excludeGroups
* @param boolean $processIsolation
* @return PHPUnit_Framework_TestResult
* @throws InvalidArgumentException
*/
public function run(PHPUnit_Framework_TestResult $result = NULL, $filter = FALSE, array $groups = array(), array $excludeGroups = array(), $processIsolation = FALSE)
{
// Get the code coverage filter from the suite's result object
$coverage = $result->getCodeCoverage();
if ($coverage)
{
$coverage_filter = $coverage->filter();
// Apply the white and blacklisting
foreach ($this->_filter_calls as $method => $args)
{
foreach ($args as $arg)
{
$coverage_filter->$method($arg);
}
}
}
return parent::run($result, $filter, $groups, $excludeGroups, $processIsolation);
}
/**
* Queues a file to be added to the code coverage blacklist when the suite runs
* @param string $file
*/
public function addFileToBlacklist($file)
{
$this->_filter_calls['addFileToBlacklist'][] = $file;
}
/**
* Queues a directory to be added to the code coverage blacklist when the suite runs
* @param string $dir
*/
public function addDirectoryToBlacklist($dir)
{
$this->_filter_calls['addDirectoryToBlacklist'][] = $dir;
}
/**
* Queues a file to be added to the code coverage whitelist when the suite runs
* @param string $file
*/
public function addFileToWhitelist($file)
{
$this->_filter_calls['addFileToWhitelist'][] = $file;
}
}