g2 Fri May 15 23:11:21 2009 UTC
Added files:
/phpruntests/tests/testcase/sections/executablesections
rtFileExternalSectionTest.php
Modified files:
/phpruntests/src/testcase/sections/executablesections
rtFileExternalSection.php
_rtFileExternalSection.php
/phpruntests/src testClassMap.php
Log:
phpruntests - added test-case for file-external-section
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/sections/executablesections/rtFileExternalSection.php?r1=1.1&r2=1.2&diff_format=u
Index:
phpruntests/src/testcase/sections/executablesections/rtFileExternalSection.php
diff -u
phpruntests/src/testcase/sections/executablesections/rtFileExternalSection.php:1.1
phpruntests/src/testcase/sections/executablesections/rtFileExternalSection.php:1.2
---
phpruntests/src/testcase/sections/executablesections/rtFileExternalSection.php:1.1
Fri May 15 09:58:21 2009
+++
phpruntests/src/testcase/sections/executablesections/rtFileExternalSection.php
Fri May 15 23:11:20 2009
@@ -12,45 +12,114 @@
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @link http://qa.php.net/
*/
-class rtFileExternalSection extends rtFileSection
+class rtFileExternalSection extends rtExecutableSection
{
-
+
+ /**
+ * @var $twoBlankLines string
+ */
+ private $twoBlankLines = '\r?\n\r?\n';
+
+ /**
+ * sets the executable filename
+ *
+ * @param $testName string the filename
+ * @return void
+ */
+ public function setExecutableFileName($testName)
+ {
+ $this->fileName = $testName.".php";
+ }
+
+ /**
+ * runs a test-case and returns the status
+ *
+ * @param $testCase rtPhpTest
+ * @param $runConfiguration rtRuntestsConfiguration
+ * @return $status Array
+ */
public function run(rtPhpTest $testCase, rtRuntestsConfiguration
$runConfiguration)
{
- if ($this->copyExternalFileContent() === true) {
+ $this->status = array();
+ $this->writeExecutableFile();
- return parent::run($testCase, $runConfiguration);
+ $this->copyExternalFileContent();
+
+ $phpExecutable = $testCase->testConfiguration->getPhpExecutable();
+
+ // The CGI excutable is null if it is not available, check and SKIP if
necessary
+ if (is_null($phpExecutable)) {
+ $this->status['skip'] = 'The CGI executable is unavailable';
+ return $this->status;
+ }
+
+ $phpCommand = $phpExecutable;
+ $phpCommand .= ' '.
$testCase->testConfiguration->getPhpCommandLineArguments();
+ $phpCommand .= ' -f '.$this->fileName;
+ $phpCommand .= '
'.$testCase->testConfiguration->getTestCommandLineArguments();
+ $phpCommand .= ' 2>&1
'.$testCase->testConfiguration->getInputFileString();
+
+
+ $PhpRunner = new rtPhpRunner($phpCommand,
+ $testCase->testConfiguration->getEnvironmentVariables(),
+ $runConfiguration->getSetting('WorkingDirectory')
+ );
+
+ try {
+
+ $this->output = $PhpRunner->runphp();
+
+ // If it's a CGI test sort the headers out here
+ if (substr($phpExecutable, -2) == '-C') {
+
+ if (preg_match("/^(.*?)$this->twoBlankLines(.*)/s",
$this->output, $match)) {
+ $this->output = $match[2];
+ $this->headers = $match[1];
+ }
+ }
+ } catch (rtPhpRunnerException $e) {
+
+ $this->status['fail'] = $e->getMessage();
}
return $this->status;
}
-
- private function copyExternalFileContent()
+ /**
+ * @return string
+ */
+ public function getHeaders()
{
- if (sizeof($this->sectionContents) == 1) {
-
- $file = $this->sectionContents[0];
-
- // don't allow tests to retrieve files from anywhere but this
subdirectory
- $file = dirname($this->fileName).'/'.trim(str_replace('..', '',
$file));
-
- if (file_exists($file)) {
+ return $this->headers;
+ }
+
+ /**
+ * checks and copies the content of the external file to the testfile
+ *
+ * @return boolean
+ */
+ protected function copyExternalFileContent()
+ {
+ if (sizeof($this->sectionContents) != 1) {
+
+ $this->status['fail'] = 'One file per testcase permitted.';
+ return false;
+ }
+
+ $c = $this->sectionContents[0];
+
+ // don't allow tests to retrieve files from anywhere but this
subdirectory
+ $file = dirname($this->fileName).'/'.trim(str_replace('..', '', $c));
- $this->sectionContents[0] = file_get_contents($file);
- return true;
+ if (!file_exists($file)) {
+
+ $this->status['fail'] = 'Can not open external file '.$file;
+ return false;
+ }
- } else {
-
- $this->status['fail'] = 'Can not open external file
'.$file;
- }
-
- } else {
-
- $this->status['fail'] = 'One file per testcase permitted.';
- }
-
- return false;
+ $content = file_get_contents($file);
+ file_put_contents($this->fileName, $content);
+ return true;
}
}
?>
http://cvs.php.net/viewvc.cgi/phpruntests/src/testcase/sections/executablesections/_rtFileExternalSection.php?r1=1.1&r2=1.2&diff_format=u
Index:
phpruntests/src/testcase/sections/executablesections/_rtFileExternalSection.php
diff -u
phpruntests/src/testcase/sections/executablesections/_rtFileExternalSection.php:1.1
phpruntests/src/testcase/sections/executablesections/_rtFileExternalSection.php:1.2
---
phpruntests/src/testcase/sections/executablesections/_rtFileExternalSection.php:1.1
Fri May 15 09:58:21 2009
+++
phpruntests/src/testcase/sections/executablesections/_rtFileExternalSection.php
Fri May 15 23:11:20 2009
@@ -3,7 +3,6 @@
* rtFileExternalSection
* Executes the code in the --FILE_EXTERNAL-- section
*
- *
* @category Testing
* @package RUNTESTS
* @author Zoe Slattery <[email protected]>
@@ -13,82 +12,32 @@
* @license http://www.php.net/license/3_01.txt PHP License 3.01
* @link http://qa.php.net/
*/
-class rtFileExternalSection extends rtExecutableSection
+class rtFileExternalSection extends rtFileSection
{
- private $twoBlankLines = '\r?\n\r?\n';
-
- public function setExecutableFileName($testName)
- {
- $this->fileName = $testName.".php";
- }
public function run(rtPhpTest $testCase, rtRuntestsConfiguration
$runConfiguration)
{
- $this->status = array();
- $this->writeExecutableFile();
-
- $this->copyExternalFileContent();
-
- $phpExecutable = $testCase->testConfiguration->getPhpExecutable();
-
- // The CGI excutable is null if it is not available, check and SKIP if
necessary
- if ($phpExecutable != null) {
- $phpCommand = $phpExecutable;
- $phpCommand .= ' '.
$testCase->testConfiguration->getPhpCommandLineArguments();
- $phpCommand .= ' -f '.$this->fileName;
- $phpCommand .= '
'.$testCase->testConfiguration->getTestCommandLineArguments();
- $phpCommand .= ' 2>&1
'.$testCase->testConfiguration->getInputFileString();
-
-
- $PhpRunner = new rtPhpRunner($phpCommand,
- $testCase->testConfiguration->getEnvironmentVariables(),
- $runConfiguration->getSetting('WorkingDirectory')
- );
-
- try {
- $this->output = $PhpRunner->runphp();
-
- //If it's a CGI test sort the headers out here
- if(substr($phpExecutable, -2) == '-C') {
-
- if (preg_match("/^(.*?)$this->twoBlankLines(.*)/s",
$this->output, $match)) {
- $this->output = $match[2];
- $this->headers = $match[1];
- }
-
- }
+ if ($this->copyExternalFileContent() === true) {
-
- } catch (rtPhpRunnerException $e) {
- $this->status['fail'] = $e->getMessage();
- }
- } else {
- $this->status['skip'] = 'The CGI executable is unavailable';
+ return parent::run($testCase, $runConfiguration);
}
return $this->status;
}
-
-
- public function getHeaders()
- {
- return $this->headers;
- }
-
+
private function copyExternalFileContent()
{
if (sizeof($this->sectionContents) == 1) {
- $c = $this->sectionContents[0];
+ $file = $this->sectionContents[0];
// don't allow tests to retrieve files from anywhere but this
subdirectory
- $file = dirname($this->fileName).'/'.trim(str_replace('..', '',
$c));
+ $file = dirname($this->fileName).'/'.trim(str_replace('..', '',
$file));
if (file_exists($file)) {
- $content = file_get_contents($file);
- file_put_contents($this->fileName, $content);
+ $this->sectionContents[0] = file_get_contents($file);
return true;
} else {
http://cvs.php.net/viewvc.cgi/phpruntests/src/testClassMap.php?r1=1.3&r2=1.4&diff_format=u
Index: phpruntests/src/testClassMap.php
diff -u phpruntests/src/testClassMap.php:1.3
phpruntests/src/testClassMap.php:1.4
--- phpruntests/src/testClassMap.php:1.3 Wed May 13 20:13:46 2009
+++ phpruntests/src/testClassMap.php Fri May 15 23:11:20 2009
@@ -57,6 +57,7 @@
'rtIniSection' =>
'testcase/sections/configurationsections/rtIniSection.php',
'rtCleanSection' =>
'testcase/sections/executablesections/rtCleanSection.php',
'rtFileSection' =>
'testcase/sections/executablesections/rtFileSection.php',
+ 'rtFileExternalSection' =>
'testcase/sections/executablesections/rtFileExternalSection.php',
'rtSkipIfSection' =>
'testcase/sections/executablesections/rtSkipIfSection.php',
'rtCreditsSection' =>
'testcase/sections/informationsections/rtCreditsSection.php',
'rtTestHeaderSection' =>
'testcase/sections/informationsections/rtTestHeaderSection.php',
http://cvs.php.net/viewvc.cgi/phpruntests/tests/testcase/sections/executablesections/rtFileExternalSectionTest.php?view=markup&rev=1.1
Index:
phpruntests/tests/testcase/sections/executablesections/rtFileExternalSectionTest.php
+++
phpruntests/tests/testcase/sections/executablesections/rtFileExternalSectionTest.php
<?php
require_once 'PHPUnit/Framework.php';
require_once dirname(__FILE__) . '../../../../../src/rtAutoload.php';
class rtFileExternalSectionTest extends PHPUnit_Framework_TestCase
{
public function testCreateInstance()
{
$fileSection = new rtFileExternalSection('FILE_EXTERNAL',
array('<?php', 'echo "hello world";', '?>'));
$code = $fileSection->getContents();
$this->assertEquals('<?php', $code[0]);
}
public function testTooMuchFiles()
{
$wrapper = new rtFileExternalSectionTestWrapper('FILE_EXTERNAL',
array('file1','file2'));
$this->assertFalse($wrapper->copyExternalFileContentTest());
$status = $wrapper->getStatus();
$this->assertEquals('One file per testcase permitted.',
$status['fail']);
}
public function testNotExistingFile()
{
$wrapper = new rtFileExternalSectionTestWrapper('FILE_EXTERNAL',
array('file1'));
$this->assertFalse($wrapper->copyExternalFileContentTest());
$status = $wrapper->getStatus();
$this->assertEquals('Can not open external file /file1',
$status['fail']);
}
}
/**
* test-wrapper to acces protected methods and members
*/
class rtFileExternalSectionTestWrapper extends rtFileExternalSection
{
public function copyExternalFileContentTest()
{
return parent::copyExternalFileContent();
}
public function getStatus()
{
return $this->status;
}
}
?>
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php