]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - tests/PHPUnit/PHPUnit/Util/DeprecatedFeature/Logger.php
Release 6.2.0
[Github/sugarcrm.git] / tests / PHPUnit / PHPUnit / Util / DeprecatedFeature / Logger.php
1 <?php
2 /**
3  * PHPUnit
4  *
5  * Copyright (c) 2002-2010, Sebastian Bergmann <sebastian@phpunit.de>.
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  *
12  *   * Redistributions of source code must retain the above copyright
13  *     notice, this list of conditions and the following disclaimer.
14  *
15  *   * Redistributions in binary form must reproduce the above copyright
16  *     notice, this list of conditions and the following disclaimer in
17  *     the documentation and/or other materials provided with the
18  *     distribution.
19  *
20  *   * Neither the name of Sebastian Bergmann nor the names of his
21  *     contributors may be used to endorse or promote products derived
22  *     from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35  * POSSIBILITY OF SUCH DAMAGE.
36  *
37  * @package    PHPUnit
38  * @subpackage Framework
39  * @author     Ralph Schindler <ralph.schindler@zend.com>
40  * @author     Sebastian Bergmann <sebastian@phpunit.de>
41  * @copyright  2002-2010 Sebastian Bergmann <sebastian@phpunit.de>
42  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
43  * @link       http://www.phpunit.de/
44  * @since      File available since Release 3.5.7
45  */
46
47 /**
48  * Test Listener that tracks the usage of deprecated features.
49  *
50  * @package    PHPUnit
51  * @subpackage Framework
52  * @author     Ralph Schindler <ralph.schindler@zend.com>
53  * @author     Sebastian Bergmann <sebastian@phpunit.de>
54  * @copyright  2002-2010 Sebastian Bergmann <sebastian@phpunit.de>
55  * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
56  * @version    Release: 3.5.13
57  * @link       http://www.phpunit.de/
58  * @since      Class available since Release 3.5.7
59  */
60 class PHPUnit_Util_DeprecatedFeature_Logger implements PHPUnit_Framework_TestListener
61 {
62     /**
63      * @var PHPUnit_Framework_TestCase
64      */
65     protected static $currentTest = NULL;
66
67     /**
68      * This is the publically accessible API for notifying the system that a
69      * deprecated feature has been used.
70      *
71      * If it is run via a TestRunner and the test extends
72      * PHPUnit_Framework_TestCase, then this will inject the result into the
73      * test runner for display, if not, it will throw the notice to STDERR.
74      *
75      * @param string $message
76      * @param int|bool $backtraceDepth
77      */
78     public static function log($message, $backtraceDepth = 2)
79     {
80         if ($backtraceDepth !== FALSE) {
81             $trace = debug_backtrace(FALSE);
82
83             if (is_int($backtraceDepth)) {
84                 $traceItem = $trace[$backtraceDepth];
85             }
86
87             if (!isset($traceItem['file'])) {
88                 $reflectionClass   = new ReflectionClass($traceItem['class']);
89                 $traceItem['file'] = $reflectionClass->getFileName();
90             }
91
92             if (!isset($traceItem['line']) &&
93                  isset($traceItem['class']) &&
94                  isset($traceItem['function'])) {
95                 if (!isset($reflectionClass)) {
96                     $reflectionClass = new ReflectionClass($traceItem['class']);
97                 }
98
99                 $method = $reflectionClass->getMethod($traceItem['function']);
100                 $traceItem['line'] = '(between ' . $method->getStartLine() .
101                                      ' and ' . $method->getEndLine() . ')';
102             }
103         }
104
105         $deprecatedFeature = new PHPUnit_Util_DeprecatedFeature(
106           $message, $traceItem
107         );
108
109         if (self::$currentTest instanceof PHPUnit_Framework_TestCase) {
110             $result = self::$currentTest->getTestResultObject();
111             $result->addDeprecatedFeature($deprecatedFeature);
112         } else {
113             file_put_contents('php://stderr', $deprecatedFeature);
114         }
115     }
116
117     /**
118      * An error occurred.
119      *
120      * @param  PHPUnit_Framework_Test $test
121      * @param  Exception              $e
122      * @param  float                  $time
123      */
124     public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
125     {
126     }
127
128     /**
129      * A failure occurred.
130      *
131      * @param  PHPUnit_Framework_Test                 $test
132      * @param  PHPUnit_Framework_AssertionFailedError $e
133      * @param  float                                  $time
134      */
135     public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
136     {
137     }
138
139     /**
140      * Incomplete test.
141      *
142      * @param  PHPUnit_Framework_Test $test
143      * @param  Exception              $e
144      * @param  float                  $time
145      */
146     public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
147     {
148     }
149
150     /**
151      * Skipped test.
152      *
153      * @param  PHPUnit_Framework_Test $test
154      * @param  Exception              $e
155      * @param  float                  $time
156      * @since  Method available since Release 3.0.0
157      */
158     public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
159     {
160     }
161
162     /**
163      * A test suite started.
164      *
165      * @param  PHPUnit_Framework_TestSuite $suite
166      * @since  Method available since Release 2.2.0
167      */
168     public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
169     {
170     }
171
172     /**
173      * A test suite ended.
174      *
175      * @param  PHPUnit_Framework_TestSuite $suite
176      * @since  Method available since Release 2.2.0
177      */
178     public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
179     {
180     }
181
182     /**
183      * A test started.
184      *
185      * @param  PHPUnit_Framework_Test $test
186      */
187     public function startTest(PHPUnit_Framework_Test $test)
188     {
189         self::$currentTest = $test;
190     }
191
192     /**
193      * A test ended.
194      *
195      * @param  PHPUnit_Framework_Test $test
196      * @param  float                  $time
197      */
198     public function endTest(PHPUnit_Framework_Test $test, $time)
199     {
200         self::$currentTest = NULL;
201     }
202 }