Add `GlobalCommandTest.php` (#12073)
* Add `GlobalCommandTest.php` - `testGlobal` to check `COMPOSER_HOME` is followed correctly + check `COMPOSER` is unset. - `testNotCreateHome` to test handling invalid `COMPOSER_HOME`. * Add error string for non obvious test case * Clean up env vars and minor code style changes --------- Co-authored-by: Jordi Boggiano <j.boggiano@seld.be>pull/12092/head
parent
dca85cc940
commit
8c5f2dbb97
|
@ -0,0 +1,80 @@
|
||||||
|
<?php declare(strict_types=1);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Composer.
|
||||||
|
*
|
||||||
|
* (c) Nils Adermann <naderman@naderman.de>
|
||||||
|
* Jordi Boggiano <j.boggiano@seld.be>
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace Composer\Test\Command;
|
||||||
|
|
||||||
|
use Composer\Test\TestCase;
|
||||||
|
use Composer\Util\Platform;
|
||||||
|
|
||||||
|
class GlobalCommandTest extends TestCase
|
||||||
|
{
|
||||||
|
public function tearDown(): void
|
||||||
|
{
|
||||||
|
parent::tearDown();
|
||||||
|
Platform::clearEnv('COMPOSER_HOME');
|
||||||
|
Platform::clearEnv('COMPOSER');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testGlobal(): void
|
||||||
|
{
|
||||||
|
$script = '@php -r \'echo getenv("COMPOSER") . PHP_EOL;\'';
|
||||||
|
$fakeComposer = 'TMP_COMPOSER.JSON';
|
||||||
|
$composerHome = $this->initTempComposer(
|
||||||
|
[
|
||||||
|
"scripts" => [
|
||||||
|
"test-script" => $script,
|
||||||
|
],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
Platform::putEnv('COMPOSER_HOME', $composerHome);
|
||||||
|
Platform::putEnv('COMPOSER', $fakeComposer);
|
||||||
|
|
||||||
|
$dir = self::getUniqueTmpDirectory();
|
||||||
|
chdir($dir);
|
||||||
|
|
||||||
|
$appTester = $this->getApplicationTester();
|
||||||
|
$appTester->run([
|
||||||
|
'command' => 'global',
|
||||||
|
'command-name' => 'test-script',
|
||||||
|
'--no-interaction' => true,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$display = $appTester->getDisplay(true);
|
||||||
|
|
||||||
|
self::assertStringContainsString(
|
||||||
|
'Changed current directory to ' . $composerHome,
|
||||||
|
$display
|
||||||
|
);
|
||||||
|
self::assertStringContainsString($script, $display);
|
||||||
|
self::assertStringNotContainsString($fakeComposer, $display, '$COMPOSER is not unset by global command');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCannotCreateHome(): void
|
||||||
|
{
|
||||||
|
$dir = self::getUniqueTmpDirectory();
|
||||||
|
$filename = $dir . '/file';
|
||||||
|
file_put_contents($filename, '');
|
||||||
|
|
||||||
|
Platform::putEnv('COMPOSER_HOME', $filename);
|
||||||
|
|
||||||
|
self::expectException(\RuntimeException::class);
|
||||||
|
$this->expectExceptionMessage($filename . ' exists and is not a directory.');
|
||||||
|
|
||||||
|
$appTester = $this->getApplicationTester();
|
||||||
|
$appTester->run([
|
||||||
|
'command' => 'global',
|
||||||
|
'command-name' => 'test-script',
|
||||||
|
'--no-interaction' => true,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue