You are here

public function ApplicationTest::testRenderExceptionWithDoubleWidthCharacters in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/console/Tests/ApplicationTest.php \Symfony\Component\Console\Tests\ApplicationTest::testRenderExceptionWithDoubleWidthCharacters()

File

vendor/symfony/console/Tests/ApplicationTest.php, line 554

Class

ApplicationTest

Namespace

Symfony\Component\Console\Tests

Code

public function testRenderExceptionWithDoubleWidthCharacters() {
  if (!function_exists('mb_strwidth')) {
    $this
      ->markTestSkipped('The "mb_strwidth" function is not available');
  }
  $application = $this
    ->getMock('Symfony\\Component\\Console\\Application', array(
    'getTerminalWidth',
  ));
  $application
    ->setAutoExit(false);
  $application
    ->expects($this
    ->any())
    ->method('getTerminalWidth')
    ->will($this
    ->returnValue(120));
  $application
    ->register('foo')
    ->setCode(function () {
    throw new \Exception('エラーメッセージ');
  });
  $tester = new ApplicationTester($application);
  $tester
    ->run(array(
    'command' => 'foo',
  ), array(
    'decorated' => false,
  ));
  $this
    ->assertStringEqualsFile(self::$fixturesPath . '/application_renderexception_doublewidth1.txt', $tester
    ->getDisplay(true), '->renderException() renders a pretty exceptions with previous exceptions');
  $tester
    ->run(array(
    'command' => 'foo',
  ), array(
    'decorated' => true,
  ));
  $this
    ->assertStringEqualsFile(self::$fixturesPath . '/application_renderexception_doublewidth1decorated.txt', $tester
    ->getDisplay(true), '->renderException() renders a pretty exceptions with previous exceptions');
  $application = $this
    ->getMock('Symfony\\Component\\Console\\Application', array(
    'getTerminalWidth',
  ));
  $application
    ->setAutoExit(false);
  $application
    ->expects($this
    ->any())
    ->method('getTerminalWidth')
    ->will($this
    ->returnValue(32));
  $application
    ->register('foo')
    ->setCode(function () {
    throw new \Exception('コマンドの実行中にエラーが発生しました。');
  });
  $tester = new ApplicationTester($application);
  $tester
    ->run(array(
    'command' => 'foo',
  ), array(
    'decorated' => false,
  ));
  $this
    ->assertStringEqualsFile(self::$fixturesPath . '/application_renderexception_doublewidth2.txt', $tester
    ->getDisplay(true), '->renderException() wraps messages when they are bigger than the terminal');
}