wiki.techinc.nl/tests/phpunit/includes/GlobalFunctions/wfGetCallerTest.php
Platonides 2e506c4809 PHP >= 5.4.0 started taking advantage of $limit optimization of wfDebugBacktrace(),
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
2012-05-31 17:32:33 +02:00

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 ) );
}
}