Changeset 148

Show
Ignore:
Timestamp:
02/13/07 11:15:53 (2 years ago)
Author:
mrook
Message:

Implement PHPUnit3 support (experimental!)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/classes/phing/tasks/ext/phpunit/BatchTest.php

    r142 r148  
    2424/** 
    2525 * Scans a list of files given by the fileset attribute, extracts 
    26  * all subclasses of PHPUnit2_Framework_TestCase. 
     26 * all subclasses of PHPUnit(2)_Framework_TestCase. 
    2727 * 
    2828 * @author Michiel Rook <michiel.rook@gmail.com> 
     
    131131         
    132132        /** 
    133          * Filters an array of classes, removes all classes that are not subclasses of PHPUnit2_Framework_TestCase, 
     133         * Checks wheter $input is a testcase subclass. 
     134         */ 
     135        private function isTestCase($input) 
     136        { 
     137                return is_subclass_of($input, 'PHPUnit2_Framework_TestCase') || is_subclass_of($input, 'PHPUnit_Framework_TestCase'); 
     138        } 
     139         
     140        /** 
     141         * Filters an array of classes, removes all classes that are not subclasses of PHPUnit(2)_Framework_TestCase, 
    134142         * or classes that are declared abstract 
    135143         */ 
     
    138146                $reflect = new ReflectionClass($input); 
    139147                 
    140                 return is_subclass_of($input, 'PHPUnit2_Framework_TestCase') && (!$reflect->isAbstract()); 
     148                return $this->isTestCase($input) && (!$reflect->isAbstract()); 
    141149        } 
    142150 
  • trunk/classes/phing/tasks/ext/phpunit/FormatterElement.php

    r142 r148  
    2020 */ 
    2121 
    22 require_once 'phing/tasks/ext/phpunit/XMLPHPUnit2ResultFormatter.php'; 
    23 require_once 'phing/tasks/ext/phpunit/PlainPHPUnit2ResultFormatter.php'; 
    2422require_once 'phing/system/io/PhingFile.php'; 
    2523 
     
    4745        { 
    4846                $this->type = $type; 
    49  
     47                 
     48                if ($this->type == "summary") 
     49                { 
     50                        if (PHPUnitUtil::$installedVersion == 3) 
     51                        { 
     52                                require_once 'phing/tasks/ext/phpunit/phpunit3/SummaryPHPUnit3ResultFormatter.php'; 
     53                                $this->formatter = new SummaryPHPUnit3ResultFormatter(); 
     54                        } 
     55                        else                     
     56                        { 
     57                                require_once 'phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php'; 
     58                                $this->formatter = new SummaryPHPUnit2ResultFormatter(); 
     59                        } 
     60                } 
     61                else 
    5062                if ($this->type == "xml") 
    5163                { 
    5264                        $destFile = new PhingFile($this->toDir, 'testsuites.xml'); 
    53                         $this->formatter = new XMLPHPUnit2ResultFormatter(); 
     65 
     66                        if (PHPUnitUtil::$installedVersion == 3) 
     67                        { 
     68                                require_once 'phing/tasks/ext/phpunit/phpunit3/XMLPHPUnit3ResultFormatter.php'; 
     69                                $this->formatter = new XMLPHPUnit3ResultFormatter(); 
     70                        } 
     71                        else 
     72                        { 
     73                                require_once 'phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php'; 
     74                                $this->formatter = new XMLPHPUnit2ResultFormatter(); 
     75                        } 
    5476                } 
    5577                else 
    5678                if ($this->type == "plain") 
    5779                { 
    58                         $this->formatter = new PlainPHPUnit2ResultFormatter(); 
     80                        if (PHPUnitUtil::$installedVersion == 3) 
     81                        { 
     82                                require_once 'phing/tasks/ext/phpunit/phpunit3/PlainPHPUnit3ResultFormatter.php'; 
     83                                $this->formatter = new PlainPHPUnit3ResultFormatter(); 
     84                        } 
     85                        else 
     86                        { 
     87                                require_once 'phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php'; 
     88                                $this->formatter = new PlainPHPUnit2ResultFormatter(); 
     89                        } 
    5990                } 
    6091                else 
  • trunk/classes/phing/tasks/ext/phpunit/PHPUnit2Task.php

    r142 r148  
    2020 */ 
    2121 
     22require_once 'PEAR/Registry.php'; 
    2223require_once 'phing/Task.php'; 
    2324require_once 'phing/system/io/PhingFile.php'; 
     
    5354         */ 
    5455        function init() { 
    55                 include_once 'PHPUnit2/Util/Filter.php'; 
    56                 if (!class_exists('PHPUnit2_Util_Filter')) { 
    57                         throw new BuildException("PHPUnit2Task depends on PEAR PHPUnit2 package being installed.", $this->getLocation()); 
    58                 } 
    59                  
    6056                if (version_compare(PHP_VERSION, '5.0.3') < 0) { 
    6157                    throw new BuildException("PHPUnit2Task requires PHP version >= 5.0.3.", $this->getLocation()); 
    6258                } 
    63  
     59                 
     60                /** 
     61                 * Ugly hack to get PHPUnit version number 
     62                 */ 
     63                $config = new PEAR_Config(); 
     64                $registry = new PEAR_Registry($config->get('php_dir')); 
     65                $pkg_info = $registry->_packageInfo("PHPUnit", null, "pear.phpunit.de"); 
     66                 
     67                if ($pkg_info != NULL) 
     68                { 
     69                        var_dump($pkg_info['version']); 
     70 
     71                        PHPUnitUtil::$installedVersion = 3; 
     72                } 
     73                else 
     74                { 
     75                        /** 
     76                         * Try to find PHPUnit2 
     77                         */ 
     78                        include_once 'PHPUnit2/Util/Filter.php'; 
     79                        if (!class_exists('PHPUnit2_Util_Filter')) { 
     80                                throw new BuildException("PHPUnit2Task depends on PEAR PHPUnit2 package being installed.", $this->getLocation()); 
     81                        } 
     82                         
     83                        PHPUnitUtil::$installedVersion = 2; 
     84                } 
     85                 
    6486                // other dependencies that should only be loaded when class is actually used. 
    6587                require_once 'phing/tasks/ext/phpunit/PHPUnit2TestRunner.php'; 
    6688                require_once 'phing/tasks/ext/phpunit/BatchTest.php'; 
    6789                require_once 'phing/tasks/ext/phpunit/FormatterElement.php'; 
    68                 require_once 'phing/tasks/ext/phpunit/SummaryPHPUnit2ResultFormatter.php'; 
    69  
    70                 // add some defaults to the PHPUnit2 Filter 
    71                 PHPUnit2_Util_Filter::addFileToFilter('PHPUnit2Task.php'); 
    72                 PHPUnit2_Util_Filter::addFileToFilter('PHPUnit2TestRunner.php'); 
    73                 PHPUnit2_Util_Filter::addFileToFilter('phing/Task.php'); 
    74                 PHPUnit2_Util_Filter::addFileToFilter('phing/Target.php'); 
    75                 PHPUnit2_Util_Filter::addFileToFilter('phing/Project.php'); 
    76                 PHPUnit2_Util_Filter::addFileToFilter('phing/Phing.php'); 
    77                 PHPUnit2_Util_Filter::addFileToFilter('phing.php'); 
    78  
     90                //require_once 'phing/tasks/ext/phpunit/SummaryPHPUnit2ResultFormatter.php'; 
     91 
     92                // add some defaults to the PHPUnit filter 
     93                if (PHPUnitUtil::$installedVersion == 3) 
     94                { 
     95                        PHPUnit_Util_Filter::addFileToFilter('PHPUnit2Task.php', 'PHING'); 
     96                        PHPUnit_Util_Filter::addFileToFilter('PHPUnit2TestRunner.php', 'PHING'); 
     97                        PHPUnit_Util_Filter::addFileToFilter('phing/Task.php', 'PHING'); 
     98                        PHPUnit_Util_Filter::addFileToFilter('phing/Target.php', 'PHING'); 
     99                        PHPUnit_Util_Filter::addFileToFilter('phing/Project.php', 'PHING'); 
     100                        PHPUnit_Util_Filter::addFileToFilter('phing/Phing.php', 'PHING'); 
     101                        PHPUnit_Util_Filter::addFileToFilter('phing.php', 'PHING'); 
     102                } 
     103                else 
     104                { 
     105                        PHPUnit2_Util_Filter::addFileToFilter('PHPUnit2Task.php'); 
     106                        PHPUnit2_Util_Filter::addFileToFilter('PHPUnit2TestRunner.php'); 
     107                        PHPUnit2_Util_Filter::addFileToFilter('phing/Task.php'); 
     108                        PHPUnit2_Util_Filter::addFileToFilter('phing/Target.php'); 
     109                        PHPUnit2_Util_Filter::addFileToFilter('phing/Project.php'); 
     110                        PHPUnit2_Util_Filter::addFileToFilter('phing/Phing.php'); 
     111                        PHPUnit2_Util_Filter::addFileToFilter('phing.php'); 
     112                } 
    79113        } 
    80114         
     
    131165                { 
    132166                        $fe = new FormatterElement(); 
    133                         $fe->setClassName('SummaryPHPUnit2ResultFormatter'); 
     167                        $fe->setType("summary"); 
    134168                        $fe->setUseFile(false); 
    135169                        $this->formatters[] = $fe; 
  • trunk/classes/phing/tasks/ext/phpunit/PHPUnit2TestRunner.php

    r142 r148  
    5151        private $project = NULL; 
    5252 
    53         function __construct(PHPUnit2_Framework_TestSuite $suite, Project $project) 
     53        function __construct($suite, Project $project) 
    5454        { 
    5555                $this->suite = $suite; 
     
    6363        } 
    6464 
    65         function addFormatter(PHPUnit2_Framework_TestListener $formatter) 
     65        function addFormatter($formatter) 
    6666        { 
    6767                $this->formatters[] = $formatter; 
     
    7070        function run() 
    7171        { 
    72                 $res = new PHPUnit2_Framework_TestResult(); 
     72                $res = NULL; 
     73                 
     74                if (PHPUnitUtil::$installedVersion == 3) 
     75                { 
     76                        $res = new PHPUnit_Framework_TestResult(); 
     77                } 
     78                else 
     79                { 
     80                        $res = new PHPUnit2_Framework_TestResult(); 
     81                } 
    7382 
    7483                if ($this->codecoverage) 
  • trunk/classes/phing/tasks/ext/phpunit/PHPUnitUtil.php

    r141 r148  
    3030class PHPUnitUtil 
    3131{ 
     32        /** 
     33         * Installed PHPUnit version 
     34         */ 
     35        public static $installedVersion = 2; 
     36         
    3237        protected static $definedClasses = array(); 
    3338         
  • trunk/classes/phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php

    r142 r148  
    2929 * @author Michiel Rook <michiel.rook@gmail.com> 
    3030 * @version $Id$ 
    31  * @package phing.tasks.ext.phpunit 
     31 * @package phing.tasks.ext.phpunit.phpunit2 
    3232 * @since 2.1.0 
    3333 */ 
  • trunk/classes/phing/tasks/ext/phpunit/phpunit2/PlainPHPUnit2ResultFormatter.php

    r142 r148  
    2323require_once 'PHPUnit2/Util/Filter.php'; 
    2424 
    25 require_once 'phing/tasks/ext/phpunit/PHPUnit2ResultFormatter.php'; 
     25require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; 
    2626 
    2727/** 
     
    3030 * @author Michiel Rook <michiel.rook@gmail.com> 
    3131 * @version $Id$ 
    32  * @package phing.tasks.ext.phpunit 
     32 * @package phing.tasks.ext.phpunit.phpunit2 
    3333 * @since 2.1.0 
    3434 */ 
  • trunk/classes/phing/tasks/ext/phpunit/phpunit2/SummaryPHPUnit2ResultFormatter.php

    r142 r148  
    2222require_once 'PHPUnit2/Framework/Test.php'; 
    2323 
    24 require_once 'phing/tasks/ext/phpunit/PHPUnit2ResultFormatter.php'; 
     24require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; 
    2525 
    2626/** 
     
    2929 * @author Michiel Rook <michiel.rook@gmail.com> 
    3030 * @version $Id$ 
    31  * @package phing.tasks.ext.phpunit 
     31 * @package phing.tasks.ext.phpunit.phpunit2 
    3232 * @since 2.1.0 
    3333 */      
  • trunk/classes/phing/tasks/ext/phpunit/phpunit2/XMLPHPUnit2ResultFormatter.php

    r142 r148  
    2525require_once 'PHPUnit2/Util/Log/XML.php'; 
    2626 
    27 require_once 'phing/tasks/ext/phpunit/PHPUnit2ResultFormatter.php'; 
     27require_once 'phing/tasks/ext/phpunit/phpunit2/PHPUnit2ResultFormatter.php'; 
    2828 
    2929/** 
     
    3232 * @author Michiel Rook <michiel.rook@gmail.com> 
    3333 * @version $Id$ 
    34  * @package phing.tasks.ext.phpunit 
     34 * @package phing.tasks.ext.phpunit.phpunit2 
    3535 * @since 2.1.0 
    3636 */