1
0
Fork 0

Remove console formatting as well.

pull/6340/head
Alexander M. Turek 2017-04-19 17:24:47 +02:00
parent 401ef69ae3
commit 20050dd984
2 changed files with 22 additions and 5 deletions

View File

@ -15,6 +15,7 @@ namespace Composer\Installer;
use Composer\IO\IOInterface; use Composer\IO\IOInterface;
use Composer\Package\PackageInterface; use Composer\Package\PackageInterface;
use Composer\Repository\RepositoryInterface; use Composer\Repository\RepositoryInterface;
use Symfony\Component\Console\Formatter\OutputFormatter;
/** /**
* Add suggested packages from different places to output them in the end. * Add suggested packages from different places to output them in the end.
@ -116,14 +117,25 @@ class SuggestedPackagesReporter
$this->io->writeError(sprintf( $this->io->writeError(sprintf(
'%s suggests installing %s (%s)', '%s suggests installing %s (%s)',
$suggestion['source'], $suggestion['source'],
$this->removeControlCharacters($suggestion['target']), $this->escapeOutput($suggestion['target']),
$this->removeControlCharacters($suggestion['reason']) $this->escapeOutput($suggestion['reason'])
)); ));
} }
return $this; return $this;
} }
/**
* @param string $string
* @return string
*/
private function escapeOutput($string)
{
return OutputFormatter::escape(
$this->removeControlCharacters($string)
);
}
/** /**
* @param string $string * @param string $string
* @return string * @return string

View File

@ -149,11 +149,16 @@ class SuggestedPackagesReporterTest extends \PHPUnit_Framework_TestCase
*/ */
public function testOutputIgnoresFormatting() public function testOutputIgnoresFormatting()
{ {
$this->suggestedPackagesReporter->addPackage('source', 'target', "\x1b[1;37;42m Like us\r\non Facebook \x1b[0m"); $this->suggestedPackagesReporter->addPackage('source', 'target1', "\x1b[1;37;42m Like us\r\non Facebook \x1b[0m");
$this->suggestedPackagesReporter->addPackage('source', 'target2', "<bg=green>Like us on Facebook</>");
$this->io->expects($this->once()) $this->io->expects($this->at(0))
->method('writeError') ->method('writeError')
->with("source suggests installing target ([1;37;42m Like us on Facebook [0m)"); ->with("source suggests installing target1 ([1;37;42m Like us on Facebook [0m)");
$this->io->expects($this->at(1))
->method('writeError')
->with('source suggests installing target2 (\\<bg=green>Like us on Facebook\\</>)');
$this->suggestedPackagesReporter->output(); $this->suggestedPackagesReporter->output();
} }