From e0d36e19eb8a5c96ccad3d145faf9024727e856c Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Mon, 5 Jan 2015 16:17:15 +0000 Subject: [PATCH] Disable overwrites when no-ansi is present, fixes #3612 --- src/Composer/IO/ConsoleIO.php | 8 ++++++++ tests/Composer/Test/IO/ConsoleIOTest.php | 18 ++++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/Composer/IO/ConsoleIO.php b/src/Composer/IO/ConsoleIO.php index 07e529666..491a6b7fb 100644 --- a/src/Composer/IO/ConsoleIO.php +++ b/src/Composer/IO/ConsoleIO.php @@ -113,6 +113,14 @@ class ConsoleIO extends BaseIO */ public function overwrite($messages, $newline = true, $size = null) { + if (!$this->output->isDecorated()) { + if (!$messages) { + return; + } + + return $this->write($messages, count($messages) === 1 || $newline); + } + // messages can be an array, let's convert it to string anyway $messages = join($newline ? "\n" : '', (array) $messages); diff --git a/tests/Composer/Test/IO/ConsoleIOTest.php b/tests/Composer/Test/IO/ConsoleIOTest.php index 3a4313f69..6ce95b0ac 100644 --- a/tests/Composer/Test/IO/ConsoleIOTest.php +++ b/tests/Composer/Test/IO/ConsoleIOTest.php @@ -58,21 +58,27 @@ class ConsoleIOTest extends TestCase ->method('write') ->with($this->equalTo('something (strlen = 23)')); $outputMock->expects($this->at(1)) - ->method('write') - ->with($this->equalTo(str_repeat("\x08", 23)), $this->equalTo(false)); + ->method('isDecorated') + ->willReturn(true); $outputMock->expects($this->at(2)) ->method('write') - ->with($this->equalTo('shorter (12)'), $this->equalTo(false)); + ->with($this->equalTo(str_repeat("\x08", 23)), $this->equalTo(false)); $outputMock->expects($this->at(3)) ->method('write') - ->with($this->equalTo(str_repeat(' ', 11)), $this->equalTo(false)); + ->with($this->equalTo('shorter (12)'), $this->equalTo(false)); $outputMock->expects($this->at(4)) ->method('write') - ->with($this->equalTo(str_repeat("\x08", 11)), $this->equalTo(false)); + ->with($this->equalTo(str_repeat(' ', 11)), $this->equalTo(false)); $outputMock->expects($this->at(5)) ->method('write') - ->with($this->equalTo(str_repeat("\x08", 12)), $this->equalTo(false)); + ->with($this->equalTo(str_repeat("\x08", 11)), $this->equalTo(false)); $outputMock->expects($this->at(6)) + ->method('isDecorated') + ->willReturn(true); + $outputMock->expects($this->at(7)) + ->method('write') + ->with($this->equalTo(str_repeat("\x08", 12)), $this->equalTo(false)); + $outputMock->expects($this->at(8)) ->method('write') ->with($this->equalTo('something longer than initial (34)'));