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