Author: Sebastian Bergmann (sebastian@phpunit.de)
Inheritance: extends PHPUnit_Util_Skeleton
Esempio n. 1
0
 /**
  */
 public static function main($exit = TRUE)
 {
     $arguments = self::handleArguments();
     $runner = new PHPUnit_TextUI_TestRunner();
     if (is_object($arguments['test']) && $arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $arguments['test'];
     } else {
         $suite = $runner->getTest($arguments['test'], $arguments['testFile'], $arguments['syntaxCheck']);
     }
     if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning && strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) {
         $message = $suite->testAt(0)->getMessage();
         $start = strpos($message, '"') + 1;
         $end = strpos($message, '"', $start);
         $className = substr($message, $start, $end - $start);
         require_once 'PHPUnit/Util/Skeleton/Test.php';
         $skeleton = new PHPUnit_Util_Skeleton_Test($className, $arguments['testFile']);
         $result = $skeleton->generate(TRUE);
         if (!$result['incomplete']) {
             eval(str_replace(array('<?php', '?>'), '', $result['code']));
             $suite = new PHPUnit_Framework_TestSuite($arguments['test'] . 'Test');
         }
     }
     if ($arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     try {
         $result = $runner->doRun($suite, $arguments);
     } catch (Exception $e) {
         throw new RuntimeException('Could not create and run test suite: ' . $e->getMessage());
     }
     if ($exit) {
         if ($result->wasSuccessful()) {
             exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
         } else {
             if ($result->errorCount() > 0) {
                 exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
             } else {
                 exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
             }
         }
     }
 }
Esempio n. 2
0
 /**
  * Ugly hack to get around PHPUnit having a hard coded classname for the Runner. :(
  *
  * @param array   $argv
  * @param boolean $exit
  */
 public function run(array $argv, $exit = true)
 {
     $this->handleArguments($argv);
     $runner = $this->getRunner($this->arguments['loader']);
     if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $this->arguments['test'];
     } else {
         $suite = $runner->getTest($this->arguments['test'], $this->arguments['testFile'], $this->arguments['syntaxCheck']);
     }
     if (count($suite) == 0) {
         $skeleton = new PHPUnit_Util_Skeleton_Test($suite->getName(), $this->arguments['testFile']);
         $result = $skeleton->generate(true);
         if (!$result['incomplete']) {
             eval(str_replace(array('<?php', '?>'), '', $result['code']));
             $suite = new PHPUnit_Framework_TestSuite($this->arguments['test'] . 'Test');
         }
     }
     if ($this->arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     unset($this->arguments['test']);
     unset($this->arguments['testFile']);
     try {
         $result = $runner->doRun($suite, $this->arguments);
     } catch (PHPUnit_Framework_Exception $e) {
         print $e->getMessage() . "\n";
     }
     if ($exit) {
         if (isset($result) && $result->wasSuccessful()) {
             exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
         } else {
             if (!isset($result) || $result->errorCount() > 0) {
                 exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
             } else {
                 exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
             }
         }
     }
 }
Esempio n. 3
0
    /**
     * @param array   $argv
     * @param boolean $exit
     */
    public function run(array $argv, $exit = TRUE)
    {
        $this->handleArguments($argv);
        
        // *** BEGIN ezp custom code BEGIN ***
        if( isset($this->arguments['list-tests']) )
        {
            $this->listTests( $this->suite );
            exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
        }
        // *** END ezp custom code END***
        

        $runner = new PHPUnit_TextUI_TestRunner($this->arguments['loader']);

        // *** BEGIN ezp custom code BEGIN ***
        // **Following code is removed compared to the original implementation
        /*if (is_object($this->arguments['test']) &&
            $this->arguments['test'] instanceof PHPUnit_Framework_Test) {
            $suite = $this->arguments['test'];
        } else {
            $suite = $runner->getTest(
              $this->arguments['test'],
              $this->arguments['testFile'],
              $this->arguments['syntaxCheck']
            );
        }*/
        // **And this line is added
        $suite = $this->suite;
        // *** END ezp custom code END ***

        if (count($suite) == 0) {
            $skeleton = new PHPUnit_Util_Skeleton_Test(
              $suite->getName(),
              $this->arguments['testFile']
            );

            $result = $skeleton->generate(TRUE);

            if (!$result['incomplete']) {
                eval(str_replace(array('<?php', '?>'), '', $result['code']));
                $suite = new PHPUnit_Framework_TestSuite(
                  $this->arguments['test'] . 'Test'
                );
            }
        }

        if ($this->arguments['listGroups']) {
            PHPUnit_TextUI_TestRunner::printVersionString();

            print "Available test group(s):\n";

            $groups = $suite->getGroups();
            sort($groups);

            foreach ($groups as $group) {
                print " - $group\n";
            }

            exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
        }

        unset($this->arguments['test']);
        unset($this->arguments['testFile']);

        try {
            $result = $runner->doRun($suite, $this->arguments);
        }

        catch (PHPUnit_Framework_Exception $e) {
            print $e->getMessage() . "\n";
        }

        if ($exit) {
            if (isset($result) && $result->wasSuccessful()) {
                exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
            }

            else if (!isset($result) || $result->errorCount() > 0) {
                exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
            }

            else {
                exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
            }
        }
    }
Esempio n. 4
0
 public function execute($config_group = 'default')
 {
     ini_set('memory_limit', '512M');
     $this->_get_phpunit_options($config_group);
     require_once Kohana::find_file('vendor', 'PHPUnit/Util/Filter');
     require_once Kohana::find_file('vendor', 'PHPUnit/Framework/TestSuite');
     require_once Kohana::find_file('vendor', 'PHPUnit/TextUI/TestRunner');
     $this->_whitelist();
     $this->_blacklist();
     // We want all warnings so PHPUnit can take care of them.
     error_reporting(E_ALL | E_STRICT);
     // Hand control of errors and exceptions to PHPUnit
     restore_exception_handler();
     restore_error_handler();
     // Turn off the output biffer.
     ob_end_flush();
     //define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main');
     $this->_get_test_suite();
     $arguments = $this->_phpunit_options;
     $runner = new PHPUnit_TextUI_TestRunner();
     if (is_object($arguments['test']) and $arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $arguments['test'];
     } else {
         $suite = $runner->getTest($arguments['test'], $arguments['testFile'], $arguments['syntaxCheck']);
     }
     if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning and strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) {
         $message = $suite->testAt(0)->getMessage();
         $start = strpos($message, '"') + 1;
         $end = strpos($message, '"', $start);
         $className = substr($message, $start, $end - $start);
         require Kohana::find_file('vendor', 'PHPUnit/Util/Skeleton/Test');
         $skeleton = new PHPUnit_Util_Skeleton_Test($className, $arguments['testFile']);
         $result = $skeleton->generate(TRUE);
         if (!$result['incomplete']) {
             eval(str_replace(array('<?php', '?>'), '', $result['code']));
             $suite = new PHPUnit_Framework_TestSuite($arguments['test'] . 'Test');
         }
     }
     if ($arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     try {
         $result = $runner->doRun($suite, $arguments);
     } catch (Exception $e) {
         throw new RuntimeException('Could not create and run test suite: ' . $e->getMessage());
     }
     if ($result->wasSuccessful()) {
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     } else {
         if ($result->errorCount() > 0) {
             exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
         } else {
             exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
         }
     }
 }
Esempio n. 5
0
 /**
  * @param array   $argv
  * @param boolean $exit
  */
 public function run(array $argv, $exit = TRUE)
 {
     $this->handleArguments($argv);
     $runner = new PHPUnit_TextUI_TestRunner($this->arguments['loader']);
     if (is_object($this->arguments['test']) && $this->arguments['test'] instanceof PHPUnit_Framework_Test) {
         $suite = $this->arguments['test'];
     } else {
         $suite = $runner->getTest($this->arguments['test'], $this->arguments['testFile']);
     }
     if ($suite->testAt(0) instanceof PHPUnit_Framework_Warning && strpos($suite->testAt(0)->getMessage(), 'No tests found in class') !== FALSE) {
         $message = $suite->testAt(0)->getMessage();
         $start = strpos($message, '"') + 1;
         $end = strpos($message, '"', $start);
         $className = substr($message, $start, $end - $start);
         $skeleton = new PHPUnit_Util_Skeleton_Test($className, $this->arguments['testFile']);
         $result = $skeleton->generate(TRUE);
         if (!$result['incomplete']) {
             eval(str_replace(array('<?php', '?>'), '', $result['code']));
             $suite = new PHPUnit_Framework_TestSuite($this->arguments['test'] . 'Test');
         }
     }
     if ($this->arguments['listGroups']) {
         PHPUnit_TextUI_TestRunner::printVersionString();
         print "Available test group(s):\n";
         $groups = $suite->getGroups();
         sort($groups);
         foreach ($groups as $group) {
             print " - {$group}\n";
         }
         exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
     }
     unset($this->arguments['test']);
     unset($this->arguments['testFile']);
     try {
         $result = $runner->doRun($suite, $this->arguments);
     } catch (PHPUnit_Framework_Exception $e) {
         print $e->getMessage() . "\n";
     }
     if ($exit) {
         if (isset($result) && $result->wasSuccessful()) {
             exit(PHPUnit_TextUI_TestRunner::SUCCESS_EXIT);
         } else {
             if (!isset($result) || $result->errorCount() > 0) {
                 exit(PHPUnit_TextUI_TestRunner::EXCEPTION_EXIT);
             } else {
                 exit(PHPUnit_TextUI_TestRunner::FAILURE_EXIT);
             }
         }
     }
 }