bug #17040 [Console] Avoid extra blank lines when rendering exceptions (ogizanagi)

This PR was merged into the 2.3 branch.

Discussion
----------

[Console] Avoid extra blank lines when rendering exceptions

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

Don't know if it can be considered as a bug fix as it is the behavior since a while (https://github.com/symfony/symfony/pull/9055), but I let you see by yourself the old vs new rendering:

![Console exception rendering](https://cloud.githubusercontent.com/assets/2211145/11857447/92cebfbe-a458-11e5-9d3d-6147b0338080.PNG)

Commits
-------

2e158df [Console] Avoid extra blank lines when rendering exceptions
This commit is contained in:
Fabien Potencier 2015-12-18 17:54:05 +01:00
commit f371445eff
9 changed files with 3 additions and 38 deletions

View File

@ -673,6 +673,8 @@ class Application
*/ */
public function renderException($e, $output) public function renderException($e, $output)
{ {
$output->writeln('');
do { do {
$title = sprintf(' [%s] ', get_class($e)); $title = sprintf(' [%s] ', get_class($e));
@ -695,7 +697,7 @@ class Application
} }
} }
$messages = array('', ''); $messages = array();
$messages[] = $emptyLine = $formatter->format(sprintf('<error>%s</error>', str_repeat(' ', $len))); $messages[] = $emptyLine = $formatter->format(sprintf('<error>%s</error>', str_repeat(' ', $len)));
$messages[] = $formatter->format(sprintf('<error>%s%s</error>', $title, str_repeat(' ', max(0, $len - $this->stringWidth($title))))); $messages[] = $formatter->format(sprintf('<error>%s%s</error>', $title, str_repeat(' ', max(0, $len - $this->stringWidth($title)))));
foreach ($lines as $line) { foreach ($lines as $line) {
@ -703,7 +705,6 @@ class Application
} }
$messages[] = $emptyLine; $messages[] = $emptyLine;
$messages[] = ''; $messages[] = '';
$messages[] = '';
$output->writeln($messages, OutputInterface::OUTPUT_RAW); $output->writeln($messages, OutputInterface::OUTPUT_RAW);
@ -730,14 +731,12 @@ class Application
} }
$output->writeln(''); $output->writeln('');
$output->writeln('');
} }
} while ($e = $e->getPrevious()); } while ($e = $e->getPrevious());
if (null !== $this->runningCommand) { if (null !== $this->runningCommand) {
$output->writeln(sprintf('<info>%s</info>', sprintf($this->runningCommand->getSynopsis(), $this->getName()))); $output->writeln(sprintf('<info>%s</info>', sprintf($this->runningCommand->getSynopsis(), $this->getName())));
$output->writeln(''); $output->writeln('');
$output->writeln('');
} }
} }

View File

@ -1,8 +1,6 @@
[InvalidArgumentException] [InvalidArgumentException]
Command "foo" is not defined. Command "foo" is not defined.

View File

@ -1,11 +1,8 @@
[InvalidArgumentException] [InvalidArgumentException]
The "--foo" option does not exist. The "--foo" option does not exist.
list [--xml] [--raw] [--format="..."] [namespace] list [--xml] [--raw] [--format="..."] [namespace]

View File

@ -1,27 +1,18 @@
[Exception] [Exception]
Third exception comment Third exception comment
[Exception] [Exception]
Second exception comment Second exception comment
[Exception] [Exception]
First exception <p>this is html</p> First exception <p>this is html</p>
foo3:bar foo3:bar

View File

@ -1,27 +1,18 @@
   
 [Exception]   [Exception] 
 Third exception comment   Third exception comment 
   
   
 [Exception]   [Exception] 
 Second exception comment   Second exception comment 
   
   
 [Exception]   [Exception] 
 First exception <p>this is html</p>   First exception <p>this is html</p> 
   
foo3:bar foo3:bar

View File

@ -1,9 +1,7 @@
[InvalidArgumentException] [InvalidArgumentException]
Command "foo" is not define Command "foo" is not define
d. d.

View File

@ -1,11 +1,8 @@
[Exception] [Exception]
エラーメッセージ エラーメッセージ
foo foo

View File

@ -1,11 +1,8 @@
   
 [Exception]   [Exception] 
 エラーメッセージ   エラーメッセージ 
   
foo foo

View File

@ -1,12 +1,9 @@
[Exception] [Exception]
コマンドの実行中にエラーが コマンドの実行中にエラーが
発生しました。 発生しました。
foo foo