Skip to content

Commit

Permalink
ErrorHandlerTest: restore_error_handler() on assertion failure
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolas-grekas authored and fabpot committed Dec 12, 2013
1 parent a20b9a4 commit a259c04
Showing 1 changed file with 66 additions and 45 deletions.
111 changes: 66 additions & 45 deletions src/Symfony/Component/Debug/Tests/ErrorHandlerTest.php
Expand Up @@ -90,6 +90,11 @@ class _CompileTimeError extends _BaseCompileTimeError { function foo($invalid) {
);
} catch (DummyException $e) {
// if an exception is thrown, the test passed
} catch (\Exception $e) {
restore_error_handler();
restore_exception_handler();

throw $e;
}

restore_error_handler();
Expand Down Expand Up @@ -135,6 +140,10 @@ public function testNotice()
self::triggerNotice($this);
} catch (DummyException $e) {
// if an exception is thrown, the test passed
} catch (\Exception $e) {
restore_error_handler();

throw $e;
}

restore_error_handler();
Expand All @@ -150,72 +159,84 @@ private static function triggerNotice($that)

public function testConstruct()
{
$handler = ErrorHandler::register(3);
try {
$handler = ErrorHandler::register(3);

$level = new \ReflectionProperty($handler, 'level');
$level->setAccessible(true);
$level = new \ReflectionProperty($handler, 'level');
$level->setAccessible(true);

$this->assertEquals(3, $level->getValue($handler));
$this->assertEquals(3, $level->getValue($handler));

restore_error_handler();
restore_error_handler();
} catch (\Exception $e) {
restore_error_handler();

throw $e;
}
}

public function testHandle()
{
$handler = ErrorHandler::register(0);
$this->assertFalse($handler->handle(0, 'foo', 'foo.php', 12, 'foo'));
try {
$handler = ErrorHandler::register(0);
$this->assertFalse($handler->handle(0, 'foo', 'foo.php', 12, 'foo'));

restore_error_handler();
restore_error_handler();

$handler = ErrorHandler::register(3);
$this->assertFalse($handler->handle(4, 'foo', 'foo.php', 12, 'foo'));
$handler = ErrorHandler::register(3);
$this->assertFalse($handler->handle(4, 'foo', 'foo.php', 12, 'foo'));

restore_error_handler();
restore_error_handler();

$handler = ErrorHandler::register(3);
try {
$handler->handle(111, 'foo', 'foo.php', 12, 'foo');
} catch (\ErrorException $e) {
$this->assertSame('111: foo in foo.php line 12', $e->getMessage());
$this->assertSame(111, $e->getSeverity());
$this->assertSame('foo.php', $e->getFile());
$this->assertSame(12, $e->getLine());
}
$handler = ErrorHandler::register(3);
try {
$handler->handle(111, 'foo', 'foo.php', 12, 'foo');
} catch (\ErrorException $e) {
$this->assertSame('111: foo in foo.php line 12', $e->getMessage());
$this->assertSame(111, $e->getSeverity());
$this->assertSame('foo.php', $e->getFile());
$this->assertSame(12, $e->getLine());
}

restore_error_handler();
restore_error_handler();

$handler = ErrorHandler::register(E_USER_DEPRECATED);
$this->assertTrue($handler->handle(E_USER_DEPRECATED, 'foo', 'foo.php', 12, 'foo'));
$handler = ErrorHandler::register(E_USER_DEPRECATED);
$this->assertTrue($handler->handle(E_USER_DEPRECATED, 'foo', 'foo.php', 12, 'foo'));

restore_error_handler();
restore_error_handler();

$handler = ErrorHandler::register(E_DEPRECATED);
$this->assertTrue($handler->handle(E_DEPRECATED, 'foo', 'foo.php', 12, 'foo'));
$handler = ErrorHandler::register(E_DEPRECATED);
$this->assertTrue($handler->handle(E_DEPRECATED, 'foo', 'foo.php', 12, 'foo'));

restore_error_handler();
restore_error_handler();

$logger = $this->getMock('Psr\Log\LoggerInterface');
$logger = $this->getMock('Psr\Log\LoggerInterface');

$that = $this;
$warnArgCheck = function($message, $context) use ($that) {
$that->assertEquals('foo', $message);
$that->assertArrayHasKey('type', $context);
$that->assertEquals($context['type'], ErrorHandler::TYPE_DEPRECATION);
$that->assertArrayHasKey('stack', $context);
$that->assertInternalType('array', $context['stack']);
};
$that = $this;
$warnArgCheck = function($message, $context) use ($that) {
$that->assertEquals('foo', $message);
$that->assertArrayHasKey('type', $context);
$that->assertEquals($context['type'], ErrorHandler::TYPE_DEPRECATION);
$that->assertArrayHasKey('stack', $context);
$that->assertInternalType('array', $context['stack']);
};

$logger
->expects($this->once())
->method('warning')
->will($this->returnCallback($warnArgCheck))
;
$logger
->expects($this->once())
->method('warning')
->will($this->returnCallback($warnArgCheck))
;

$handler = ErrorHandler::register(E_USER_DEPRECATED);
$handler->setLogger($logger);
$handler->handle(E_USER_DEPRECATED, 'foo', 'foo.php', 12, 'foo');
$handler = ErrorHandler::register(E_USER_DEPRECATED);
$handler->setLogger($logger);
$handler->handle(E_USER_DEPRECATED, 'foo', 'foo.php', 12, 'foo');

restore_error_handler();
restore_error_handler();
} catch (\Exception $e) {
restore_error_handler();

throw $e;
}
}

/**
Expand Down

0 comments on commit a259c04

Please sign in to comment.