Changeset View
Changeset View
Standalone View
Standalone View
src/error/__tests__/PhutilErrorHandlerTestCase.php
- This file was added.
<?php | |||||
final class PhutilErrorHandlerTestCase extends PhutilTestCase { | |||||
public function testProxyException() { | |||||
$a = new Exception('a'); | |||||
$b = new PhutilProxyException('b', $a); | |||||
$c = new PhutilProxyException('c', $b); | |||||
$this->assertEqual($a, $b->getPrevious()); | |||||
$this->assertEqual($a, PhutilErrorHandler::getRootException($b)); | |||||
$this->assertEqual($a, PhutilErrorHandler::getPreviousException($b)); | |||||
$this->assertEqual($a, PhutilErrorHandler::getRootException($c)); | |||||
$this->assertEqual($b, PhutilErrorHandler::getPreviousException($c)); | |||||
} | |||||
public function testSilenceHandler() { | |||||
// Errors should normally be logged. | |||||
$this->assertTrue(strlen($this->emitError()) > 0); | |||||
// The "@" operator should silence errors. | |||||
$this->assertTrue(@strlen($this->emitError()) === 0); | |||||
} | |||||
private function emitError() { | |||||
$temporary_log = new TempFile(); | |||||
$old_log = ini_get('error_log'); | |||||
ini_set('error_log', (string)$temporary_log); | |||||
trigger_error(pht('(A synthetic error emitted during a unit test.)')); | |||||
ini_set('error_log', $old_log); | |||||
return Filesystem::readFile($temporary_log); | |||||
} | |||||
} |