mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Removing 'group tests' PHPUnit implements them as testsuites, which do not need to be handled differently than test cases.
This commit is contained in:
parent
a166ea78cb
commit
206d4d4722
6 changed files with 13 additions and 219 deletions
|
@ -31,7 +31,6 @@ class CakeTestSuiteDispatcher {
|
||||||
*/
|
*/
|
||||||
public $params = array(
|
public $params = array(
|
||||||
'codeCoverage' => false,
|
'codeCoverage' => false,
|
||||||
'group' => null,
|
|
||||||
'case' => null,
|
'case' => null,
|
||||||
'app' => false,
|
'app' => false,
|
||||||
'plugin' => null,
|
'plugin' => null,
|
||||||
|
@ -96,14 +95,10 @@ class CakeTestSuiteDispatcher {
|
||||||
$this->_checkPHPUnit();
|
$this->_checkPHPUnit();
|
||||||
$this->_parseParams();
|
$this->_parseParams();
|
||||||
|
|
||||||
if ($this->params['group']) {
|
if ($this->params['case']) {
|
||||||
$this->_runGroupTest();
|
|
||||||
} elseif ($this->params['case']) {
|
|
||||||
$this->_runTestCase();
|
$this->_runTestCase();
|
||||||
} elseif (isset($_GET['show']) && $_GET['show'] == 'cases') {
|
|
||||||
$this->_testCaseList();
|
|
||||||
} else {
|
} else {
|
||||||
$this->_groupTestList();
|
$this->_testCaseList();
|
||||||
}
|
}
|
||||||
|
|
||||||
$output = ob_get_clean();
|
$output = ob_get_clean();
|
||||||
|
@ -170,19 +165,6 @@ class CakeTestSuiteDispatcher {
|
||||||
$Reporter->paintDocumentEnd();
|
$Reporter->paintDocumentEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates a page containing a list of group tests that could be run.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function _groupTestList() {
|
|
||||||
$Reporter =& $this->getReporter();
|
|
||||||
$Reporter->paintDocumentStart();
|
|
||||||
$Reporter->paintTestMenu();
|
|
||||||
$Reporter->groupTestList();
|
|
||||||
$Reporter->paintDocumentEnd();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the Manager to use for the request.
|
* Sets the Manager to use for the request.
|
||||||
*
|
*
|
||||||
|
@ -243,20 +225,6 @@ class CakeTestSuiteDispatcher {
|
||||||
$this->getManager();
|
$this->getManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs the group test case.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
function _runGroupTest() {
|
|
||||||
$Reporter = CakeTestSuiteDispatcher::getReporter();
|
|
||||||
if ('all' == $this->params['group']) {
|
|
||||||
$this->Manager->runAllTests($Reporter);
|
|
||||||
} else {
|
|
||||||
$this->Manager->runGroupTest(ucfirst($this->params['group']), $Reporter, $this->params['codeCoverage']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs a test case file.
|
* Runs a test case file.
|
||||||
*
|
*
|
||||||
|
|
|
@ -44,13 +44,6 @@ abstract class BaseCoverageReport {
|
||||||
*/
|
*/
|
||||||
public $pluginTest = false;
|
public $pluginTest = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* is the test a group test?
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
public $groupTest = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of test case file names. Used to do basename() matching with
|
* Array of test case file names. Used to do basename() matching with
|
||||||
* files that have coverage to decide which results to show on page load.
|
* files that have coverage to decide which results to show on page load.
|
||||||
|
@ -81,9 +74,6 @@ abstract class BaseCoverageReport {
|
||||||
if ($reporter->params['app']) {
|
if ($reporter->params['app']) {
|
||||||
$this->appTest = true;
|
$this->appTest = true;
|
||||||
}
|
}
|
||||||
if ($reporter->params['group']) {
|
|
||||||
$this->groupTest = true;
|
|
||||||
}
|
|
||||||
if ($reporter->params['plugin']) {
|
if ($reporter->params['plugin']) {
|
||||||
$this->pluginTest = Inflector::underscore($reporter->params['plugin']);
|
$this->pluginTest = Inflector::underscore($reporter->params['plugin']);
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,34 +94,6 @@ class CakeBaseReporter implements PHPUnit_Framework_TestListener {
|
||||||
$this->params = $params;
|
$this->params = $params;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Signals / Paints the beginning of a TestSuite executing.
|
|
||||||
* Starts the timer for the TestSuite execution time.
|
|
||||||
*
|
|
||||||
* @param string $test_name Name of the test that is being run.
|
|
||||||
* @param integer $size
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function paintGroupStart($test_name, $size) {
|
|
||||||
if (empty($this->_timeStart)) {
|
|
||||||
$this->_timeStart = microtime(true);
|
|
||||||
}
|
|
||||||
parent::paintGroupStart($test_name, $size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Signals/Paints the end of a TestSuite. All test cases have run
|
|
||||||
* and timers are stopped.
|
|
||||||
*
|
|
||||||
* @param string $test_name Name of the test that is being run.
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function paintGroupEnd($test_name) {
|
|
||||||
$this->_timeEnd = microtime(true);
|
|
||||||
$this->_timeDuration = $this->_timeEnd - $this->_timeStart;
|
|
||||||
parent::paintGroupEnd($test_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves a list of test cases from the active Manager class,
|
* Retrieves a list of test cases from the active Manager class,
|
||||||
* displaying it in the correct format for the reporter subclass
|
* displaying it in the correct format for the reporter subclass
|
||||||
|
@ -133,17 +105,6 @@ class CakeBaseReporter implements PHPUnit_Framework_TestListener {
|
||||||
return $testList;
|
return $testList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves a list of group test cases from the active Manager class
|
|
||||||
* displaying it in the correct format for the reporter subclass.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function groupTestList() {
|
|
||||||
$testList = TestManager::getGroupTestList($this->params);
|
|
||||||
return $testList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Paints the start of the response from the test suite.
|
* Paints the start of the response from the test suite.
|
||||||
* Used to paint things like head elements in an html page.
|
* Used to paint things like head elements in an html page.
|
||||||
|
|
|
@ -61,7 +61,6 @@ class CakeHtmlReporter extends CakeBaseReporter {
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function paintTestMenu() {
|
public function paintTestMenu() {
|
||||||
$groups = $this->baseUrl() . '?show=groups';
|
|
||||||
$cases = $this->baseUrl() . '?show=cases';
|
$cases = $this->baseUrl() . '?show=cases';
|
||||||
$plugins = App::objects('plugin');
|
$plugins = App::objects('plugin');
|
||||||
sort($plugins);
|
sort($plugins);
|
||||||
|
@ -93,7 +92,7 @@ class CakeHtmlReporter extends CakeBaseReporter {
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($testCases as $testCaseFile => $testCase) {
|
foreach ($testCases as $testCaseFile => $testCase) {
|
||||||
$title = explode(strpos($testCase, '\\') ? '\\' : '/', str_replace('.test.php', '', $testCase));
|
$title = explode(DS, str_replace('.test.php', '', $testCase));
|
||||||
$title[count($title) - 1] = Inflector::camelize($title[count($title) - 1]);
|
$title[count($title) - 1] = Inflector::camelize($title[count($title) - 1]);
|
||||||
$title = implode(' / ', $title);
|
$title = implode(' / ', $title);
|
||||||
$buffer .= "<li><a href='" . $this->baseUrl() . "?case=" . urlencode($testCase) . $urlExtra ."'>" . $title . "</a></li>\n";
|
$buffer .= "<li><a href='" . $this->baseUrl() . "?case=" . urlencode($testCase) . $urlExtra ."'>" . $title . "</a></li>\n";
|
||||||
|
@ -102,35 +101,6 @@ class CakeHtmlReporter extends CakeBaseReporter {
|
||||||
echo $buffer;
|
echo $buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves and paints the list of group tests in an HTML format.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function groupTestList() {
|
|
||||||
$groupTests = parent::groupTestList();
|
|
||||||
$app = $this->params['app'];
|
|
||||||
$plugin = $this->params['plugin'];
|
|
||||||
|
|
||||||
$buffer = "<h3>Core Test Groups:</h3>\n<ul>";
|
|
||||||
$urlExtra = null;
|
|
||||||
if ($app) {
|
|
||||||
$buffer = "<h3>App Test Groups:</h3>\n<ul>";
|
|
||||||
$urlExtra = '&app=true';
|
|
||||||
} else if ($plugin) {
|
|
||||||
$buffer = "<h3>" . Inflector::humanize($plugin) . " Test Groups:</h3>\n<ul>";
|
|
||||||
$urlExtra = '&plugin=' . $plugin;
|
|
||||||
}
|
|
||||||
|
|
||||||
$buffer .= "<li><a href='" . $this->baseURL() . "?group=all$urlExtra'>All tests</a></li>\n";
|
|
||||||
|
|
||||||
foreach ($groupTests as $groupTest) {
|
|
||||||
$buffer .= "<li><a href='" . $this->baseURL() . "?group={$groupTest}" . "{$urlExtra}'>" . $groupTest . "</a></li>\n";
|
|
||||||
}
|
|
||||||
$buffer .= "</ul>\n";
|
|
||||||
echo $buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send the headers necessary to ensure the page is
|
* Send the headers necessary to ensure the page is
|
||||||
* reloaded on every request. Otherwise you could be
|
* reloaded on every request. Otherwise you could be
|
||||||
|
@ -201,9 +171,7 @@ class CakeHtmlReporter extends CakeBaseReporter {
|
||||||
*/
|
*/
|
||||||
protected function _paintLinks() {
|
protected function _paintLinks() {
|
||||||
$show = $query = array();
|
$show = $query = array();
|
||||||
if (!empty($this->params['group'])) {
|
if (!empty($this->params['case'])) {
|
||||||
$show['show'] = 'groups';
|
|
||||||
} elseif (!empty($this->params['case'])) {
|
|
||||||
$show['show'] = 'cases';
|
$show['show'] = 'cases';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,9 +183,7 @@ class CakeHtmlReporter extends CakeBaseReporter {
|
||||||
}
|
}
|
||||||
if (!empty($this->params['case'])) {
|
if (!empty($this->params['case'])) {
|
||||||
$query['case'] = $this->params['case'];
|
$query['case'] = $this->params['case'];
|
||||||
} elseif (!empty($this->params['group'])) {
|
}
|
||||||
$query['group'] = $this->params['group'];
|
|
||||||
}
|
|
||||||
$show = $this->_queryString($show);
|
$show = $this->_queryString($show);
|
||||||
$query = $this->_queryString($query);
|
$query = $this->_queryString($query);
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,7 @@
|
||||||
<li>
|
<li>
|
||||||
<span style="font-size: 18px">App</span>
|
<span style="font-size: 18px">App</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href='<?php echo $groups;?>&app=true'>Test Groups</a></li>
|
<li><a href='<?php echo $cases;?>&app=true'>Tests</a></li>
|
||||||
<li><a href='<?php echo $cases;?>&app=true'>Test Cases</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<?php
|
<?php
|
||||||
|
@ -39,8 +38,7 @@ if (!empty($plugins)):
|
||||||
<li style="padding-top: 10px">
|
<li style="padding-top: 10px">
|
||||||
<span style="font-size: 18px"><?php echo $plugin;?></span>
|
<span style="font-size: 18px"><?php echo $plugin;?></span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href='<?php echo $groups;?>&plugin=<?php echo $pluginPath; ?>'>Test Groups</a></li>
|
<li><a href='<?php echo $cases;?>&plugin=<?php echo $pluginPath; ?>'>Tests</a></li>
|
||||||
<li><a href='<?php echo $cases;?>&plugin=<?php echo $pluginPath; ?>'>Test Cases</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -49,8 +47,7 @@ if (!empty($plugins)):
|
||||||
<li style="padding-top: 10px">
|
<li style="padding-top: 10px">
|
||||||
<span style="font-size: 18px">Core</span>
|
<span style="font-size: 18px">Core</span>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href='<?php echo $groups;?>'>Test Groups</a></li>
|
<li><a href='<?php echo $cases;?>'>Tests</a></li>
|
||||||
<li><a href='<?php echo $cases;?>'>Test Cases</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -40,13 +40,6 @@ class TestManager {
|
||||||
*/
|
*/
|
||||||
protected static $_testExtension = '.test.php';
|
protected static $_testExtension = '.test.php';
|
||||||
|
|
||||||
/**
|
|
||||||
* Extension suffix for group test case files.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected static $_groupExtension = '.group.php';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is this test an AppTest?
|
* Is this test an AppTest?
|
||||||
*
|
*
|
||||||
|
@ -148,35 +141,6 @@ class TestManager {
|
||||||
return $this->run($reporter, $codeCoverage);
|
return $this->run($reporter, $codeCoverage);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs a specific group test file
|
|
||||||
*
|
|
||||||
* @param string $groupTestName GroupTest that you want to run.
|
|
||||||
* @param PHPUnit_Framework_TestListener $reporter Reporter instance to use with the group test being run.
|
|
||||||
* @throws InvalidArgumentException if it was not possible to locate the filename for $groupTestName
|
|
||||||
* @return mixed Results of group test being run.
|
|
||||||
*/
|
|
||||||
public function runGroupTest($groupTestName, $reporter, $codeCoverage = false) {
|
|
||||||
$filePath = $this->_getTestsPath($reporter->params) . DS . strtolower($groupTestName) . $this->getExtension('group');
|
|
||||||
|
|
||||||
if (!file_exists($filePath) || strpos($filePath, '..')) {
|
|
||||||
throw new InvalidArgumentException(sprintf(
|
|
||||||
__('Group test %s cannot be found at %s', true),
|
|
||||||
htmlentities($groupTestName),
|
|
||||||
htmlentities($filePath)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once $filePath;
|
|
||||||
$class = basename($groupTestName);
|
|
||||||
$suite = $this->getTestSuite(sprintf(__('%s group test', true), $class));
|
|
||||||
|
|
||||||
$groupClassName = Inflector::classify($class) . 'GroupTest';
|
|
||||||
$suite->addTestSuite($groupClassName);
|
|
||||||
return $this->run($reporter, $codeCoverage);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs the main testSuite and attaches to it a reporter
|
* Runs the main testSuite and attaches to it a reporter
|
||||||
*
|
*
|
||||||
|
@ -260,35 +224,6 @@ class TestManager {
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of group tests found in the current valid test case path
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
public static function getGroupTestList($params) {
|
|
||||||
$directory = self::_getTestsPath($params);
|
|
||||||
$fileList = self::_getTestGroupFileList($directory);
|
|
||||||
|
|
||||||
$groupTests = array();
|
|
||||||
foreach ($fileList as $groupTestFile) {
|
|
||||||
$groupTests[$groupTestFile] = str_replace(self::$_groupExtension, '', basename($groupTestFile));
|
|
||||||
}
|
|
||||||
sort($groupTests);
|
|
||||||
return $groupTests;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a list of group test files from a given directory
|
|
||||||
*
|
|
||||||
* @param string $directory The directory to get group test files from.
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function &_getTestGroupFileList($directory = '.') {
|
|
||||||
$return = self::_getRecursiveFileList($directory, array('self', '_isTestGroupFile'));
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a recursive list of files from a given directory and matches then against
|
* Gets a recursive list of files from a given directory and matches then against
|
||||||
* a given fileTestFunction, like isTestCaseFile()
|
* a given fileTestFunction, like isTestCaseFile()
|
||||||
|
@ -329,17 +264,6 @@ class TestManager {
|
||||||
return self::_hasExpectedExtension($file, self::$_testExtension);
|
return self::_hasExpectedExtension($file, self::$_testExtension);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Tests if a file has the correct group test extension
|
|
||||||
*
|
|
||||||
* @param string $file
|
|
||||||
* @return boolean Whether $file is a group
|
|
||||||
* @static
|
|
||||||
*/
|
|
||||||
protected static function _isTestGroupFile($file) {
|
|
||||||
return self::_hasExpectedExtension($file, self::$_groupExtension);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if a file has a specific extension
|
* Check if a file has a specific extension
|
||||||
*
|
*
|
||||||
|
@ -353,7 +277,7 @@ class TestManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the given path to the test files depending on a given type of tests (cases, group, ..)
|
* Returns the given path to the test files depending on a given type of tests (core, app, plugin)
|
||||||
*
|
*
|
||||||
* @param array $params Array of parameters for getting test paths.
|
* @param array $params Array of parameters for getting test paths.
|
||||||
* Can contain app, type, and plugin params.
|
* Can contain app, type, and plugin params.
|
||||||
|
@ -363,24 +287,12 @@ class TestManager {
|
||||||
protected static function _getTestsPath($params) {
|
protected static function _getTestsPath($params) {
|
||||||
$result = null;
|
$result = null;
|
||||||
if (!empty($params['app'])) {
|
if (!empty($params['app'])) {
|
||||||
if ($params['show'] == 'cases' || !empty($params['case'])) {
|
$result = APP_TEST_CASES;
|
||||||
$result = APP_TEST_CASES;
|
|
||||||
} else if ($params['show'] == 'groups') {
|
|
||||||
$result = APP_TEST_GROUPS;
|
|
||||||
}
|
|
||||||
} else if (!empty($params['plugin'])) {
|
} else if (!empty($params['plugin'])) {
|
||||||
$_pluginBasePath = APP . 'plugins/' . $params['plugin'] . '/tests';
|
|
||||||
$pluginPath = App::pluginPath($params['plugin']);
|
$pluginPath = App::pluginPath($params['plugin']);
|
||||||
if (file_exists($pluginPath . DS . 'tests')) {
|
$result = $pluginPath . 'tests' . DS . 'cases';
|
||||||
$_pluginBasePath = $pluginPath . DS . 'tests';
|
} else {
|
||||||
}
|
$result = CORE_TEST_CASES;
|
||||||
$result = $_pluginBasePath . DS . $type;
|
|
||||||
} elseif (!empty($params['show'])) {
|
|
||||||
if ($params['show'] == 'cases' || !empty($params['case'])) {
|
|
||||||
$result = CORE_TEST_CASES;
|
|
||||||
} else if ($params['show'] == 'groups') {
|
|
||||||
$result = CORE_TEST_GROUPS;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue