which we weren't treating right. * $limit in wfDebugBacktrace() is the number of returned frames, we thus need to take into account the wfDebugBacktrace() frame, which is sliced from debug_backtrace(). * wfGetCaller() needs to add a level for itself. * MWDebug::warning() was logging itself as the warning issuer, which is useless (the call a few lines before was right, though) MWDebugTest.php changed accordingly. * Removed double call to wfGetCaller( $callerOffset + 1 ) * Documented the meaning of wfGetCaller() parameter * Added unit test Change-Id: Ief50f4c810bad8b03bb2bf9dc6d945d9acb29851
35 lines
891 B
PHP
35 lines
891 B
PHP
<?php
|
|
|
|
class wfGetCaller extends MediaWikiTestCase {
|
|
|
|
function testZero() {
|
|
$this->assertEquals( __METHOD__, wfGetCaller( 1 ) );
|
|
}
|
|
|
|
function callerOne() {
|
|
return wfGetCaller();
|
|
}
|
|
|
|
function testOne() {
|
|
$this->assertEquals( "wfGetCaller::testOne", self::callerOne() );
|
|
}
|
|
|
|
function intermediateFunction( $level = 2, $n = 0 ) {
|
|
if ( $n > 0 )
|
|
return self::intermediateFunction( $level, $n - 1 );
|
|
return wfGetCaller( $level );
|
|
}
|
|
|
|
function testTwo() {
|
|
$this->assertEquals( "wfGetCaller::testTwo", self::intermediateFunction() );
|
|
}
|
|
|
|
function testN() {
|
|
$this->assertEquals( "wfGetCaller::testN", self::intermediateFunction( 2, 0 ) );
|
|
$this->assertEquals( "wfGetCaller::intermediateFunction", self::intermediateFunction( 1, 0 ) );
|
|
|
|
for ($i=0; $i < 10; $i++)
|
|
$this->assertEquals( "wfGetCaller::intermediateFunction", self::intermediateFunction( $i + 1, $i ) );
|
|
}
|
|
}
|
|
|