Merge branch '2.7' into 2.8

This commit is contained in:
Tobias Schultze 2015-10-01 17:32:55 +02:00
commit c434bbd5f3
11 changed files with 37 additions and 46 deletions

View File

@ -18,31 +18,6 @@ use Symfony\Component\HttpFoundation\Request;
class ExceptionControllerTest extends TestCase
{
public function testOnlyClearOwnOutputBuffers()
{
$flatten = $this->getMock('Symfony\Component\Debug\Exception\FlattenException');
$flatten
->expects($this->once())
->method('getStatusCode')
->will($this->returnValue(404));
$twig = $this->getMockBuilder('\Twig_Environment')
->disableOriginalConstructor()
->getMock();
$twig
->expects($this->any())
->method('render')
->will($this->returnValue($this->getMock('Symfony\Component\HttpFoundation\Response')));
$twig
->expects($this->any())
->method('getLoader')
->will($this->returnValue($this->getMock('\Twig_LoaderInterface')));
$request = Request::create('/');
$request->headers->set('X-Php-Ob-Level', 1);
$controller = new ExceptionController($twig, false);
$controller->showAction($request, $flatten);
}
public function testShowActionCanBeForcedToShowErrorPage()
{
$twig = new \Twig_Environment(

View File

@ -2,10 +2,10 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has single blank line at start when using block element
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->caution('Lorem ipsum dolor sit amet');
};

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has single blank line between titles and blocks
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->title('Title');
$output->warning('Lorem ipsum dolor sit amet');
$output->title('Title');

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has single blank line between blocks
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->warning('Warning');
$output->caution('Caution');
$output->error('Error');

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has single blank line between two titles
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->title('First title');
$output->title('Second title');
};

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has single blank line after any text and a title
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->write('Lorem ipsum dolor sit amet');
$output->title('First title');

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has proper line ending before outputing a text block like with SymfonyStyle::listing() or SymfonyStyle::text()
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->writeln('Lorem ipsum dolor sit amet');
$output->listing(array(

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure has proper blank line after text block when using a block like with SymfonyStyle::success
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->listing(array(
'Lorem ipsum dolor sit amet',

View File

@ -2,11 +2,11 @@
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Console\Tests\Style\SymfonyStyleWithForcedLineLength;
//Ensure questions do not output anything when input is non-interactive
return function (InputInterface $input, OutputInterface $output) {
$output = new SymfonyStyle($input, $output);
$output = new SymfonyStyleWithForcedLineLength($input, $output);
$output->title('Title');
$output->askHidden('Hidden question');
$output->choice('Choice question with default', array('choice1', 'choice2'), 'choice1');

View File

@ -62,7 +62,7 @@ class SymfonyStyleTest extends PHPUnit_Framework_TestCase
$maxLineLength = SymfonyStyle::MAX_LINE_LENGTH - 3;
$this->command->setCode(function (InputInterface $input, OutputInterface $output) use ($word) {
$sfStyle = new SymfonyStyle($input, $output);
$sfStyle = new SymfonyStyleWithForcedLineLength($input, $output);
$sfStyle->block($word, 'CUSTOM', 'fg=white;bg=blue', ' § ', false);
});
@ -71,3 +71,19 @@ class SymfonyStyleTest extends PHPUnit_Framework_TestCase
$this->assertSame($expectedCount, substr_count($this->tester->getDisplay(true), ' § '));
}
}
/**
* Use this class in tests to force the line length
* and ensure a consistent output for expectations.
*/
class SymfonyStyleWithForcedLineLength extends SymfonyStyle
{
public function __construct(InputInterface $input, OutputInterface $output)
{
parent::__construct($input, $output);
$ref = new \ReflectionProperty(get_parent_class($this), 'lineLength');
$ref->setAccessible(true);
$ref->setValue($this, 120);
}
}

View File

@ -58,7 +58,7 @@ class YamlFileLoader extends FileLoader
}
try {
$config = $this->yamlParser->parse(file_get_contents($path));
$parsedConfig = $this->yamlParser->parse(file_get_contents($path));
} catch (ParseException $e) {
throw new \InvalidArgumentException(sprintf('The file "%s" does not contain valid YAML.', $path), 0, $e);
}
@ -67,16 +67,16 @@ class YamlFileLoader extends FileLoader
$collection->addResource(new FileResource($path));
// empty file
if (null === $config) {
if (null === $parsedConfig) {
return $collection;
}
// not an array
if (!is_array($config)) {
if (!is_array($parsedConfig)) {
throw new \InvalidArgumentException(sprintf('The file "%s" must contain a YAML array.', $path));
}
foreach ($config as $name => $config) {
foreach ($parsedConfig as $name => $config) {
if (isset($config['pattern'])) {
if (isset($config['path'])) {
throw new \InvalidArgumentException(sprintf('The file "%s" cannot define both a "path" and a "pattern" attribute. Use only "path".', $path));