| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 | 
							- <?php
 - 
 - require_once 'Sweety/Runner/AbstractTestRunner.php';
 - 
 - /**
 -  * Runs SimpleTest cases as a group through a JS enabled browser.
 -  * @package Sweety
 -  * @author Chris Corbyn
 -  */
 - class Sweety_Runner_HtmlRunner extends Sweety_Runner_AbstractTestRunner
 - {
 -   
 -   /**
 -    * The path to a valid template file.
 -    * @var string
 -    */
 -   private $_template;
 -   
 -   /**
 -    * The name of the test suite.
 -    * @var string
 -    */
 -   private $_name;
 -   
 -   /**
 -    * Creates a new HtmlRunner scanning the given directories.
 -    * @param string[] $dirs
 -    * @param string $template to load
 -    * @param string $name of the test suite
 -    */
 -   public function __construct(array $dirs, $template, $name)
 -   {
 -       $this->_dirs = $dirs;
 -       $this->_template = $template;
 -       $this->_name = $name;
 -   }
 -   
 -    /**
 -    * Runs all test cases found under the given directories.
 -    * @param string[] $directories to scan for test cases
 -    * @param string To be prepended to class names
 -    * @return int
 -    */
 -   public function runAllTests($dirs = array())
 -   {
 -     //We don't want test output to be cached
 -     header("Cache-Control: no-cache, must-revalidate");
 -     header("Pragma: no-cache");
 -     header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
 -       
 -     if (empty($dirs))
 -     {
 -       $dirs = $this->_dirs;
 -     }
 -     
 -     $testCases = $this->findTests($dirs);
 -     foreach ($testCases as $k => $testCase)
 -     {
 -       if (preg_match($this->getIgnoredClassRegex(), $testCase))
 -       {
 -         unset($testCases[$k]);
 -       }
 -     }
 -     
 -     usort($testCases, array($this, '_sort'));
 -     
 -     $vars = array(
 -       //String
 -       'testCases' => $testCases,
 -       //String
 -       'suiteName' => $this->_name,
 -        // testCase => pass | fail | running
 -       'runTests' => array(),
 -       //Integer
 -       'caseCount' => 0,
 -       //Integer
 -       'runCount' => 0,
 -       //Integer
 -       'passCount' => 0,
 -       //Integer
 -       'failCount' => 0,
 -       //Integer
 -       'exceptionCount' => 0,
 -       // type => pass | fail | exception | output | internal, path => testCase, text => ...
 -       'messages' => array(),
 -       // pass | fail
 -       'result' => 'idle'
 -     );
 -     
 -     if (isset($_REQUEST['runtests']))
 -     {
 -       $reporter = $this->getReporter();
 -       $reporter->setTemplateVars($vars);
 -       
 -       if (!$reporter->isStarted())
 -       {
 -         $reporter->start();
 -       }
 -       
 -       $this->_runTestList((array)$_REQUEST['runtests'], $reporter);
 -       
 -       $reporter->finish();
 -     }
 -     else
 -     {
 -       foreach ($testCases as $testCase)
 -       {
 -         $vars['runTests'][$testCase] = 'idle'; //Show all checked by default
 -       }
 -     }
 -     
 -     $this->_render($vars);
 -   }
 -   
 -   /**
 -    * Run tests in the given array using the REST API (kind of).
 -    * @param string[] $tests
 -    * @param Sweety_Reporter $reporter
 -    * @return int
 -    */
 -   protected function _runTestList(array $tests, Sweety_Reporter $reporter)
 -   {
 -     $protocol = !empty($_SERVER['HTTPS']) ? 'https://' : 'http://';
 -     
 -     //Most likely a HTTP/1.0 server not supporting HOST header
 -     $server = !empty($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : '127.0.0.1';
 -     
 -     $path = '/';
 -     if (!empty($_SERVER['REQUEST_URI']))
 -     {
 -       $path = preg_replace('/\?.*$/sD', '', $_SERVER['REQUEST_URI']);
 -     }
 -     
 -     $baseUrl = $protocol . $server . $path;
 -     
 -     foreach ($tests as $testCase)
 -     {
 -       $url = $baseUrl . '?test=' . $testCase . '&format=xml';
 -       $xml = file_get_contents($url);
 -       $this->parseXml($xml, $testCase);
 -     }
 -     
 -     return 0;
 -   }
 -   
 -   /**
 -    * Renders the view for the suite.
 -    * @param string[] $templateVars
 -    */
 -   protected function _render($vars = array())
 -   {
 -     foreach ($vars as $k => $v)
 -     {
 -       $$k = $v;
 -     }
 -     
 -     require_once $this->_template;
 -   }
 -   
 - }
 
 
  |