Merge branch '3.0'

* 3.0:
  [Process] Fix stream_select priority when writing to stdin
  bumped Symfony version to 3.0.5
  updated VERSION for 3.0.4
  updated CHANGELOG for 3.0.4
  [Form] NumberToLocalizedStringTransformer should return floats when possible
  [Form] remove useless code in ChoiceType
  [DependencyInjection] Enabled alias for service_container

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/Process/Pipes/AbstractPipes.php
This commit is contained in:
Nicolas Grekas 2016-03-31 10:13:34 +02:00
commit 6ed73d56d9
10 changed files with 105 additions and 10 deletions

View File

@ -7,6 +7,66 @@ in 3.0 minor versions.
To get the diff for a specific change, go to https://github.com/symfony/symfony/commit/XXX where XXX is the change hash
To get the diff between two versions, go to https://github.com/symfony/symfony/compare/v3.0.0...v3.0.1
* 3.0.4 (2016-03-30)
* bug #18352 [Debug] Fix case sensitivity checks (nicolas-grekas)
* bug #18336 [Debug] Fix handling of php7 throwables (nicolas-grekas)
* bug #18354 [FrameworkBundle][TwigBridge] fix high deps tests (xabbuh)
* bug #18312 [ClassLoader] Fix storing not-found classes in APC cache (nicolas-grekas)
* bug #18298 [Validator] do not treat payload as callback (xabbuh)
* bug #18275 [Form] Fix BC break introduced in #14403 (HeahDude)
* bug #18271 [FileSystem] Google app engine filesystem (swordbeta)
* bug #18255 [HttpFoundation] Fix support of custom mime types with parameters (Ener-Getick)
* bug #18272 [Bridge\PhpUnit] Workaround old phpunit bug, no colors in weak mode, add tests (nicolas-grekas)
* bug #18259 [PropertyAccess] Backport fixes from 2.7 (nicolas-grekas)
* bug #18261 [PropertyAccess] Fix isPropertyWritable not using the reflection cache (nicolas-grekas)
* bug #18224 [PropertyAccess] Remove most ref mismatches to improve perf (nicolas-grekas)
* bug #18237 [WebProfilerBundle] Added table-layout property to AJAX toolbar css (kevintweber)
* bug #18209 [PropertyInfo] Support Doctrine custom mapping type in DoctrineExtractor (teohhanhui)
* bug #18210 [PropertyAccess] Throw an UnexpectedTypeException when the type do not match (dunglas, nicolas-grekas)
* bug #18216 [Intl] Fix invalid numeric literal on PHP 7 (nicolas-grekas)
* bug #18147 [Validator] EmailValidator cannot extract hostname if email contains multiple @ symbols (natechicago)
* bug #18023 [Process] getIncrementalOutput should work without calling getOutput (romainneutron)
* bug #18175 [Translation] Add support for fuzzy tags in PoFileLoader (nud)
* bug #18179 [Form] Fix NumberToLocalizedStringTransformer::reverseTransform with big integers (ovrflo, nicolas-grekas)
* bug #18164 [HttpKernel] set s-maxage only if all responses are cacheable (xabbuh)
* bug #18150 [Process] Wait a bit less on Windows (nicolas-grekas)
* bug #18130 [Debug] Replaced logic for detecting filesystem case sensitivity (Dan Blows)
* bug #18137 Autowiring the concrete class too - consistent with behavior of other services (weaverryan)
* bug #18087 [WebProfiler] Sidebar button padding (rvanlaak)
* bug #18080 [HttpFoundation] Set the Content-Range header if the requested Range is unsatisfied (jakzal)
* bug #18084 [HttpFoundation] Avoid warnings when checking malicious IPs (jakzal)
* bug #18066 [Process] Fix pipes handling (nicolas-grekas)
* bug #18078 [Console] Fix an autocompletion question helper issue with non-sequentially indexed choices (jakzal)
* bug #18048 [HttpKernel] Fix mem usage when stripping the prod container (nicolas-grekas)
* bug #18065 [Finder] Partially revert #17134 to fix a regression (jakzal)
* bug #18018 [HttpFoundation] exception when registering bags for started sessions (xabbuh)
* bug #18054 [Filesystem] Fix false positive in ->remove() (nicolas-grekas)
* bug #18049 [Validator] Fix the locale validator so it treats a locale alias as a valid locale (jakzal)
* bug #18019 [Intl] Update ICU to version 55 (jakzal)
* bug #18015 [Process] Fix memory issue when using large input streams (romainneutron)
* bug #16656 [HttpFoundation] automatically generate safe fallback filename (xabbuh)
* bug #15794 [Console] default to stderr in the console helpers (alcohol)
* bug #17984 Allow to normalize \Traversable when serializing xml (Ener-Getick)
* bug #17434 Improved the error message when a template is not found (rvanginneken, javiereguiluz)
* bug #17687 Improved the error message when using "@" in a decorated service (javiereguiluz)
* bug #17744 Improve error reporting in router panel of web profiler (javiereguiluz)
* bug #17894 [FrameworkBundle] Fix a regression in handling absolute template paths (jakzal)
* bug #17990 [DoctrineBridge][Form] Fix performance regression in EntityType (kimlai)
* bug #17595 [HttpKernel] Remove _path from query parameters when fragment is a subrequest (cmenning)
* bug #17986 [DomCrawler] Dont use LIBXML_PARSEHUGE by default (nicolas-grekas)
* bug #17668 add 'guid' to list of exception to filter out (garak)
* bug #17615 Ensure backend slashes for symlinks on Windows systems (cpsitgmbh)
* bug #17626 Try to delete broken symlinks (IchHabRecht)
* bug #17978 [Yaml] ensure dump indentation to be greather than zero (xabbuh)
* bug #16886 [Form] [ChoiceType] Prefer placeholder to empty_value (boite)
* bug #17976 [WebProfilerBundle] fix debug toolbar rendering by removing inadvertently added links (craue)
* bug #17971 Variadic controller params (NiR-, fabpot)
* bug #17876 [DependencyInjection] Fixing autowiring bug when some args are set (weaverryan)
* bug #17568 Improved Bootstrap form theme for hidden fields (javiereguiluz)
* bug #17561 [WebProfilerBundle] Fix design issue in profiler when having errors in forms (Pierstoval)
* bug #17925 [Bridge] The WebProcessor now forwards the client IP (magnetik)
* 3.0.3 (2016-02-28)
* bug #17919 #17676 - making the proxy instantiation compatible with ProxyManager 2.x by detecting proxy features (Ocramius)

View File

@ -42,6 +42,10 @@ class ReplaceAliasByActualDefinitionPass implements CompilerPassInterface
foreach ($container->getAliases() as $id => $alias) {
$aliasId = (string) $alias;
if ('service_container' === $aliasId) {
continue;
}
try {
$definition = $container->getDefinition($aliasId);
} catch (InvalidArgumentException $e) {

View File

@ -34,6 +34,8 @@ class ReplaceAliasByActualDefinitionPassTest extends \PHPUnit_Framework_TestCase
$container->setAlias('a_alias', 'a');
$container->setAlias('b_alias', 'b');
$container->setAlias('container', 'service_container');
$this->process($container);
$this->assertTrue($container->has('a'), '->process() does nothing to public definitions.');
@ -44,6 +46,8 @@ class ReplaceAliasByActualDefinitionPassTest extends \PHPUnit_Framework_TestCase
'->process() replaces alias to actual.'
);
$this->assertTrue($container->has('container'));
$resolvedFactory = $aDefinition->getFactory(false);
$this->assertSame('b_alias', (string) $resolvedFactory[0]);
}

View File

@ -181,6 +181,10 @@ class NumberToLocalizedStringTransformer implements DataTransformerInterface
throw new TransformationFailedException('I don\'t have a clear idea what infinity looks like');
}
if (is_int($result) && $result === (int) $float = (float) $result) {
$result = $float;
}
if (false !== $encoding = mb_detect_encoding($value, null, true)) {
$length = mb_strlen($value, $encoding);
$remainder = mb_substr($value, $position, $length, $encoding);

View File

@ -345,7 +345,7 @@ class ChoiceType extends AbstractType
$resolver->setAllowedTypes('choice_value', array('null', 'callable', 'string', 'Symfony\Component\PropertyAccess\PropertyPath'));
$resolver->setAllowedTypes('choice_attr', array('null', 'array', 'callable', 'string', 'Symfony\Component\PropertyAccess\PropertyPath'));
$resolver->setAllowedTypes('preferred_choices', array('array', '\Traversable', 'callable', 'string', 'Symfony\Component\PropertyAccess\PropertyPath'));
$resolver->setAllowedTypes('group_by', array('null', 'array', '\Traversable', 'callable', 'string', 'Symfony\Component\PropertyAccess\PropertyPath'));
$resolver->setAllowedTypes('group_by', array('null', 'callable', 'string', 'Symfony\Component\PropertyAccess\PropertyPath'));
}
/**
@ -428,12 +428,6 @@ class ChoiceType extends AbstractType
private function createChoiceListView(ChoiceListInterface $choiceList, array $options)
{
// If no explicit grouping information is given, use the structural
// information from the "choices" option for creating groups
if (!$options['group_by'] && $options['choices']) {
$options['group_by'] = $options['choices'];
}
return $this->choiceListFactory->createView(
$choiceList,
$options['preferred_choices'],

View File

@ -637,10 +637,17 @@ class NumberToLocalizedStringTransformerTest extends \PHPUnit_Framework_TestCase
$transformer->reverseTransform("12\xc2\xa0345,678foo");
}
public function testReverseTransformBigint()
public function testReverseTransformBigInt()
{
$transformer = new NumberToLocalizedStringTransformer(null, true);
$this->assertEquals(PHP_INT_MAX - 1, (int) $transformer->reverseTransform((string) (PHP_INT_MAX - 1)));
}
public function testReverseTransformSmallInt()
{
$transformer = new NumberToLocalizedStringTransformer(null, true);
$this->assertSame(1.0, $transformer->reverseTransform('1'));
}
}

View File

@ -120,6 +120,7 @@ abstract class AbstractPipes implements PipesInterface
return array($this->pipes[0]);
}
}
if ($input) {
for (;;) {
$data = fread($input, self::CHUNK_SIZE);

View File

@ -158,7 +158,7 @@ class Process
$this->setEnv($env);
}
$this->input = $input;
$this->setInput($input);
$this->setTimeout($timeout);
$this->useFileHandles = '\\' === DIRECTORY_SEPARATOR;
$this->pty = false;

View File

@ -80,7 +80,7 @@ class ProcessUtils
* @param string $caller The name of method call that validates the input
* @param mixed $input The input to validate
*
* @return string The validated input
* @return mixed The validated input
*
* @throws InvalidArgumentException In case the input is not valid
*/
@ -90,6 +90,9 @@ class ProcessUtils
if (is_resource($input)) {
return $input;
}
if (is_string($input)) {
return $input;
}
if (is_scalar($input)) {
return (string) $input;
}

View File

@ -209,6 +209,24 @@ class ProcessTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($expectedLength, strlen($p->getErrorOutput()));
}
public function testLiveStreamAsInput()
{
$stream = fopen('php://memory', 'r+');
fwrite($stream, 'hello');
rewind($stream);
$p = $this->getProcess(sprintf('%s -r %s', self::$phpBin, escapeshellarg('stream_copy_to_stream(STDIN, STDOUT);')));
$p->setInput($stream);
$p->start(function ($type, $data) use ($stream) {
if ('hello' === $data) {
fclose($stream);
}
});
$p->wait();
$this->assertSame('hello', $p->getOutput());
}
/**
* @expectedException \Symfony\Component\Process\Exception\LogicException
* @expectedExceptionMessage Input can not be set while the process is running.