Hello Timm,

include files in the tests should be named .inc or similar because
otherwiese make clean will erase them. Could you please rename this one?

marcus

Sunday, February 6, 2005, 2:35:10 PM, you wrote:

> thekid          Sun Feb  6 08:35:10 2005 EDT

>   Added files:                 
>     /php-src/ext/sybase_ct/tests        index.php 
>   Log:
>   - Initial release
>   # Used for being able to run .phpt-files in a webserver environment
>   # Incomplete and pretty basic but serves its purpose ATM
  

> http://cvs.php.net/co.php/php-src/ext/sybase_ct/tests/index.php?r=1.1&p=1
> Index: php-src/ext/sybase_ct/tests/index.php
> +++ php-src/ext/sybase_ct/tests/index.php
> <?php
> /* This file is part of PHP test framework for ext/sybase_ct
>  *
>  * $Id: index.php,v 1.1 2005/02/06 13:35:09 thekid Exp $
>  */

>   // {{{ class PHPTExpectancy
>   //     Abstract base class for expectancies
>   class PHPTExpectancy {
>     var 
>       $expected = '';
      
>     function PHPTExpectancy($expected) {
>       $this->expected= $expected;
>     }

>     function matches($output) { }
>   }
>   // }}}

>   // {{{ class PHPTRegexExpectancy
>   //     Expectancy class for regular expressions
>   class PHPTRegexExpectancy extends PHPTExpectancy {
    
>     function matches($output) { 
>       return preg_match('�^'.strtr(preg_quote(rtrim($this->expected), '�'), 
> array(
>         '%s' => '(.+)',
>         '%d' => '([0-9]+)'
>       )).'�', $output);
>     }
>   }
>   // }}}

>   // {{{ class PHPTTest
>   //     Represents a single .phpt-style test
>   class PHPTTest {
>     var
>       $name         = '',
>       $description  = '',
>       $skipif       = '',
>       $code         = '',
>       $expectancy   = NULL,
>       $output       = '';

>     function &fromFile($filename) {
>       $fd= fopen($filename, 'r');
      
>       $sections= array();
>       $current= NULL;
>       while (!feof($fd)) {
>         $line= fgets($fd, 0xFFFF);
>         if (1 == sscanf($line, '--%[^-]--', $section)) {
>           $sections[$section]= '';
>           $current= $section;
>           continue;
>         }
>         $sections[$current].= $line;
>       }
>       fclose($fd);
      
>       // Create instance from read data and return it
>       $t= &new PHPTTest(); {
>         $t->name= substr(realpath($filename), 0, -1);
>         $t->description= rtrim($sections['TEST']);
>         $t->skipif= $sections['SKIPIF'];
>         $t->code= $sections['FILE'];
        
>         if (isset($sections['EXPECTF'])) {
>           $t->expectancy= &new PHPTRegexExpectancy($sections['EXPECTF']);
>         } else {
>           // XXX TBI XXX
>         }
>       }      
>       return $t;
>     }
    
>     function onError($errno, $errstr, $errfile, $errline) {
>       static $names= array(
>         E_NOTICE    => 'Notice',
>         E_WARNING   => 'Warning'
>       );
      
>       printf(
>         "\n%s: %s in %s on line %d\n", 
>         $names[$errno], 
>         $errstr,
>         $this->name,
>         $errline
>       );
>     }
    
>     function run() {

>       // Precondition check - will die if test needs to be skipped
>       eval('?>'.$this->skipif);
      
>       set_error_handler(array(&$this, 'onError')); {
>         error_reporting(E_ALL);

>         ob_start();
>         eval('?>'.$this->code);
>         $this->output= rtrim(ob_get_contents());
>         ob_end_clean();
>       } restore_error_handler();
      
>       return $this->expectancy->matches($this->output);
>     }
>   }
>   // }}}
  
>   // {{{ main
>   if (isset($_GET['phpinfo'])) {
>     phpinfo((int)$_GET['phpinfo']);

>     echo '<a href="?">Home</a>';
>     exit();
>   }

>   echo <<<__
>   <html>
>     <head>
>       <title>PHPT Test</title>
>       <style type="text/css">
>         body {
>           background-color: #ffffff; 
>           color: #000000;
>           font-size: 75%;
>         }
>         body, td, th, h1, h2 {
>           font-family: sans-serif;
>         }
>         h1 {
>           font-size: 150%;
>         }
>         h2 {
>           font-size: 125%;
>         }
>         .header {
>           background: url(?=PHPE9568F34-D428-11d2-A769-00AA001ACF42);
>           background-position: right center;
>           background-repeat: no-repeat;
>           min-height: 70px;
>           background-color: #9999cc;
>           padding: 4px;
>           padding-right: 120px;
>           border: 1px solid #000000;
>         }
>         hr {
>           width: 600px; 
>           background-color: #cccccc; 
>           border: 0px; 
>           height: 1px; 
>           color: #000000;
>         }
>       </style>
>     </head>
>     <body>
> __;

>   $test= basename($_SERVER['QUERY_STRING']);
>   if ($test && file_exists($test)) {
>     $t= &PHPTTest::fromFile($test);
>     echo '<div class="header"><h1>'.basename($t->name), ': ', 
> $t->description.'</h1></div>';
>     echo '<a href="?">Back to test suite</a>';
>     flush();

>     // Run the test
>     $result= $t->run();
    
>     // Evaluate results
>     if ($result) {
>       echo '<h2>Passed</h2>';
>     } else {
>       echo '<h2>Failed</h2><hr/>';

>       echo '<h3>Actual output</h3>';
>       echo '<xmp>', $t->output, '</xmp><hr/>';

>       echo '<h3>Expectancy</h3>';
>       echo '<xmp>', $t->expectancy->expected, '</xmp>';
>     }
    
>     echo '<hr/>';
>     exit();
>   }
  
>   echo '<div class="header"><h1>Test suite</h1></div>';
  
>   // phpinfo() links
>   echo 'phpinfo(): ';
>   foreach (array(
>     1   => 'General', 
>     4   => 'Configuration', 
>     8   => 'Modules'  
>   ) as $const => $name) {
>     printf('<a href="?phpinfo=%d">%s</a> | ', $const, $name);
>   }
>   echo '<a href="?phpinfo=-1">(All)</a>';
  
>   echo '<h2>Select one to run</h2>';
>   echo '<ul>';
>   $d= dir(dirname(__FILE__));
>   while ($entry= $d->read()) {
>     if ('.phpt' != substr($entry, -5)) continue;
>     echo '<li><a href="?'.$entry.'">'.$entry.'</a></li>';
>   }
>   $d->close();
>   echo '</ul><hr/>';
  
>   echo <<<__
>     </body>
>   </html>
> __;
>   // }}}
?>>




-- 
Best regards,
 Marcus                            mailto:[EMAIL PROTECTED]

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to