1
0
Fork 0
composer/tests/Composer/Test/Util/SilencerTest.php

62 lines
1.7 KiB
PHP
Raw Normal View History

2022-02-23 15:58:18 +00:00
<?php declare(strict_types=1);
2017-03-08 14:07:29 +00:00
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Test\Util;
use Composer\Util\Silencer;
2020-02-07 03:18:45 +00:00
use Composer\Test\TestCase;
/**
* SilencerTest
*
* @author Niels Keurentjes <niels.keurentjes@omines.com>
*/
class SilencerTest extends TestCase
{
/**
* Test succeeds when no warnings are emitted externally, and original level is restored.
*/
public function testSilencer(): void
{
$before = error_reporting();
// Check warnings are suppressed correctly
Silencer::suppress();
@trigger_error('Test', E_USER_WARNING);
Silencer::restore();
// Check all parameters and return values are passed correctly in a silenced call.
2022-08-17 12:20:07 +00:00
$result = Silencer::call(static function ($a, $b, $c) {
@trigger_error('Test', E_USER_WARNING);
2016-01-26 13:07:05 +00:00
return $a * $b * $c;
}, 2, 3, 4);
$this->assertEquals(24, $result);
// Check the error reporting setting was restored correctly
$this->assertEquals($before, error_reporting());
}
/**
* Test whether exception from silent callbacks are correctly forwarded.
*/
public function testSilencedException(): void
{
$verification = microtime();
2021-12-09 19:55:26 +00:00
self::expectException('RuntimeException');
self::expectExceptionMessage($verification);
2022-08-17 12:20:07 +00:00
Silencer::call(static function () use ($verification): void {
throw new \RuntimeException($verification);
});
}
}