Merge branch '2.6' into 2.7

* 2.6: (21 commits)
  [FrameworkBundle] Fix title and placeholder rendering in php form templates.
  [TwigBridge] Removed duplicated code from TwigRenderer
  [Translator][Logging] implement TranslatorBagInterface.
  RequestDataCollector - small fix
  renamed composer.phar to composer to be consistent with the Symfony docs
  [FrameworkBundle] bumped min version of Routing to 2.3
  removed composer --dev option everywhere
  fixed a test
  [Console] Fixed output bug, if escaped string in a formatted string.
  “console help” ignores --raw option
  Fix form icon position in web profiler
  [Security] Remove ContextListener's onKernelResponse listener as it is used
  Revert "minor #12652 [HttpFoundation] [Hackday] #9942 test: Request::getContent() for null value (skler)"
  Revert "fixed assertion"
  fixed assertion
  [HttpFoundation] [Hackday] #9942 test: Request::getContent() for null value
  fixed URL
  Add reference to documentation in FormEvents phpdocs
  [YAML] Fix one-liners to work with multiple new lines
  Keep "pre" meaning for var_dump quick-and-dirty debug
  ...

Conflicts:
	src/Symfony/Bridge/Twig/composer.json
	src/Symfony/Bundle/FrameworkBundle/composer.json
	src/Symfony/Component/Security/Http/Firewall/ContextListener.php
	src/Symfony/Component/Security/Http/Tests/Firewall/ContextListenerTest.php
This commit is contained in:
Fabien Potencier 2015-02-11 08:17:51 +01:00
commit 1d45ca894b
53 changed files with 162 additions and 72 deletions

View File

@ -35,10 +35,10 @@ before_install:
- if [ "$TRAVIS_BRANCH" = "master" ]; then export COMPOSER_ROOT_VERSION=dev-master; else export COMPOSER_ROOT_VERSION="$TRAVIS_BRANCH".x-dev; fi; - if [ "$TRAVIS_BRANCH" = "master" ]; then export COMPOSER_ROOT_VERSION=dev-master; else export COMPOSER_ROOT_VERSION="$TRAVIS_BRANCH".x-dev; fi;
install: install:
- if [ "$components" = "no" ]; then composer --prefer-source --dev install; fi; - if [ "$components" = "no" ]; then composer --prefer-source install; fi;
script: script:
- if [ "$components" = "no" ]; then ls -d src/Symfony/*/* | parallel --gnu --keep-order 'echo -e "\\nRunning {} tests"; phpunit --exclude-group tty,benchmark,intl-data {} || (echo -e "\\e[41mKO\\e[0m {}" && $(exit 1));'; fi; - if [ "$components" = "no" ]; then ls -d src/Symfony/*/* | parallel --gnu --keep-order 'echo -e "\\nRunning {} tests"; phpunit --exclude-group tty,benchmark,intl-data {} || (echo -e "\\e[41mKO\\e[0m {}" && $(exit 1));'; fi;
- if [ "$components" = "no" ]; then echo -e "\\nRunning tests requiring tty"; phpunit --group tty || (echo -e "\\e[41mKO\\e[0m tty group" && $(exit 1)); fi; - if [ "$components" = "no" ]; then echo -e "\\nRunning tests requiring tty"; phpunit --group tty || (echo -e "\\e[41mKO\\e[0m tty group" && $(exit 1)); fi;
- if [ "$components" = "high" ]; then find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist | sed 's#\(.*\)/.*#\1#' | parallel --gnu --keep-order -j25% 'echo -e "\\nRunning {} tests"; cd {}; composer --prefer-source --dev update; phpunit --exclude-group tty,benchmark,intl-data || (echo -e "\\e[41mKO\\e[0m {}" && $(exit 1));'; fi; - if [ "$components" = "high" ]; then find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist | sed 's#\(.*\)/.*#\1#' | parallel --gnu --keep-order -j25% 'echo -e "\\nRunning {} tests"; cd {}; composer --prefer-source update; phpunit --exclude-group tty,benchmark,intl-data || (echo -e "\\e[41mKO\\e[0m {}" && $(exit 1));'; fi;
- if [ "$components" = "low" ]; then find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist | sed 's#\(.*\)/.*#\1#' | parallel --gnu --keep-order -j25% 'echo -e "\\nRunning {} tests"; cd {}; composer --prefer-source --dev --prefer-lowest --prefer-stable update; phpunit --exclude-group tty,benchmark,intl-data || (echo -e "\\e[41mKO\\e[0m {}" && $(exit 1));'; fi; - if [ "$components" = "low" ]; then find src/Symfony -mindepth 3 -type f -name phpunit.xml.dist | sed 's#\(.*\)/.*#\1#' | parallel --gnu --keep-order -j25% 'echo -e "\\nRunning {} tests"; cd {}; composer --prefer-source --prefer-lowest --prefer-stable update; phpunit --exclude-group tty,benchmark,intl-data || (echo -e "\\e[41mKO\\e[0m {}" && $(exit 1));'; fi;

View File

@ -10,5 +10,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Bridge/Doctrine/ $ cd path/to/Symfony/Bridge/Doctrine/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -9,5 +9,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Bridge/Monolog/ $ cd path/to/Symfony/Bridge/Monolog/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -9,5 +9,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Bridge/Propel1/ $ cd path/to/Symfony/Bridge/Propel1/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -9,7 +9,7 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Bridge/ProxyManager/ $ cd path/to/Symfony/Bridge/ProxyManager/
$ composer.phar install --dev $ composer install
$ phpunit $ phpunit
[1]: https://github.com/Ocramius/ProxyManager [1]: https://github.com/Ocramius/ProxyManager

View File

@ -11,11 +11,7 @@
namespace Symfony\Bridge\Twig\Form; namespace Symfony\Bridge\Twig\Form;
use Symfony\Component\Form\Exception\UnexpectedTypeException;
use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderAdapter;
use Symfony\Component\Form\Extension\Csrf\CsrfProvider\CsrfProviderInterface;
use Symfony\Component\Form\FormRenderer; use Symfony\Component\Form\FormRenderer;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
/** /**
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
@ -29,12 +25,6 @@ class TwigRenderer extends FormRenderer implements TwigRendererInterface
public function __construct(TwigRendererEngineInterface $engine, $csrfTokenManager = null) public function __construct(TwigRendererEngineInterface $engine, $csrfTokenManager = null)
{ {
if ($csrfTokenManager instanceof CsrfProviderInterface) {
$csrfTokenManager = new CsrfProviderAdapter($csrfTokenManager);
} elseif (null !== $csrfTokenManager && !$csrfTokenManager instanceof CsrfTokenManagerInterface) {
throw new UnexpectedTypeException($csrfTokenManager, 'CsrfProviderInterface or CsrfTokenManagerInterface');
}
parent::__construct($engine, $csrfTokenManager); parent::__construct($engine, $csrfTokenManager);
$this->engine = $engine; $this->engine = $engine;

View File

@ -11,5 +11,5 @@ If you want to run the unit tests, install dev dependencies before
running PHPUnit: running PHPUnit:
$ cd path/to/Symfony/Bridge/Twig/ $ cd path/to/Symfony/Bridge/Twig/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -17,7 +17,6 @@
], ],
"require": { "require": {
"php": ">=5.3.9", "php": ">=5.3.9",
"symfony/security-csrf": "~2.6|~3.0.0",
"twig/twig": "~1.18" "twig/twig": "~1.18"
}, },
"require-dev": { "require-dev": {

View File

@ -284,13 +284,13 @@ class FrameworkExtension extends Extension
return; return;
} }
$loader->load('profiling.xml');
$loader->load('collectors.xml');
if (true === $this->formConfigEnabled) { if (true === $this->formConfigEnabled) {
$loader->load('form_debug.xml'); $loader->load('form_debug.xml');
} }
$loader->load('profiling.xml');
$loader->load('collectors.xml');
$container->setParameter('profiler_listener.only_exceptions', $config['only_exceptions']); $container->setParameter('profiler_listener.only_exceptions', $config['only_exceptions']);
$container->setParameter('profiler_listener.only_master_requests', $config['only_master_requests']); $container->setParameter('profiler_listener.only_master_requests', $config['only_master_requests']);

View File

@ -62,7 +62,7 @@ img {
width: 970px; width: 970px;
margin: 0 auto; margin: 0 auto;
} }
pre { #content pre {
white-space: normal; white-space: normal;
font-family: Arial, Helvetica, sans-serif; font-family: Arial, Helvetica, sans-serif;
} }

View File

@ -2,7 +2,7 @@ id="<?php echo $view->escape($id) ?>" name="<?php echo $view->escape($full_name)
<?php if ($disabled): ?>disabled="disabled" <?php endif ?> <?php if ($disabled): ?>disabled="disabled" <?php endif ?>
<?php if ($required): ?>required="required" <?php endif ?> <?php if ($required): ?>required="required" <?php endif ?>
<?php foreach ($attr as $k => $v): ?> <?php foreach ($attr as $k => $v): ?>
<?php if (in_array($v, array('placeholder', 'title'), true)): ?> <?php if (in_array($k, array('placeholder', 'title'), true)): ?>
<?php printf('%s="%s" ', $view->escape($k), $view->escape($view['translator']->trans($v, array(), $translation_domain))) ?> <?php printf('%s="%s" ', $view->escape($k), $view->escape($view['translator']->trans($v, array(), $translation_domain))) ?>
<?php elseif ($v === true): ?> <?php elseif ($v === true): ?>
<?php printf('%s="%s" ', $view->escape($k), $view->escape($k)) ?> <?php printf('%s="%s" ', $view->escape($k), $view->escape($k)) ?>

View File

@ -19,5 +19,5 @@ provided by the HttpKernel component.
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/BrowserKit/ $ cd path/to/Symfony/Component/BrowserKit/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -81,5 +81,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/ClassLoader/ $ cd path/to/Symfony/Component/ClassLoader/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -12,6 +12,6 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Config/ $ cd path/to/Symfony/Component/Config/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -83,7 +83,7 @@ EOF
$helper = new DescriptorHelper(); $helper = new DescriptorHelper();
$helper->describe($output, $this->command, array( $helper->describe($output, $this->command, array(
'format' => $input->getOption('format'), 'format' => $input->getOption('format'),
'raw' => $input->getOption('raw'), 'raw_text' => $input->getOption('raw'),
)); ));
$this->command = null; $this->command = null;

View File

@ -150,6 +150,10 @@ class OutputFormatter implements OutputFormatterInterface
$pos = $match[1]; $pos = $match[1];
$text = $match[0]; $text = $match[0];
if (0 != $pos && '\\' == $message[$pos - 1]) {
continue;
}
// add the text up to the next tag // add the text up to the next tag
$output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset)); $output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset));
$offset = $pos + strlen($text); $offset = $pos + strlen($text);
@ -164,9 +168,6 @@ class OutputFormatter implements OutputFormatterInterface
if (!$open && !$tag) { if (!$open && !$tag) {
// </> // </>
$this->styleStack->pop(); $this->styleStack->pop();
} elseif ($pos && '\\' == $message[$pos - 1]) {
// escaped tag
$output .= $this->applyCurrentStyle($text);
} elseif (false === $style = $this->createStyleFromString(strtolower($tag))) { } elseif (false === $style = $this->createStyleFromString(strtolower($tag))) {
$output .= $this->applyCurrentStyle($text); $output .= $this->applyCurrentStyle($text);
} elseif ($open) { } elseif ($open) {

View File

@ -43,7 +43,7 @@ abstract class Helper implements HelperInterface
} }
/** /**
* Returns the length of a string, using mb_strlen if it is available. * Returns the length of a string, using mb_strwidth if it is available.
* *
* @param string $string The string to check its length * @param string $string The string to check its length
* *

View File

@ -307,8 +307,8 @@ class Table
$width = $this->getColumnWidth($column); $width = $this->getColumnWidth($column);
// str_pad won't work properly with multi-byte strings, we need to fix the padding // str_pad won't work properly with multi-byte strings, we need to fix the padding
if (function_exists('mb_strlen') && false !== $encoding = mb_detect_encoding($cell)) { if (function_exists('mb_strwidth') && false !== $encoding = mb_detect_encoding($cell)) {
$width += strlen($cell) - mb_strlen($cell, $encoding); $width += strlen($cell) - mb_strwidth($cell, $encoding);
} }
$width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell); $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell);

View File

@ -50,7 +50,7 @@ Tests
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Console/ $ cd path/to/Symfony/Component/Console/
$ composer.phar install $ composer install
$ phpunit $ phpunit
Third Party Third Party

View File

@ -101,6 +101,11 @@ class OutputFormatterTest extends \PHPUnit_Framework_TestCase
"(\033[32mz>=2.0,<a2.3\033[39m)", "(\033[32mz>=2.0,<a2.3\033[39m)",
$formatter->format('(<info>'.$formatter->escape('z>=2.0,<a2.3').'</info>)') $formatter->format('(<info>'.$formatter->escape('z>=2.0,<a2.3').'</info>)')
); );
$this->assertEquals(
"\033[32m<error>some error</error>\033[0m",
$formatter->format('<info>'.$formatter->escape('<error>some error</error>').'</info>')
);
} }
public function testDeepNestedStyles() public function testDeepNestedStyles()

View File

@ -256,7 +256,7 @@ TABLE
public function testRenderMultiByte() public function testRenderMultiByte()
{ {
if (!function_exists('mb_strlen')) { if (!function_exists('mb_strwidth')) {
$this->markTestSkipped('The "mbstring" extension is not available'); $this->markTestSkipped('The "mbstring" extension is not available');
} }
@ -276,6 +276,33 @@ TABLE
| 1234 | | 1234 |
+------+ +------+
TABLE;
$this->assertEquals($expected, $this->getOutputContent($output));
}
public function testRenderFullWidthCharacters()
{
if (!function_exists('mb_strwidth')) {
$this->markTestSkipped('The "mbstring" extension is not available');
}
$table = new TableHelper();
$table
->setHeaders(array('あいうえお'))
->setRows(array(array(1234567890)))
->setLayout(TableHelper::LAYOUT_DEFAULT)
;
$table->render($output = $this->getOutputStream());
$expected =
<<<TABLE
+------------+
| あいうえお |
+------------+
| 1234567890 |
+------------+
TABLE; TABLE;
$this->assertEquals($expected, $this->getOutputContent($output)); $this->assertEquals($expected, $this->getOutputContent($output));

View File

@ -43,5 +43,5 @@ which is distributed under the BSD license.
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/CssSelector/ $ cd path/to/Symfony/Component/CssSelector/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -39,5 +39,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Debug/ $ cd path/to/Symfony/Component/Debug/
$ composer.phar install --dev $ composer install
$ phpunit $ phpunit

View File

@ -76,5 +76,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/DependencyInjection/ $ cd path/to/Symfony/Component/DependencyInjection/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -32,5 +32,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/DomCrawler/ $ cd path/to/Symfony/Component/DomCrawler/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -23,5 +23,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/EventDispatcher/ $ cd path/to/Symfony/Component/EventDispatcher/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -43,5 +43,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Filesystem/ $ cd path/to/Symfony/Component/Filesystem/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -45,7 +45,7 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Finder/ $ cd path/to/Symfony/Component/Finder/
$ composer.phar install $ composer install
$ phpunit $ phpunit
[1]: http://api.symfony.com/2.5/Symfony/Component/Finder/SplFileInfo.html [1]: http://api.symfony.com/2.5/Symfony/Component/Finder/SplFileInfo.html

View File

@ -13,6 +13,12 @@ namespace Symfony\Component\Form;
use Symfony\Component\Form\Deprecated\FormEvents as Deprecated; use Symfony\Component\Form\Deprecated\FormEvents as Deprecated;
/** /**
* To learn more about how form events work check the documentation
* entry at {@link http://symfony.com/doc/any/components/form/form_events.html}
*
* To learn how to dynamically modify forms using events check the cookbook
* entry at {@link http://symfony.com/doc/any/cookbook/form/dynamic_form_modification.html}
*
* @author Bernhard Schussek <bschussek@gmail.com> * @author Bernhard Schussek <bschussek@gmail.com>
*/ */
final class FormEvents final class FormEvents

View File

@ -22,5 +22,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Form/ $ cd path/to/Symfony/Component/Form/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -2107,4 +2107,18 @@ abstract class AbstractLayoutTest extends \Symfony\Component\Form\Test\FormInteg
// no foo // no foo
$this->assertNotContains('foo="', $html); $this->assertNotContains('foo="', $html);
} }
public function testTranslatedAttributes()
{
$view = $this->factory->createNamedBuilder('name', 'form')
->add('firstName', 'text', array('attr' => array('title' => 'Foo')))
->add('lastName', 'text', array('attr' => array('placeholder' => 'Bar')))
->getForm()
->createView();
$html = $this->renderForm($view);
$this->assertMatchesXpath($html, '/form//input[@title="[trans]Foo[/trans]"]');
$this->assertMatchesXpath($html, '/form//input[@placeholder="[trans]Bar[/trans]"]');
}
} }

View File

@ -52,5 +52,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/HttpFoundation/ $ cd path/to/Symfony/Component/HttpFoundation/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -91,7 +91,7 @@ class RequestDataCollector extends DataCollector implements EventSubscriberInter
$this->data = array( $this->data = array(
'format' => $request->getRequestFormat(), 'format' => $request->getRequestFormat(),
'content' => $content, 'content' => $content,
'content_type' => $response->headers->get('Content-Type') ? $response->headers->get('Content-Type') : 'text/html', 'content_type' => $response->headers->get('Content-Type', 'text/html'),
'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '', 'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '',
'status_code' => $statusCode, 'status_code' => $statusCode,
'request_query' => $request->query->all(), 'request_query' => $request->query->all(),

View File

@ -95,5 +95,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/HttpKernel/ $ cd path/to/Symfony/Component/HttpKernel/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -10,7 +10,7 @@ Preparation
To prepare, you need to install the development dependencies of the component. To prepare, you need to install the development dependencies of the component.
$ cd /path/to/Symfony/Component/Intl $ cd /path/to/Symfony/Component/Intl
$ composer.phar install --dev $ composer install
Determining your ICU version Determining your ICU version
--------------------------- ---------------------------

View File

@ -18,7 +18,7 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Intl/ $ cd path/to/Symfony/Component/Intl/
$ composer.phar install --dev $ composer install
$ phpunit $ phpunit
[0]: http://www.php.net/manual/en/intl.setup.php [0]: http://www.php.net/manual/en/intl.setup.php

View File

@ -50,7 +50,7 @@ the subdirectories bin/ and lib/.
For running this script, the intl extension must be loaded and all vendors For running this script, the intl extension must be loaded and all vendors
must have been installed through composer: must have been installed through composer:
composer install --dev composer install
MESSAGE MESSAGE
); );

View File

@ -14,7 +14,7 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/OptionsResolver/ $ cd path/to/Symfony/Component/OptionsResolver/
$ composer.phar install $ composer install
$ phpunit $ phpunit
[1]: http://symfony.com/doc/current/components/options_resolver.html [1]: http://symfony.com/doc/current/components/options_resolver.html

View File

@ -47,5 +47,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Process/ $ cd path/to/Symfony/Component/Process/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -10,5 +10,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/PropertyAccess/ $ cd path/to/Symfony/Component/PropertyAccess/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -32,5 +32,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Routing/ $ cd path/to/Symfony/Component/Routing/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -115,6 +115,9 @@ class ContextListener implements ListenerInterface
return; return;
} }
$this->dispatcher->removeListener(KernelEvents::RESPONSE, array($this, 'onKernelResponse'));
$this->registered = false;
$request = $event->getRequest(); $request = $event->getRequest();
$session = $request->getSession(); $session = $request->getSession();

View File

@ -21,6 +21,7 @@ use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Http\Firewall\ContextListener; use Symfony\Component\Security\Http\Firewall\ContextListener;
use Symfony\Component\EventDispatcher\EventDispatcher;
class ContextListenerTest extends \PHPUnit_Framework_TestCase class ContextListenerTest extends \PHPUnit_Framework_TestCase
{ {
@ -99,7 +100,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
new Response() new Response()
); );
$listener = new ContextListener($tokenStorage, array(), 'session'); $listener = new ContextListener($tokenStorage, array(), 'session', null, new EventDispatcher());
$listener->onKernelResponse($event); $listener->onKernelResponse($event);
$this->assertTrue($session->isStarted()); $this->assertTrue($session->isStarted());
@ -118,7 +119,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
new Response() new Response()
); );
$listener = new ContextListener(new TokenStorage(), array(), 'session'); $listener = new ContextListener(new TokenStorage(), array(), 'session', null, new EventDispatcher());
$listener->onKernelResponse($event); $listener->onKernelResponse($event);
$this->assertFalse($session->isStarted()); $this->assertFalse($session->isStarted());
@ -190,6 +191,35 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
$listener->handle($event); $listener->handle($event);
} }
public function testOnKernelResponseListenerRemovesItself()
{
$tokenStorage = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface');
$dispatcher = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
$event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FilterResponseEvent')
->disableOriginalConstructor()
->getMock();
$listener = new ContextListener($tokenStorage, array(), 'key123', null, $dispatcher);
$request = $this->getMock('Symfony\Component\HttpFoundation\Request');
$request->expects($this->any())
->method('hasSession')
->will($this->returnValue(true));
$event->expects($this->any())
->method('isMasterRequest')
->will($this->returnValue(true));
$event->expects($this->any())
->method('getRequest')
->will($this->returnValue($request));
$dispatcher->expects($this->once())
->method('removeListener')
->with(KernelEvents::RESPONSE, array($listener, 'onKernelResponse'));
$listener->onKernelResponse($event);
}
public function testHandleRemovesTokenIfNoPreviousSessionWasFound() public function testHandleRemovesTokenIfNoPreviousSessionWasFound()
{ {
$request = $this->getMock('Symfony\Component\HttpFoundation\Request'); $request = $this->getMock('Symfony\Component\HttpFoundation\Request');
@ -229,7 +259,7 @@ class ContextListenerTest extends \PHPUnit_Framework_TestCase
new Response() new Response()
); );
$listener = new ContextListener($tokenStorage, array(), 'session'); $listener = new ContextListener($tokenStorage, array(), 'session', null, new EventDispatcher());
$listener->onKernelResponse($event); $listener->onKernelResponse($event);
return $session; return $session;

View File

@ -19,5 +19,5 @@ Tests
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Security/ $ cd path/to/Symfony/Component/Security/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -11,5 +11,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Serializer/ $ cd path/to/Symfony/Component/Serializer/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -9,5 +9,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Stopwatch/ $ cd path/to/Symfony/Component/Stopwatch/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -14,5 +14,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Templating/ $ cd path/to/Symfony/Component/Templating/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -16,7 +16,7 @@ use Psr\Log\LoggerInterface;
/** /**
* @author Abdellatif Ait boudad <a.aitboudad@gmail.com> * @author Abdellatif Ait boudad <a.aitboudad@gmail.com>
*/ */
class LoggingTranslator implements TranslatorInterface class LoggingTranslator implements TranslatorInterface, TranslatorBagInterface
{ {
/** /**
* @var TranslatorInterface * @var TranslatorInterface
@ -84,6 +84,14 @@ class LoggingTranslator implements TranslatorInterface
return $this->translator->getLocale(); return $this->translator->getLocale();
} }
/**
* {@inheritdoc}
*/
public function getCatalogue($locale = null)
{
return $this->translator->getCatalogue($locale);
}
/** /**
* Passes through all unknown calls onto the translator object. * Passes through all unknown calls onto the translator object.
*/ */

View File

@ -33,5 +33,5 @@ http://symfony.com/doc/2.7/book/translation.html
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Translation/ $ cd path/to/Symfony/Component/Translation/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -122,5 +122,5 @@ http://jcp.org/en/jsr/detail?id=303
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Validator/ $ cd path/to/Symfony/Component/Validator/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -52,13 +52,13 @@ class Parser
*/ */
public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false) public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false)
{ {
$this->currentLineNb = -1;
$this->currentLine = '';
$this->lines = explode("\n", $this->cleanup($value));
if (!preg_match('//u', $value)) { if (!preg_match('//u', $value)) {
throw new ParseException('The YAML value does not appear to be valid UTF-8.'); throw new ParseException('The YAML value does not appear to be valid UTF-8.');
} }
$this->currentLineNb = -1;
$this->currentLine = '';
$value = $this->cleanup($value);
$this->lines = explode("\n", $value);
if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) { if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) {
$mbEncoding = mb_internal_encoding(); $mbEncoding = mb_internal_encoding();
@ -233,9 +233,8 @@ class Parser
throw new ParseException('Multiple documents are not supported.'); throw new ParseException('Multiple documents are not supported.');
} }
// 1-liner optionally followed by newline // 1-liner optionally followed by newline(s)
$lineCount = count($this->lines); if ($this->lines[0] === trim($value)) {
if (1 === $lineCount || (2 === $lineCount && empty($this->lines[1]))) {
try { try {
$value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); $value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs);
} catch (ParseException $e) { } catch (ParseException $e) {

View File

@ -17,5 +17,5 @@ Resources
You can run the unit tests with the following command: You can run the unit tests with the following command:
$ cd path/to/Symfony/Component/Yaml/ $ cd path/to/Symfony/Component/Yaml/
$ composer.phar install $ composer install
$ phpunit $ phpunit

View File

@ -135,6 +135,14 @@ EOF;
); );
$tests['Literal block chomping strip with multiple trailing newlines'] = array($expected, $yaml); $tests['Literal block chomping strip with multiple trailing newlines'] = array($expected, $yaml);
$yaml = <<<'EOF'
{}
EOF;
$expected = array();
$tests['Literal block chomping strip with multiple trailing newlines after a 1-liner'] = array($expected, $yaml);
$yaml = <<<'EOF' $yaml = <<<'EOF'
foo: |- foo: |-
one one