WordPress.org

Make WordPress Core

Ticket #13407: 13407.patch

File 13407.patch, 3.8 KB (added by hakre, 8 years ago)
  • wp-testlib/base.php

     
    393393         */
    394394        function isTracTicketClosed($trac_url, $ticket_id) {
    395395                #TODO: cache it
    396                 $trac_url = rtrim($trac_url, '/');
    397                 $ticket_tsv = file_get_contents("$trac_url/ticket/$ticket_id?format=tab");
     396                $trac_url   = rtrim($trac_url, '/');
     397                $url        = sprintf('%s/ticket/%s?format=tab', $trac_url, $ticket_id);
     398                $ticket_tsv = file_get_contents($url);
    398399                if (false === $ticket_tsv) {
    399400                        return null;
    400401                }
     
    410411                $tabs = explode("\t", $lines[1]);
    411412                return 'closed' === $tabs[$status_idx];
    412413        }
     414       
     415        /**
     416         * Skips the current test if there is an open ticket in a trac
     417         * based bug-tracker
     418         *
     419         * @param string $trac_domain domain name of trac webapplication
     420         * @param string $ticket_id ticket id
     421         * @return void
     422         */
     423        private function _knownBugTrac($trac_domain, $ticket_id) {
     424                if ( !TEST_FORCE_KNOWN_BUGS
     425                     && (TEST_SKIP_KNOWN_BUGS || !$this->isTracTicketClosed( 'http://' . $trac_domain, $ticket_id )) ) {
     426                        $this->markTestSkipped();
     427                }
     428        }
    413429
    414430        /**
    415431         * Skips the current test if there is open WordPress ticket with id $ticket_id
    416432         */
    417433        function knownWPBug($ticket_id) {
    418                 if (!TEST_FORCE_KNOWN_BUGS && (TEST_SKIP_KNOWN_BUGS || !$this->isTracTicketClosed('http://trac.wordpress.org', $ticket_id))) {
    419                         $this->markTestSkipped();
    420                 }
     434                $this->_knownBugTrac('trac.wordpress.org', $ticket_id);
    421435        }
    422436
    423437        /**
    424438         * Skips the current test if there is open WordPress MU ticket with id $ticket_id
    425439         */
    426440        function knownMUBug($ticket_id) {
    427                 if (!TEST_FORCE_KNOWN_BUGS && (TEST_SKIP_KNOWN_BUGS || !$this->isTracTicketClosed('http://trac.mu.wordpress.org', $ticket_id))) {
    428                         $this->markTestSkipped();
    429                 }
     441                $this->_knownBugTrac('trac.mu.wordpress.org', $ticket_id);
    430442        }
    431443
    432444        /**i
    433445         * Skips the current test if there is open plugin ticket with id $ticket_id
    434446         */
    435447        function knownPluginBug($ticket_id) {
    436                 if (!TEST_FORCE_KNOWN_BUGS && (TEST_SKIP_KNOWN_BUGS || !$this->isTracTicketClosed('http://dev.wp-plugins.org', $ticket_id))) {
    437                         $this->markTestSkipped();
    438                 }
     448                $this->_knownBugTrac('dev.wp-plugins.org', $ticket_id);
    439449        }
    440450
    441451        // convenience function: return the # of posts associated with a tag
     
    513523        echo "\n\nUse -t TestCaseName to run individual test cases\n"; 
    514524}
    515525
    516 function wptest_run_tests($classes, $classname='') {
    517         $suite = new PHPUnit_Framework_TestSuite();
    518         foreach ($classes as $testcase)
    519                 if (!$classname or strtolower($testcase) == strtolower($classname)) {
     526function wptest_run_tests($classes, $filter='') {
     527        $suite  = new PHPUnit_Framework_TestSuite();
     528       
     529        $filter_do = (bool) strlen($filter);
     530        $filter_ok = true;
     531        if ($filter_do) {
     532                if ('!' == $filter[0]) {
     533                        $filter = substr($filter, 1);
     534                        $filter_ok = false;
     535                }
     536                $filter_classes = explode(',',$filter);
     537                $filter_classes = array_map('strtolower', $filter_classes);
     538                $filter_classes = array_map('trim', $filter_classes);
     539        }       
     540       
     541        foreach ($classes as $testcase) {               
     542                $match = $filter_do ? in_array(strtolower($testcase), $filter_classes) : true;
     543                $add   = $filter_ok ? $match : !$match;         
     544                if ($add)
    520545                        $suite->addTestSuite($testcase);
    521                 }
     546        }
    522547
    523548        #return PHPUnit::run($suite);
    524549        $result = new PHPUnit_Framework_TestResult;
    525550        require_once('PHPUnit/TextUI/ResultPrinter.php');
    526         $printer = new PHPUnit_TextUI_ResultPrinter(NULL,true,true);
     551        $printer = new PHPUnit_TextUI_ResultPrinter( NULL, true, $colors = !((bool) stristr(PHP_OS, 'WIN')) );
    527552        $result->addListener($printer);
    528553        return array($suite->run($result), $printer);
    529554}
  • wp-test.cmd

     
     1@ECHO OFF
     2php wp-test.php %*
     3pause
     4 No newline at end of file