/** * {@inheritdoc} */ public function onBootstrap(EventInterface $e) { /** @var ApplicationInterface $app */ $app = $e->getTarget(); $serviceManager = $app->getServiceManager(); /** @var Options $options */ $options = $serviceManager->get('BuggymanOptions'); if ($options->getEnabled() && $options->getToken()) { Buggyman::setToken($options->getToken()); Buggyman::setErrorLevel($options->getErrorLevel()); Buggyman::setRoot(getcwd()); Buggyman::init(); $app->getEventManager()->attach([MvcEvent::EVENT_DISPATCH_ERROR, MvcEvent::EVENT_RENDER_ERROR], function (MvcEvent $event) use($serviceManager) { if ($event->getParam('exception') instanceof Exception) { Buggyman::reportException($event->getParam('exception')); } }); if ($options->getPublicToken() && !isset($_SERVER['HTTPS'])) { /** @var HelperPluginManager $pluginManager */ $pluginManager = $serviceManager->get('ViewHelperManager'); /** @var InlineScript $inline */ $inline = $pluginManager->get('InlineScript'); $inline($inline::FILE, 'http://cdn.buggyman.io/v1/js/' . $options->getPublicToken() . '/collector.js'); } } }
public function testExceptionToArray() { Buggyman::setRoot(__DIR__); $exception = new \Exception('message', 432, new \RuntimeException('subexception')); $array = Buggyman::exceptionToArray($exception); $this->assertEquals('message', $array['message']); $this->assertEquals('Exception', $array['exception']); $this->assertEquals('subexception', $array['previous']['message']); $this->assertEquals('RuntimeException', $array['previous']['exception']); $this->assertEquals(432, $array['code']); $this->assertEquals(17, $array['line']); $this->assertTrue(strlen($array['file']) > 0); $this->assertTrue(strlen($array['stack']) > 0); $this->assertEquals(__DIR__, $array['root']); }