getTrace(); $hasObject = false; $hasArray = false; foreach ( $trace as $frame ) { if ( !isset( $frame['args'] ) ) { continue; } foreach ( $frame['args'] as $arg ) { $hasObject = $hasObject || is_object( $arg ); $hasArray = $hasArray || is_array( $arg ); } if ( $hasObject && $hasArray ) { break; } } $this->assertTrue( $hasObject, "The stacktrace must have a function having an object has parameter" ); $this->assertTrue( $hasArray, "The stacktrace must have a function having an array has parameter" ); # Now we redact the trace.. and make sure no function arguments are # arrays or objects. $redacted = MWExceptionHandler::getRedactedTrace( $e ); foreach ( $redacted as $frame ) { if ( !isset( $frame['args'] ) ) { continue; } foreach ( $frame['args'] as $arg ) { $this->assertNotInternalType( 'array', $arg ); $this->assertNotInternalType( 'object', $arg ); } } $this->assertEquals( 'value', $refvar, 'Ensuring reference variable wasn\'t changed' ); } /** * Helper function for testExpandArgumentsInCall * * Pass it an object and an array, and something by reference :-) * * @throws Exception */ protected static function helperThrowAnException( $a, $b, &$c ) { throw new Exception(); } }