close Warning: Can't use blame annotator:
svn blame failed on trunk/server/www/vendors/simpletest/default_reporter.php: ("Can't find a temporary directory: Internal error", 20014)

source: trunk/server/www/vendors/simpletest/default_reporter.php @ 6

Last change on this file since 6 was 6, checked in by sander, 12 years ago

Added SimpleTest? test framework

File size: 4.0 KB
RevLine 
1<?php
2/**
3 *  Optional include file for SimpleTest
4 *  @package    SimpleTest
5 *  @subpackage UnitTester
6 *  @version    $Id: default_reporter.php 1704 2008-03-25 00:47:04Z lastcraft $
7 */
8
9/**#@+
10 *  include other SimpleTest class files
11 */
12require_once(dirname(__FILE__) . '/simpletest.php');
13require_once(dirname(__FILE__) . '/scorer.php');
14require_once(dirname(__FILE__) . '/reporter.php');
15require_once(dirname(__FILE__) . '/xml.php');
16/**#@-*/
17
18/**
19 *    Parser for command line arguments. Extracts
20 *    the a specific test to run and engages XML
21 *    reporting when necessary.
22 *    @package SimpleTest
23 *    @subpackage UnitTester
24 */
25class SimpleCommandLineParser {
26    var $_to_property = array(
27            'case' => '_case', 'c' => '_case',
28            'test' => '_test', 't' => '_test',
29            'xml' => '_xml', 'x' => '_xml');
30    var $_case = '';
31    var $_test = '';
32    var $_xml = false;
33    var $_no_skips = false;
34   
35    /**
36     *    Parses raw command line arguments into object properties.
37     *    @param string $arguments        Raw commend line arguments.
38     */
39    function SimpleCommandLineParser($arguments) {
40        if (! is_array($arguments)) {
41            return;
42        }
43        foreach ($arguments as $i => $argument) {
44            if (preg_match('/^--?(test|case|t|c)=(.+)$/', $argument, $matches)) {
45                $property = $this->_to_property[$matches[1]];
46                $this->$property = $matches[2];
47            } elseif (preg_match('/^--?(test|case|t|c)$/', $argument, $matches)) {
48                $property = $this->_to_property[$matches[1]];
49                if (isset($arguments[$i + 1])) {
50                    $this->$property = $arguments[$i + 1];
51                }
52            } elseif (preg_match('/^--?(xml|x)$/', $argument)) {
53                $this->_xml = true;
54            } elseif (preg_match('/^--?(no-skip|no-skips|s)$/', $argument)) {
55                $this->_no_skips = true;
56            }
57        }
58    }
59   
60    /**
61     *    Run only this test.
62     *    @return string        Test name to run.
63     *    @access public
64     */
65    function getTest() {
66        return $this->_test;
67    }
68   
69    /**
70     *    Run only this test suite.
71     *    @return string        Test class name to run.
72     *    @access public
73     */
74    function getTestCase() {
75        return $this->_case;
76    }
77   
78    /**
79     *    Output should be XML or not.
80     *    @return boolean        True if XML desired.
81     *    @access public
82     */
83    function isXml() {
84        return $this->_xml;
85    }
86   
87    /**
88     *    Output should suppress skip messages.
89     *    @return boolean        True for no skips.
90     *    @access public
91     */
92    function noSkips() {
93        return $this->_no_skips;
94    }
95}
96
97/**
98 *    The default reporter used by SimpleTest's autorun
99 *    feature. The actual reporters used are dependency
100 *    injected and can be overridden.
101 *    @package SimpleTest
102 *    @subpackage UnitTester
103 */
104class DefaultReporter extends SimpleReporterDecorator {
105   
106    /**
107     *  Assembles the appopriate reporter for the environment.
108     */
109    function DefaultReporter() {
110        if (SimpleReporter::inCli()) {
111            global $argv;
112            $parser = new SimpleCommandLineParser($argv);
113            $interfaces = $parser->isXml() ? array('XmlReporter') : array('TextReporter');
114            $reporter = &new SelectiveReporter(
115                    SimpleTest::preferred($interfaces),
116                    $parser->getTestCase(),
117                    $parser->getTest());
118            if ($parser->noSkips()) {
119                $reporter = &new NoSkipsReporter($reporter);
120            }
121        } else {
122            $reporter = &new SelectiveReporter(
123                    SimpleTest::preferred('HtmlReporter'),
124                    @$_GET['c'],
125                    @$_GET['t']);
126            if (@$_GET['skips'] == 'no' || @$_GET['show-skips'] == 'no') {
127                $reporter = &new NoSkipsReporter($reporter);
128            }
129        }
130        $this->SimpleReporterDecorator($reporter);
131    }
132}
133?>
Note: See TracBrowser for help on using the repository browser.