Commit: c899eb4017fab1c4cb3cc0490ea8f49221b83280
Author: zoe slattery <z...@php.net> Sun, 5 Aug 2012 20:46:41 +0100
Parents: f596cdb981324e41f6242f09a3db772502348855
Branches: master
Link:
http://git.php.net/?p=phpruntests.git;a=commitdiff;h=c899eb4017fab1c4cb3cc0490ea8f49221b83280
Log:
assemble redirected tests, ready to add code to run
Changed paths:
A phpt-tests/sample_redirect.phpt
M src/taskScheduler/rtTaskTestGroup.php
M src/testcase/rtTestResults.php
M src/testgroup/rtPhpTestGroup.php
M src/testrun/rtPhpTestRun.php
A tests/rtPhpTestGroupTest.php
A tests/testcase/sections/configurationsections/rtRedirectSectionTest.php
diff --git a/phpt-tests/sample_redirect.phpt b/phpt-tests/sample_redirect.phpt
new file mode 100644
index 0000000..778d42b
--- /dev/null
+++ b/phpt-tests/sample_redirect.phpt
@@ -0,0 +1,13 @@
+--TEST--
+SQLite
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded('pdo_sqlite')) print 'skip'; ?>
+--REDIRECTTEST--
+return array(
+ 'ENV' => array(
+ 'PDOTEST_DSN' => 'sqlite::memory:'
+ ),
+ 'TESTS' => 'ext/pdo/tests'
+ );
+
diff --git a/src/taskScheduler/rtTaskTestGroup.php
b/src/taskScheduler/rtTaskTestGroup.php
index 5c89b65..6f9c665 100644
--- a/src/taskScheduler/rtTaskTestGroup.php
+++ b/src/taskScheduler/rtTaskTestGroup.php
@@ -34,13 +34,8 @@ class rtTaskTestGroup extends rtTask implements
rtTaskInterface
$testGroup = new rtPhpTestGroup($this->runConfiguration,
$this->subDirectory);
$testGroup->runGroup($this->runConfiguration);
$this->result = $testGroup->getResults();
- $this->redirectedTestCases = $testGroup->getRedirectedTestCases();
return true;
}
-
- public function getRedirectedTestCases() {
- return $this->redirectedTestCases;
- }
}
diff --git a/src/testcase/rtTestResults.php b/src/testcase/rtTestResults.php
index 0aa8597..93da986 100644
--- a/src/testcase/rtTestResults.php
+++ b/src/testcase/rtTestResults.php
@@ -24,6 +24,7 @@ class rtTestResults
protected $savedFileNames = array();
protected $title = '';
protected $time = 0;
+ protected $redirectedTest;
public function __construct(rtPhpTest $testCase = null, rtTestStatus
$testStatus = null)
{
@@ -36,6 +37,9 @@ class rtTestResults
$this->title =
implode('',$testCase->getSection('TEST')->getContents());
$this->testStatus = $testCase->getStatus();
$this->testName = $testCase->getName();
+ if($testStatus == 'redirected') {
+ $this->redirectedTest = $testCase;
+ }
} else {
$this->testStatus = $testStatus;
$this->testName = $testStatus->getTestName();
@@ -205,5 +209,8 @@ class rtTestResults
{
$this->time = $time;
}
+ public function getRedirectedTestCase() {
+ return $this->redirectedTest;
+ }
}
?>
diff --git a/src/testgroup/rtPhpTestGroup.php b/src/testgroup/rtPhpTestGroup.php
index b995119..1bcd7f7 100644
--- a/src/testgroup/rtPhpTestGroup.php
+++ b/src/testgroup/rtPhpTestGroup.php
@@ -17,7 +17,6 @@ class rtPhpTestGroup
protected $testDirectory;
protected $testCases;
protected $results;
- protected $redirectedTestCases = array();
public function __construct(rtRuntestsConfiguration $runConfiguration,
$directory)
{
@@ -51,10 +50,10 @@ class rtPhpTestGroup
$this->testCases[] = new rtPhpTest($testFile->getContents(),
$testFile->getTestName(), $testFile->getSectionHeadings(), $runConfiguration,
$testStatus);
} elseif
(in_array("REDIRECTTEST",$testFile->getSectionHeadings())){
//Redirect handler, save the test case for processing after the
main groups have finished.
- $this->redirectedTestCases[] = new
rtPhpTest($testFile->getContents(), $testFile->getTestName(),
$testFile->getSectionHeadings(), $runConfiguration, $testStatus);
+ $redirectedTest= new rtPhpTest($testFile->getContents(),
$testFile->getTestName(), $testFile->getSectionHeadings(), $runConfiguration,
$testStatus);
$testStatus->setTrue('redirected');
$testStatus->setMessage('redirected',
$testFile->getExitMessage());
- $this->results[] = new rtTestResults(null, $testStatus);
+ $this->results[] = new rtTestResults($redirectedTest,
$testStatus);
}else {
$testStatus->setTrue('bork');
$testStatus->setMessage('bork', $testFile->getExitMessage());
@@ -90,8 +89,8 @@ class rtPhpTestGroup
return $this->results;
}
- public function getRedirectedTestCases() {
- return $this->redirectedTestCases;
+ public function getTestCases() {
+ return $this->testCases;
}
}
diff --git a/src/testrun/rtPhpTestRun.php b/src/testrun/rtPhpTestRun.php
index 2e86e19..b3ed91f 100644
--- a/src/testrun/rtPhpTestRun.php
+++ b/src/testrun/rtPhpTestRun.php
@@ -17,7 +17,7 @@ class rtPhpTestRun
{
protected $commandLineArguments;
protected $runConfiguration;
- protected $redirectedTestCases;
+ protected $redirectedTestCases = array();
public function __construct($argv)
{
@@ -71,7 +71,10 @@ class rtPhpTestRun
}
}
- if($this->redirectedTestCases != null) {
+ if(count($this->redirectedTestCases) > 0) {
+ foreach($this->redirectedTestCases as $testCase){
+ echo $testCase->getName() . "\n";
+ }
//For each test case - construct a new group
//Call run_group() again with an array of groups
//
@@ -132,10 +135,17 @@ class rtPhpTestRun
$scheduler->run();
$resultList = $scheduler->getResultList();
-
- //Check to see if there are any redirected tests.
-
- $this->redirectedTestCases =
$scheduler->getRedirectedTestCases();
+
+ //locate any redirected tests in teh group results files.
+ foreach ($resultList as $testGroupResults) {
+
+ foreach ($testGroupResults as $testResult) {
+
+ if($testResult->getStatus() == 'redirected') {
+ $this->redirectedTestCases[] =
$testResult->getRedirectedTestCase();
+ }
+ }
+ }
// create output
$type = null;
diff --git a/tests/rtPhpTestGroupTest.php b/tests/rtPhpTestGroupTest.php
new file mode 100644
index 0000000..1a3ff74
--- /dev/null
+++ b/tests/rtPhpTestGroupTest.php
@@ -0,0 +1,59 @@
+<?php
+require_once dirname(__FILE__) . '/../src/rtAutoload.php';
+require_once dirname(__FILE__) . '/rtTestBootstrap.php';
+
+class rtPHpTestGroupTest extends PHPUnit_Framework_TestCase
+{
+
+ public function setUp() {
+ }
+
+ public function testCreateInstance()
+ {
+ $directory = realpath(dirname(__FILE__) . '/../phpt-tests');
+ $config = rtRuntestsConfiguration::getInstance(array('run-tests.php',
'-p', RT_PHP_PATH, $directory));
+
+ $config->configure();
+
+ $phpTestGroup = new rtPhpTestGroup($config, $directory);
+
+
+ $validTestCaseCount = count($phpTestGroup->getTestCases());
+ $phptFileCount = count(glob($directory . "/*.phpt"));
+ $inValidTestCaseCount = count($phpTestGroup->getResults());
+
+ //PhpTestGroup should divide the test cases into valid tests
(TestCases),
+ //or invalid ones. An invalid test is either one which 'borks' (that
is, the
+ //phpt fails to parse), or a redirected test case. Invalid test cases
are not run
+ //but a TestResults object is created during initialisation of the
TestGroup.
+
+ $this->assertEquals($phptFileCount, $validTestCaseCount +
$inValidTestCaseCount);
+
+ }
+
+ public function testFindRedirect()
+ {
+ $directory = realpath(dirname(__FILE__) . '/../phpt-tests');
+ $config = rtRuntestsConfiguration::getInstance(array('run-tests.php',
'-p', RT_PHP_PATH, $directory));
+
+ $config->configure();
+
+ $phpTestGroup = new rtPhpTestGroup($config, $directory);
+
+
+
+ $inValidTests = $phpTestGroup->getResults();
+
+ foreach($inValidTests as $testResult) {
+ if($testResult->getStatus() == 'redirected') {
+ //If the status has been set to redirected it should
have a valid REDIRECTTEST section
+ $testCase = $testResult->getRedirectedTestCase();
+
$this->assertTrue($testCase->hasSection('REDIRECTTEST'));
+ }
+ }
+ }
+
+
+
+}
+?>
diff --git
a/tests/testcase/sections/configurationsections/rtRedirectSectionTest.php
b/tests/testcase/sections/configurationsections/rtRedirectSectionTest.php
new file mode 100644
index 0000000..1475234
--- /dev/null
+++ b/tests/testcase/sections/configurationsections/rtRedirectSectionTest.php
@@ -0,0 +1,13 @@
+<?php
+require_once dirname(__FILE__) . '../../../../../src/rtAutoload.php';
+
+class rtRedirectSectionTest extends PHPUnit_Framework_TestCase
+{
+ public function testCreateInstance()
+ {
+ $redirectSection = rtRedirectSection::getInstance('REDIRECTTEST',
'contents', 'testname');
+
+ $this->assertEquals('contents', $redirectSection->getContents());
+ }
+}
+?>
--
PHP Quality Assurance Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php