Skip to content

[Process] Use correct test for empty string in UnixPipes #11264

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

whs
Copy link
Contributor

@whs whs commented Jul 1, 2014

Process sometimes omit 0 as the test use PHP's equality to check read string. This PR correctly check for empty string.

Fix for master branch also available in this repository.

Q A
Bug fix? yes
New feature? no
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets -
License MIT
Doc PR -

$data .= $dataread;
}

if ($data) {
if (0 < strlen($data)) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

given that the previous code always ensure $data is a string, I don't see the point of this change

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sometimes $data is '0' thus making this if condition false. I was using $data !== '' but I noticed that in WindowsPipes similar check to this one is used

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer '' !== $data

@romainneutron
Copy link
Contributor

I just tested this PR and tests don't pass, they're hanging on the testProcessPipes I guess. I think we should rely on

while ('' !== $dataread = (string) fread($pipe, self::CHUNK_SIZE)) {

Please also add a unit test, I think it's easily doable within the dataProvider of testProcessPipes.

Last but not least, this patch should come in 2.3 (data is fetched this way in this version too), I'll manage to port the update in other versions

@whs
Copy link
Contributor Author

whs commented Jul 3, 2014

Unit test added and tests passed.

@@ -306,6 +306,12 @@ public function testFlushOutput()
$this->assertEmpty($p->getOutput());
}

public function testZeroAsOutput(){
$p = $this->getProcess('echo -n 0');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this works correctly in bash, however in does not work in sh (-n option does not exist). PHP might wrap commands with sh and results with -n 0 as output (for example on my laptop).

You can use printf 0 which result in the same output and is much more compatible I think.

@romainneutron
Copy link
Contributor

👍 With a note for myself : merge this in 2.3

@romainneutron
Copy link
Contributor

ping @symfony/deciders Anybody against/in favor of this one ?

@@ -335,11 +335,11 @@ private function readStreams($blocking, $close = false)
$type = array_search($pipe, $this->pipes);

$data = '';
while ($dataread = fread($pipe, self::CHUNK_SIZE)) {
while ('' !== $dataread = (string) fread($pipe, self::CHUNK_SIZE)) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not false !== $dataread = fread($pipe, self::CHUNK_SIZE)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nvm, I found the answer in the previous coomments.

@jakzal
Copy link
Contributor

jakzal commented Jul 12, 2014

👍

1 similar comment
@fabpot
Copy link
Member

fabpot commented Jul 12, 2014

👍

@romainneutron
Copy link
Contributor

This PR is not mergeable in 2.3 using gh, I supersede it in #11381

romainneutron added a commit to romainneutron/symfony that referenced this pull request Jul 16, 2014
romainneutron added a commit to romainneutron/symfony that referenced this pull request Jul 16, 2014
fabpot added a commit that referenced this pull request Jul 16, 2014
…ipes (whs, romainneutron)

This PR was merged into the 2.3 branch.

Discussion
----------

[2.3] [Process] Use correct test for empty string in UnixPipes

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | n/a
| License       | MIT
| Doc PR        | n/a

This PR supersedes #11264 : 2.3 compatibility + Windows compatibility + CS fix

Commits
-------

cec0a45 [Process] Adjust PR #11264, make it Windows compatible and fix CS
9e1ea4a [Process] Use correct test for empty string in UnixPipes
fabpot added a commit that referenced this pull request Jul 16, 2014
* 2.3:
  [Process] Adjust PR #11264, make it Windows compatible and fix CS
  [Process] Fix unit tests on Windows platform
  bumped Symfony version to 2.3.19
  updated VERSION for 2.3.18
  update CONTRIBUTORS for 2.3.18
  updated CHANGELOG for 2.3.18
  [Process] Use correct test for empty string in UnixPipes

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/Process/Tests/AbstractProcessTest.php
fabpot added a commit that referenced this pull request Jul 16, 2014
* 2.4:
  [Process] Adjust PR #11264, make it Windows compatible and fix CS
  [Process] Fix unit tests on Windows platform
  bumped Symfony version to 2.4.9
  bumped Symfony version to 2.3.19
  updated VERSION for 2.4.8
  updated CHANGELOG for 2.4.8
  updated VERSION for 2.3.18
  update CONTRIBUTORS for 2.3.18
  updated CHANGELOG for 2.3.18
  [Process] Use correct test for empty string in UnixPipes

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
fabpot added a commit that referenced this pull request Jul 16, 2014
* 2.5:
  [Process] Adjust PR #11264, make it Windows compatible and fix CS
  [Process] Fix unit tests on Windows platform
  bumped Symfony version to 2.5.3
  bumped Symfony version to 2.4.9
  bumped Symfony version to 2.3.19
  updated VERSION for 2.5.2
  updated CHANGELOG for 2.5.2
  updated VERSION for 2.4.8
  updated CHANGELOG for 2.4.8
  [2.5][Form] solved dependency to ValidatorInterface, fix #11036
  updated VERSION for 2.3.18
  update CONTRIBUTORS for 2.3.18
  updated CHANGELOG for 2.3.18
  [Process] Use correct test for empty string in UnixPipes

Conflicts:
	src/Symfony/Component/HttpKernel/Kernel.php
	src/Symfony/Component/Process/ProcessPipes.php
romainneutron added a commit that referenced this pull request Jul 25, 2014
…romainneutron)

This PR was merged into the 2.3 branch.

Discussion
----------

fix signal handling in wait() on calls to stop()

| Q             | A
| ------------- | ---
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | #11286
| License       | MIT
| Doc PR        |

``wait()`` throws an exception when the process was terminated by a signal. This should not happen when the termination was requested by calling the ``stop()`` method (for example, inside a callback which is passed to ``wait()``).

Commits
-------

5939d34 [Process] Fix unit tests in sigchild environment
eb68662 [Process] fix signal handling in wait()
94ffc4f bug #11469  [BrowserKit] Fixed server HTTP_HOST port uri conversion (bcremer, fabpot)
103fd88 [BrowserKit] refactor code and fix unquoted regex
f401ab9 Fixed server HTTP_HOST port uri conversion
045cbc5 bug #11425 Fix issue described in #11421 (Ben, ben-rosio)
f5bfa9b bug #11423 Pass a Scope instance instead of a scope name when cloning a container in the GrahpvizDumper (jakzal)
3177be5 minor #11464 [Translator] Use quote to surround invalid locale (lyrixx)
c9742ef [Translator] Use quote to surround invalid locale
4dbe0e1 bug #11120 [2.3][Process] Reduce I/O load on Windows platform (romainneutron)
797d814 bug #11342 [2.3][Form] Check if IntlDateFormatter constructor returned a valid object before using it (romainneutron)
0b5348e minor #11441 [Translator] Optimize assertLocale regexp (Jérémy Derussé)
537c39b Optimize assertLocale regexp
4cf50e8 Bring code into standard
9f4313c [Process] Add test to verify fix for issue #11421
02eb765 [Process] Fixes issue #11421
6787669 [DependencyInjection] Pass a Scope instance instead of a scope name.
9572918 bug #11411 [Validator] Backported #11410 to 2.3: Object initializers are called only once per object (webmozart)
291cbf9 [Validator] Backported #11410 to 2.3: Object initializers are called only once per object
efab884 bug #11403 [Translator][FrameworkBundle] Added @ to the list of allowed chars in Translator (takeit)
3176f8b [Translator][FrameworkBundle] Added @ to the list of allowed chars in Translator
91e32f8 bug #11381 [2.3] [Process] Use correct test for empty string in UnixPipes (whs, romainneutron)
45df2f3 minor #11397 [2.3][Process] Fix unit tests on Windows platform (romainneutron)
cec0a45 [Process] Adjust PR #11264, make it Windows compatible and fix CS
d418935 [Process] Fix unit tests on Windows platform
ff0bb01 [Process] Reduce I/O load on Windows platform
ace5a29 bumped Symfony version to 2.3.19
75e07e6 updated VERSION for 2.3.18
4a12f4d update CONTRIBUTORS for 2.3.18
98b891d updated CHANGELOG for 2.3.18
06a80fb Validate locales sets intos translator
06fc97e feature #11367 [HttpFoundation] Fix to prevent magic bytes injection in JSONP responses... (CVE-2014-4671) (Andrew Moore)
3c54659 minor #11387 [2.3] [Validator] Fix UserPassword validator translation (redstar504)
73d50ed Fix UserPassword validator translation
93a970c bug #11386 Remove Spaceless Blocks from Twig Form Templates (chrisguitarguy)
8f9ed3e Remove Spaceless Blocks from Twig Form Templates
9e1ea4a [Process] Use correct test for empty string in UnixPipes
6af3d05 [HttpFoundation] Fix to prevent magic bytes injection in JSONP responses (Prevents CVE-2014-4671)
ebf967d [Form] Check if IntlDateFormatter constructor returned a valid object before using it
oleg-andreyev pushed a commit to oleg-andreyev/symfony that referenced this pull request Jul 25, 2014
* upstream/master: (1619 commits)
  fixed CS
  [Translator] Use quote to surround invalid locale
  Allow exception bubbling in RememberMeListener
  [FrameworkBundle] improved controller name parse error message
  [DomCrawler] Added node name getter
  [Validator] Fixed memory leak in ValidatorBuilder
  [FrameworkBundle] changed KernelTestCase::getKernelClass() to check $_SERVER['KERNEL_DIR'] before invoking getPhpUnitXmlDir()
  [Validator] Improve UserPassword message
  Optimize assertLocale regexp
  [ExpressionLanguage] Fixed an issue with # characters in double quoted string literals
  [Validator] Fixed object initializers in 2.5 version of the Validator
  [Console] Fix test on windows
  Add some tweaks to the pt_BR translations
  [Validator] Backported symfony#11410 to 2.3: Object initializers are called only once per object
  Rename Specificity->compare() to compareTo()
  [Translator][FrameworkBundle] Added @ to the list of allowed chars in Translator
  fixed CS
  Add compare method to Specificity
  [Process] Adjust PR symfony#11264, make it Windows compatible and fix CS
  [Process] Fix unit tests on Windows platform
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants