Skip to content

Commit

Permalink
Merge branch '2.7' into 2.8
Browse files Browse the repository at this point in the history
* 2.7:
  [appveyor] Fix command line
  [Yaml] Fix improper comments removal inside strings
  • Loading branch information
nicolas-grekas committed Oct 2, 2015
2 parents 99745e1 + 9b0fa54 commit 2ff0f97
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 19 deletions.
19 changes: 12 additions & 7 deletions phpunit
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
#!/usr/bin/env php
<?php

use Symfony\Component\Process\ProcessUtils;

error_reporting(-1);
require __DIR__.'/src/Symfony/Component/Process/ProcessUtils.php';

$PHPUNIT_VERSION = '4.8';
$PHPUNIT_DIR = __DIR__.'/.phpunit';
Expand Down Expand Up @@ -32,7 +35,7 @@ if (!file_exists("$PHPUNIT_DIR/phpunit-$PHPUNIT_VERSION/phpunit")) {
chdir($oldPwd);
}

$cmd = array_map('escapeshellarg', $argv);
$cmd = array_map('Symfony\Component\Process\ProcessUtils::escapeArgument', $argv);
$exit = 0;

if (isset($argv[1]) && 'symfony' === $argv[1]) {
Expand All @@ -51,11 +54,13 @@ if ($phpIniMatrix) {

$phpDir = dirname(`where.exe php`);

$newCmd = '(SET X=0';
$newCmd = 'cmd /v:on /d /c "(SET X=0';
foreach ($phpIniMatrix as $iniFile) {
$newCmd .= " & copy /Y $phpDir\\$iniFile $phpDir\\php.ini & echo. & echo Running tests with $iniFile: & $cmd & (if %%errorlevel%% NEQ 0 SET X=1)";
$newCmd .= " & copy /Y $phpDir\\$iniFile $phpDir\\php.ini & echo. & echo Running tests with $iniFile: & ($cmd || SET X=1)";
}
$cmd = $newCmd .= ' & exit %%X%%)';
$cmd = $newCmd .= ' & exit !X!)%2$s"';
} else {
$cmd .= ' %2$s';
}

if (isset($argv[1]) && 'symfony' === $argv[1]) {
Expand All @@ -73,9 +78,9 @@ if (isset($argv[1]) && 'symfony' === $argv[1]) {

// Run phpunit tests in parallel

$c = escapeshellarg($component);
$c = ProcessUtils::escapeArgument($component);

if ($proc = proc_open(sprintf($cmd, $c)." > $c/phpunit.stdout 2> $c/phpunit.stderr", array(), $pipes)) {
if ($proc = proc_open(sprintf($cmd, $c, " > $c/phpunit.stdout 2> $c/phpunit.stderr"), array(), $pipes)) {
$runningProcs[$component] = $proc;
} else {
$exit = 1;
Expand Down Expand Up @@ -137,7 +142,7 @@ if (isset($argv[1]) && 'symfony' === $argv[1]) {
// Run regular phpunit in a subprocess

$errFile = tempnam(sys_get_temp_dir(), 'phpunit.stderr.');
if ($proc = proc_open(sprintf($cmd, '').' 2> '.escapeshellarg($errFile), array(1 => array('pipe', 'w')), $pipes)) {
if ($proc = proc_open(sprintf($cmd, '', ' 2> '.ProcessUtils::escapeArgument($errFile)), array(1 => array('pipe', 'w')), $pipes)) {
stream_copy_to_stream($pipes[1], STDOUT);
fclose($pipes[1]);
$exit = proc_close($proc);
Expand Down
12 changes: 0 additions & 12 deletions src/Symfony/Component/Yaml/Parser.php
Original file line number Diff line number Diff line change
Expand Up @@ -375,17 +375,9 @@ private function getNextEmbedBlock($indentation = null, $inSequence = false)

$isItUnindentedCollection = $this->isStringUnIndentedCollectionItem($this->currentLine);

// Comments must not be removed inside a block scalar
$removeCommentsPattern = '~'.self::BLOCK_SCALAR_HEADER_PATTERN.'$~';
$removeComments = !preg_match($removeCommentsPattern, $this->currentLine);

while ($this->moveToNextLine()) {
$indent = $this->getCurrentLineIndentation();

if ($indent === $newIndent) {
$removeComments = !preg_match($removeCommentsPattern, $this->currentLine);
}

if ($isItUnindentedCollection && !$this->isStringUnIndentedCollectionItem($this->currentLine) && $newIndent === $indent) {
$this->moveToPreviousLine();
break;
Expand All @@ -396,10 +388,6 @@ private function getNextEmbedBlock($indentation = null, $inSequence = false)
continue;
}

if ($removeComments && $this->isCurrentLineComment()) {
continue;
}

if ($indent >= $newIndent) {
$data[] = substr($this->currentLine, $newIndent);
} elseif (0 == $indent) {
Expand Down
37 changes: 37 additions & 0 deletions src/Symfony/Component/Yaml/Tests/ParserTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -679,6 +679,43 @@ public function testFoldedStringBlockWithComments()
));
}

public function testSecondLevelFoldedStringBlockWithComments()
{
$this->assertEquals(array(
'pages' => array(
array(
'title' => 'some title',
'content' => <<<EOT
# comment 1
header
# comment 2
<body>
<h1>title</h1>
</body>
footer # comment3
EOT
),
),
), Yaml::parse(<<<EOF
pages:
-
title: some title
content: |
# comment 1
header
# comment 2
<body>
<h1>title</h1>
</body>
footer # comment3
EOF
));
}

public function testNestedFoldedStringBlockWithComments()
{
$this->assertEquals(array(array(
Expand Down

0 comments on commit 2ff0f97

Please sign in to comment.