PluginProbe
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance / 3.2.5
WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance v3.2.5
4.7.0 4.6.1 4.6.0 4.5.5 4.5.4 4.5.3 4.5.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.5 3.2.6 3.2.7 3.2.9 3.3.0 3.3.1 3.3.2 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.7.0 3.7.1 All 111 releases
wp-optimize / vendor / symfony / process / Tests / ProcessBuilderTest.php

ProcessBuilderTest.php in WP-Optimize – Cache, Compress images, Minify & Clean database to boost page speed & performance 3.2.5, at vendor/symfony/process/Tests/ProcessBuilderTest.php

221 lines 6.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <[email protected]>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\Process\Tests;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Process\ProcessBuilder;
16
17 /**
18 * @group legacy
19 */
20 class ProcessBuilderTest extends TestCase
21 {
22 public function testInheritEnvironmentVars()
23 {
24 $proc = ProcessBuilder::create()
25 ->add('foo')
26 ->getProcess();
27
28 $this->assertTrue($proc->areEnvironmentVariablesInherited());
29
30 $proc = ProcessBuilder::create()
31 ->add('foo')
32 ->inheritEnvironmentVariables(false)
33 ->getProcess();
34
35 $this->assertFalse($proc->areEnvironmentVariablesInherited());
36 }
37
38 public function testAddEnvironmentVariables()
39 {
40 $pb = new ProcessBuilder();
41 $env = [
42 'foo' => 'bar',
43 'foo2' => 'bar2',
44 ];
45 $proc = $pb
46 ->add('command')
47 ->setEnv('foo', 'bar2')
48 ->addEnvironmentVariables($env)
49 ->getProcess()
50 ;
51
52 $this->assertSame($env, $proc->getEnv());
53 }
54
55 public function testNegativeTimeoutFromSetter()
56 {
57 $this->expectException('Symfony\Component\Process\Exception\InvalidArgumentException');
58 $pb = new ProcessBuilder();
59 $pb->setTimeout(-1);
60 }
61
62 public function testNullTimeout()
63 {
64 $pb = new ProcessBuilder();
65 $pb->setTimeout(10);
66 $pb->setTimeout(null);
67
68 $r = new \ReflectionObject($pb);
69 $p = $r->getProperty('timeout');
70 $p->setAccessible(true);
71
72 $this->assertNull($p->getValue($pb));
73 }
74
75 public function testShouldSetArguments()
76 {
77 $pb = new ProcessBuilder(['initial']);
78 $pb->setArguments(['second']);
79
80 $proc = $pb->getProcess();
81
82 $this->assertStringContainsString('second', $proc->getCommandLine());
83 }
84
85 public function testPrefixIsPrependedToAllGeneratedProcess()
86 {
87 $pb = new ProcessBuilder();
88 $pb->setPrefix('/usr/bin/php');
89
90 $proc = $pb->setArguments(['-v'])->getProcess();
91 if ('\\' === \DIRECTORY_SEPARATOR) {
92 $this->assertEquals('"/usr/bin/php" -v', $proc->getCommandLine());
93 } else {
94 $this->assertEquals("'/usr/bin/php' '-v'", $proc->getCommandLine());
95 }
96
97 $proc = $pb->setArguments(['-i'])->getProcess();
98 if ('\\' === \DIRECTORY_SEPARATOR) {
99 $this->assertEquals('"/usr/bin/php" -i', $proc->getCommandLine());
100 } else {
101 $this->assertEquals("'/usr/bin/php' '-i'", $proc->getCommandLine());
102 }
103 }
104
105 public function testArrayPrefixesArePrependedToAllGeneratedProcess()
106 {
107 $pb = new ProcessBuilder();
108 $pb->setPrefix(['/usr/bin/php', 'composer.phar']);
109
110 $proc = $pb->setArguments(['-v'])->getProcess();
111 if ('\\' === \DIRECTORY_SEPARATOR) {
112 $this->assertEquals('"/usr/bin/php" composer.phar -v', $proc->getCommandLine());
113 } else {
114 $this->assertEquals("'/usr/bin/php' 'composer.phar' '-v'", $proc->getCommandLine());
115 }
116
117 $proc = $pb->setArguments(['-i'])->getProcess();
118 if ('\\' === \DIRECTORY_SEPARATOR) {
119 $this->assertEquals('"/usr/bin/php" composer.phar -i', $proc->getCommandLine());
120 } else {
121 $this->assertEquals("'/usr/bin/php' 'composer.phar' '-i'", $proc->getCommandLine());
122 }
123 }
124
125 public function testShouldEscapeArguments()
126 {
127 $pb = new ProcessBuilder(['%path%', 'foo " bar', '%baz%baz']);
128 $proc = $pb->getProcess();
129
130 if ('\\' === \DIRECTORY_SEPARATOR) {
131 $this->assertSame('""^%"path"^%"" "foo "" bar" ""^%"baz"^%"baz"', $proc->getCommandLine());
132 } else {
133 $this->assertSame("'%path%' 'foo \" bar' '%baz%baz'", $proc->getCommandLine());
134 }
135 }
136
137 public function testShouldEscapeArgumentsAndPrefix()
138 {
139 $pb = new ProcessBuilder(['arg']);
140 $pb->setPrefix('%prefix%');
141 $proc = $pb->getProcess();
142
143 if ('\\' === \DIRECTORY_SEPARATOR) {
144 $this->assertSame('""^%"prefix"^%"" arg', $proc->getCommandLine());
145 } else {
146 $this->assertSame("'%prefix%' 'arg'", $proc->getCommandLine());
147 }
148 }
149
150 public function testShouldThrowALogicExceptionIfNoPrefixAndNoArgument()
151 {
152 $this->expectException('Symfony\Component\Process\Exception\LogicException');
153 ProcessBuilder::create()->getProcess();
154 }
155
156 public function testShouldNotThrowALogicExceptionIfNoArgument()
157 {
158 $process = ProcessBuilder::create()
159 ->setPrefix('/usr/bin/php')
160 ->getProcess();
161
162 if ('\\' === \DIRECTORY_SEPARATOR) {
163 $this->assertEquals('"/usr/bin/php"', $process->getCommandLine());
164 } else {
165 $this->assertEquals("'/usr/bin/php'", $process->getCommandLine());
166 }
167 }
168
169 public function testShouldNotThrowALogicExceptionIfNoPrefix()
170 {
171 $process = ProcessBuilder::create(['/usr/bin/php'])
172 ->getProcess();
173
174 if ('\\' === \DIRECTORY_SEPARATOR) {
175 $this->assertEquals('"/usr/bin/php"', $process->getCommandLine());
176 } else {
177 $this->assertEquals("'/usr/bin/php'", $process->getCommandLine());
178 }
179 }
180
181 public function testShouldReturnProcessWithDisabledOutput()
182 {
183 $process = ProcessBuilder::create(['/usr/bin/php'])
184 ->disableOutput()
185 ->getProcess();
186
187 $this->assertTrue($process->isOutputDisabled());
188 }
189
190 public function testShouldReturnProcessWithEnabledOutput()
191 {
192 $process = ProcessBuilder::create(['/usr/bin/php'])
193 ->disableOutput()
194 ->enableOutput()
195 ->getProcess();
196
197 $this->assertFalse($process->isOutputDisabled());
198 }
199
200 public function testInvalidInput()
201 {
202 $this->expectException('Symfony\Component\Process\Exception\InvalidArgumentException');
203 $this->expectExceptionMessage('"Symfony\Component\Process\ProcessBuilder::setInput" only accepts strings, Traversable objects or stream resources.');
204 $builder = ProcessBuilder::create();
205 $builder->setInput([]);
206 }
207
208 public function testDoesNotPrefixExec()
209 {
210 if ('\\' === \DIRECTORY_SEPARATOR) {
211 $this->markTestSkipped('This test cannot run on Windows.');
212 }
213
214 $builder = ProcessBuilder::create(['command', '-v', 'ls']);
215 $process = $builder->getProcess();
216 $process->run();
217
218 $this->assertTrue($process->isSuccessful());
219 }
220 }
221