mirror of
https://github.com/composer/composer
synced 2025-05-10 17:12:51 +00:00
Merge remote-tracking branch 'github-composer/2.0' into solve-without-installed
* github-composer/2.0: (63 commits) Fix PSR warnings for optimized autoloader, refs #8397, refs #8403 Prepare 1.9.1 changelog Output a hint that maybe you are not in the right directory, fixes #8404 Fix PSR warnings for optimized autoloader, refs #8397, refs #8403 Fix tests for PSR-fix in optimized autoloader, refs #8397 Fix tests for PSR-fix in optimized autoloader, refs #8397 Change PSR-fix for optimized autoloader to only warn for now, refs #8397 Fix output of dump-autoload command to avoid interfering with warnings, refs #8397 Remove credentials from git remotes in cache and vendor dirs Avoid overwriting credentials with existing ones from git repos, refs #8293 Fix github auth to try https with pwd also, fixes #8356 Fix gitlab support for basic-auth fallback from ssh URLs Avoid clearing the error output during removeDirectory execution, losing git error output, fixes #8351 Move test file parsing into try/catch block to avoid phpunit swallowing errors make optimized autoloader respect PSR standards Validate composer show with --tree and --path options set (#8390) Don't show root warning for docker containers Added phpdoc for ComposerAutoloaderInit$SHA1::getLoader() (#8393) Validate schema name, type and version Fix require command to allow working on network mounts, fixes #8231 ...
This commit is contained in:
commit
97ec2d7b61
59 changed files with 650 additions and 176 deletions
|
@ -25,12 +25,18 @@ class ApplicationTest extends TestCase
|
|||
$inputMock = $this->getMockBuilder('Symfony\Component\Console\Input\InputInterface')->getMock();
|
||||
$outputMock = $this->getMockBuilder('Symfony\Component\Console\Output\OutputInterface')->getMock();
|
||||
|
||||
putenv('COMPOSER_NO_INTERACTION=1');
|
||||
|
||||
$index = 0;
|
||||
$inputMock->expects($this->at($index++))
|
||||
->method('hasParameterOption')
|
||||
->with($this->equalTo('--no-plugins'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$inputMock->expects($this->at($index++))
|
||||
->method('setInteractive')
|
||||
->with($this->equalTo(false));
|
||||
|
||||
$inputMock->expects($this->at($index++))
|
||||
->method('hasParameterOption')
|
||||
->with($this->equalTo('--no-cache'))
|
||||
|
@ -83,12 +89,18 @@ class ApplicationTest extends TestCase
|
|||
$inputMock = $this->getMockBuilder('Symfony\Component\Console\Input\InputInterface')->getMock();
|
||||
$outputMock = $this->getMockBuilder('Symfony\Component\Console\Output\OutputInterface')->getMock();
|
||||
|
||||
putenv('COMPOSER_NO_INTERACTION=1');
|
||||
|
||||
$index = 0;
|
||||
$inputMock->expects($this->at($index++))
|
||||
->method('hasParameterOption')
|
||||
->with($this->equalTo('--no-plugins'))
|
||||
->will($this->returnValue(true));
|
||||
|
||||
$inputMock->expects($this->at($index++))
|
||||
->method('setInteractive')
|
||||
->with($this->equalTo(false));
|
||||
|
||||
$inputMock->expects($this->at($index++))
|
||||
->method('hasParameterOption')
|
||||
->with($this->equalTo('--no-cache'))
|
||||
|
|
|
@ -548,6 +548,48 @@ class AutoloadGeneratorTest extends TestCase
|
|||
);
|
||||
}
|
||||
|
||||
public function testPSRToClassMapIgnoresNonPSRClasses()
|
||||
{
|
||||
$package = new Package('a', '1.0', '1.0');
|
||||
|
||||
$this->markTestSkipped('Skipped until ClassMapGenerator ignoring of invalid PSR-x classes is enabled');
|
||||
|
||||
$package->setAutoload(array(
|
||||
'psr-0' => array('psr0_' => 'psr0/'),
|
||||
'psr-4' => array('psr4\\' => 'psr4/'),
|
||||
));
|
||||
|
||||
$this->repository->expects($this->once())
|
||||
->method('getCanonicalPackages')
|
||||
->will($this->returnValue(array()));
|
||||
|
||||
$this->fs->ensureDirectoryExists($this->workingDir.'/psr0/psr0');
|
||||
$this->fs->ensureDirectoryExists($this->workingDir.'/psr4');
|
||||
file_put_contents($this->workingDir.'/psr0/psr0/match.php', '<?php class psr0_match {}');
|
||||
file_put_contents($this->workingDir.'/psr0/psr0/badfile.php', '<?php class psr0_badclass {}');
|
||||
file_put_contents($this->workingDir.'/psr4/match.php', '<?php namespace psr4; class match {}');
|
||||
file_put_contents($this->workingDir.'/psr4/badfile.php', '<?php namespace psr4; class badclass {}');
|
||||
|
||||
$this->generator->dump($this->config, $this->repository, $package, $this->im, 'composer', true, '_1');
|
||||
$this->assertFileExists($this->vendorDir.'/composer/autoload_classmap.php', "ClassMap file needs to be generated.");
|
||||
|
||||
$expectedClassmap = <<<EOF
|
||||
<?php
|
||||
|
||||
// autoload_classmap.php @generated by Composer
|
||||
|
||||
\$vendorDir = dirname(dirname(__FILE__));
|
||||
\$baseDir = dirname(\$vendorDir);
|
||||
|
||||
return array(
|
||||
'psr0_match' => \$baseDir . '/psr0/psr0/match.php',
|
||||
'psr4\\\\match' => \$baseDir . '/psr4/match.php',
|
||||
);
|
||||
|
||||
EOF;
|
||||
$this->assertStringEqualsFile($this->vendorDir.'/composer/autoload_classmap.php', $expectedClassmap);
|
||||
}
|
||||
|
||||
public function testVendorsClassMapAutoloading()
|
||||
{
|
||||
$package = new Package('a', '1.0', '1.0');
|
||||
|
|
|
@ -13,6 +13,9 @@ class ComposerAutoloaderInitFilesAutoloadOrder
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
|
|
|
@ -13,6 +13,9 @@ class ComposerAutoloaderInitFilesAutoload
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
|
|
|
@ -13,6 +13,9 @@ class ComposerAutoloaderInitFilesAutoload
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
|
|
|
@ -13,6 +13,9 @@ class ComposerAutoloaderInitFilesAutoload
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
|
|
|
@ -13,6 +13,9 @@ class ComposerAutoloaderInitIncludePath
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
|
|
|
@ -13,6 +13,9 @@ class ComposerAutoloaderInitTargetDir
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Composer\Autoload\ClassLoader
|
||||
*/
|
||||
public static function getLoader()
|
||||
{
|
||||
if (null !== self::$loader) {
|
||||
|
|
|
@ -1385,6 +1385,10 @@ namespace Foo;
|
|||
<?php
|
||||
class LargeGap
|
||||
{
|
||||
public function a1380() { var_dump(var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null)); }
|
||||
public function test_double_gap() { var_dump(var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null));
|
||||
?>
|
||||
public function a1381() { var_dump(var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null), var_dump(null)); }
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ class GitDownloaderTest extends TestCase
|
|||
return 0;
|
||||
}));
|
||||
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'https://example.com/composer/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'https://example.com/composer/composer' && git fetch composer");
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'https://example.com/composer/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'https://example.com/composer/composer' && git fetch composer && git remote set-url origin 'https://example.com/composer/composer' && git remote set-url composer 'https://example.com/composer/composer'");
|
||||
$processExecutor->expects($this->at(1))
|
||||
->method('execute')
|
||||
->with($this->equalTo($expectedGitCommand))
|
||||
|
@ -170,6 +170,9 @@ class GitDownloaderTest extends TestCase
|
|||
$this->setupConfig($config);
|
||||
$cachePath = $config->get('cache-vcs-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', 'https://example.com/composer/composer').'/';
|
||||
|
||||
$filesystem = new \Composer\Util\Filesystem;
|
||||
$filesystem->removeDirectory($cachePath);
|
||||
|
||||
$expectedGitCommand = $this->winCompat(sprintf("git clone --mirror 'https://example.com/composer/composer' '%s'", $cachePath));
|
||||
$processExecutor->expects($this->at(1))
|
||||
->method('execute')
|
||||
|
@ -179,24 +182,36 @@ class GitDownloaderTest extends TestCase
|
|||
|
||||
return 0;
|
||||
}));
|
||||
$processExecutor->expects($this->at(2))
|
||||
->method('execute')
|
||||
->with($this->equalTo('git rev-parse --git-dir'), $this->anything(), $this->equalTo($this->winCompat($cachePath)))
|
||||
->will($this->returnCallback(function ($command, &$output = null) {
|
||||
$output = '.';
|
||||
|
||||
return 0;
|
||||
}));
|
||||
$processExecutor->expects($this->at(3))
|
||||
->method('execute')
|
||||
->with($this->equalTo($this->winCompat('git rev-parse --quiet --verify \'1234567890123456789012345678901234567890^{commit}\'')), $this->equalTo(null), $this->equalTo($this->winCompat($cachePath)))
|
||||
->will($this->returnValue(0));
|
||||
|
||||
$expectedGitCommand = $this->winCompat(sprintf("git clone --no-checkout '%1\$s' 'composerPath' --dissociate --reference '%1\$s' && cd 'composerPath' && git remote set-url origin 'https://example.com/composer/composer' && git remote add composer 'https://example.com/composer/composer'", $cachePath));
|
||||
$processExecutor->expects($this->at(2))
|
||||
$processExecutor->expects($this->at(4))
|
||||
->method('execute')
|
||||
->with($this->equalTo($expectedGitCommand))
|
||||
->will($this->returnValue(0));
|
||||
|
||||
$processExecutor->expects($this->at(3))
|
||||
$processExecutor->expects($this->at(5))
|
||||
->method('execute')
|
||||
->with($this->equalTo($this->winCompat("git branch -r")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
|
||||
->will($this->returnValue(0));
|
||||
|
||||
$processExecutor->expects($this->at(4))
|
||||
$processExecutor->expects($this->at(6))
|
||||
->method('execute')
|
||||
->with($this->equalTo($this->winCompat("git checkout 'master' --")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
|
||||
->will($this->returnValue(0));
|
||||
|
||||
$processExecutor->expects($this->at(5))
|
||||
$processExecutor->expects($this->at(7))
|
||||
->method('execute')
|
||||
->with($this->equalTo($this->winCompat("git reset --hard '1234567890123456789012345678901234567890' --")), $this->equalTo(null), $this->equalTo($this->winCompat('composerPath')))
|
||||
->will($this->returnValue(0));
|
||||
|
@ -235,7 +250,7 @@ class GitDownloaderTest extends TestCase
|
|||
return 0;
|
||||
}));
|
||||
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'https://github.com/mirrors/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'https://github.com/mirrors/composer' && git fetch composer");
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'https://github.com/mirrors/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'https://github.com/mirrors/composer' && git fetch composer && git remote set-url origin 'https://github.com/mirrors/composer' && git remote set-url composer 'https://github.com/mirrors/composer'");
|
||||
$processExecutor->expects($this->at(1))
|
||||
->method('execute')
|
||||
->with($this->equalTo($expectedGitCommand))
|
||||
|
@ -246,7 +261,7 @@ class GitDownloaderTest extends TestCase
|
|||
->with()
|
||||
->will($this->returnValue('Error1'));
|
||||
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'git@github.com:mirrors/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'git@github.com:mirrors/composer' && git fetch composer");
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'git@github.com:mirrors/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'git@github.com:mirrors/composer' && git fetch composer && git remote set-url origin 'git@github.com:mirrors/composer' && git remote set-url composer 'git@github.com:mirrors/composer'");
|
||||
$processExecutor->expects($this->at(3))
|
||||
->method('execute')
|
||||
->with($this->equalTo($expectedGitCommand))
|
||||
|
@ -322,7 +337,7 @@ class GitDownloaderTest extends TestCase
|
|||
return 0;
|
||||
}));
|
||||
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout '{$url}' 'composerPath' && cd 'composerPath' && git remote add composer '{$url}' && git fetch composer");
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout '{$url}' 'composerPath' && cd 'composerPath' && git remote add composer '{$url}' && git fetch composer && git remote set-url origin '{$url}' && git remote set-url composer '{$url}'");
|
||||
$processExecutor->expects($this->at(1))
|
||||
->method('execute')
|
||||
->with($this->equalTo($expectedGitCommand))
|
||||
|
@ -350,7 +365,7 @@ class GitDownloaderTest extends TestCase
|
|||
|
||||
public function testDownloadThrowsRuntimeExceptionIfGitCommandFails()
|
||||
{
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'https://example.com/composer/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'https://example.com/composer/composer' && git fetch composer");
|
||||
$expectedGitCommand = $this->winCompat("git clone --no-checkout 'https://example.com/composer/composer' 'composerPath' && cd 'composerPath' && git remote add composer 'https://example.com/composer/composer' && git fetch composer && git remote set-url origin 'https://example.com/composer/composer' && git remote set-url composer 'https://example.com/composer/composer'");
|
||||
$packageMock = $this->getMockBuilder('Composer\Package\PackageInterface')->getMock();
|
||||
$packageMock->expects($this->any())
|
||||
->method('getSourceReference')
|
||||
|
@ -408,7 +423,7 @@ class GitDownloaderTest extends TestCase
|
|||
|
||||
public function testUpdate()
|
||||
{
|
||||
$expectedGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer)");
|
||||
$expectedGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer); git remote set-url composer 'https://github.com/composer/composer'");
|
||||
|
||||
$packageMock = $this->getMockBuilder('Composer\Package\PackageInterface')->getMock();
|
||||
$packageMock->expects($this->any())
|
||||
|
@ -440,7 +455,7 @@ class GitDownloaderTest extends TestCase
|
|||
|
||||
public function testUpdateWithNewRepoUrl()
|
||||
{
|
||||
$expectedGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer)");
|
||||
$expectedGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer); git remote set-url composer 'https://github.com/composer/composer'");
|
||||
|
||||
$packageMock = $this->getMockBuilder('Composer\Package\PackageInterface')->getMock();
|
||||
$packageMock->expects($this->any())
|
||||
|
@ -519,8 +534,8 @@ composer https://github.com/old/url (push)
|
|||
*/
|
||||
public function testUpdateThrowsRuntimeExceptionIfGitCommandFails()
|
||||
{
|
||||
$expectedGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer)");
|
||||
$expectedGitUpdateCommand2 = $this->winCompat("git remote set-url composer 'git@github.com:composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer)");
|
||||
$expectedGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer); git remote set-url composer 'https://github.com/composer/composer'");
|
||||
$expectedGitUpdateCommand2 = $this->winCompat("git remote set-url composer 'git@github.com:composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer); git remote set-url composer 'git@github.com:composer/composer'");
|
||||
|
||||
$packageMock = $this->getMockBuilder('Composer\Package\PackageInterface')->getMock();
|
||||
$packageMock->expects($this->any())
|
||||
|
@ -563,8 +578,8 @@ composer https://github.com/old/url (push)
|
|||
|
||||
public function testUpdateDoesntThrowsRuntimeExceptionIfGitCommandFailsAtFirstButIsAbleToRecover()
|
||||
{
|
||||
$expectedFirstGitUpdateCommand = $this->winCompat("git remote set-url composer '".(Platform::isWindows() ? 'C:\\' : '/')."' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer)");
|
||||
$expectedSecondGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer)");
|
||||
$expectedFirstGitUpdateCommand = $this->winCompat("git remote set-url composer '".(Platform::isWindows() ? 'C:\\' : '/')."' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer); git remote set-url composer '/'");
|
||||
$expectedSecondGitUpdateCommand = $this->winCompat("git remote set-url composer 'https://github.com/composer/composer' && git rev-parse --quiet --verify 'ref^{commit}' || (git fetch composer && git fetch --tags composer); git remote set-url composer 'https://github.com/composer/composer'");
|
||||
|
||||
$packageMock = $this->getMockBuilder('Composer\Package\PackageInterface')->getMock();
|
||||
$packageMock->expects($this->any())
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
--TEST--
|
||||
Installs from composer.json without writing a lock file
|
||||
--COMPOSER--
|
||||
{
|
||||
"repositories": [
|
||||
{
|
||||
"type": "package",
|
||||
"package": [
|
||||
{ "name": "a/a", "version": "1.0.0" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"a/a": "1.0.0"
|
||||
},
|
||||
"config": {
|
||||
"lock": "false"
|
||||
}
|
||||
}
|
||||
--RUN--
|
||||
install
|
||||
--EXPECT--
|
||||
Installing a/a (1.0.0)
|
||||
--EXPECT-LOCK--
|
||||
false
|
|
@ -0,0 +1,25 @@
|
|||
--TEST--
|
||||
Updates when no lock file is present without writing a lock file
|
||||
--COMPOSER--
|
||||
{
|
||||
"repositories": [
|
||||
{
|
||||
"type": "package",
|
||||
"package": [
|
||||
{ "name": "a/a", "version": "1.0.0" }
|
||||
]
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"a/a": "1.0.0"
|
||||
},
|
||||
"config": {
|
||||
"lock": false
|
||||
}
|
||||
}
|
||||
--RUN--
|
||||
update
|
||||
--EXPECT--
|
||||
Installing a/a (1.0.0)
|
||||
--EXPECT-LOCK--
|
||||
false
|
|
@ -243,6 +243,9 @@ class InstallerTest extends TestCase
|
|||
// so store value temporarily in reference for later assetion
|
||||
$actualLock = $hash;
|
||||
}));
|
||||
} elseif ($expectLock === false) {
|
||||
$lockJsonMock->expects($this->never())
|
||||
->method('write');
|
||||
}
|
||||
|
||||
$contents = json_encode($composerConfig);
|
||||
|
@ -334,15 +337,15 @@ class InstallerTest extends TestCase
|
|||
continue;
|
||||
}
|
||||
|
||||
$testData = $this->readTestFile($file, $fixturesDir);
|
||||
|
||||
$installed = array();
|
||||
$installedDev = array();
|
||||
$lock = array();
|
||||
$expectLock = array();
|
||||
$expectResult = 0;
|
||||
|
||||
try {
|
||||
$testData = $this->readTestFile($file, $fixturesDir);
|
||||
|
||||
$installed = array();
|
||||
$installedDev = array();
|
||||
$lock = array();
|
||||
$expectLock = array();
|
||||
$expectResult = 0;
|
||||
|
||||
$message = $testData['TEST'];
|
||||
$condition = !empty($testData['CONDITION']) ? $testData['CONDITION'] : null;
|
||||
$composer = JsonFile::parseJson($testData['COMPOSER']);
|
||||
|
@ -373,7 +376,11 @@ class InstallerTest extends TestCase
|
|||
}
|
||||
$run = $testData['RUN'];
|
||||
if (!empty($testData['EXPECT-LOCK'])) {
|
||||
$expectLock = JsonFile::parseJson($testData['EXPECT-LOCK']);
|
||||
if ($testData['EXPECT-LOCK'] === 'false') {
|
||||
$expectLock = false;
|
||||
} else {
|
||||
$expectLock = JsonFile::parseJson($testData['EXPECT-LOCK']);
|
||||
}
|
||||
}
|
||||
$expectOutput = isset($testData['EXPECT-OUTPUT']) ? $testData['EXPECT-OUTPUT'] : null;
|
||||
$expect = $testData['EXPECT'];
|
||||
|
|
|
@ -19,6 +19,22 @@ use Composer\Package\Version\VersionParser;
|
|||
|
||||
class PathRepositoryTest extends TestCase
|
||||
{
|
||||
|
||||
/**
|
||||
* @expectedException RuntimeException
|
||||
*/
|
||||
public function testLoadPackageFromFileSystemWithIncorrectPath()
|
||||
{
|
||||
$ioInterface = $this->getMockBuilder('Composer\IO\IOInterface')
|
||||
->getMock();
|
||||
|
||||
$config = new \Composer\Config();
|
||||
|
||||
$repositoryUrl = implode(DIRECTORY_SEPARATOR, array(__DIR__, 'Fixtures', 'path', 'missing'));
|
||||
$repository = new PathRepository(array('url' => $repositoryUrl), $ioInterface, $config);
|
||||
$repository->getPackages();
|
||||
}
|
||||
|
||||
public function testLoadPackageFromFileSystemWithVersion()
|
||||
{
|
||||
$ioInterface = $this->getMockBuilder('Composer\IO\IOInterface')
|
||||
|
|
|
@ -300,16 +300,16 @@ class FilesystemTest extends TestCase
|
|||
|
||||
// Create and detect junction
|
||||
$fs->junction($target, $junction);
|
||||
$this->assertTrue($fs->isJunction($junction));
|
||||
$this->assertFalse($fs->isJunction($target));
|
||||
$this->assertTrue($fs->isJunction($target . '/../../junction'));
|
||||
$this->assertFalse($fs->isJunction($junction . '/../real'));
|
||||
$this->assertTrue($fs->isJunction($junction . '/../junction'));
|
||||
$this->assertTrue($fs->isJunction($junction), $junction . ': is a junction');
|
||||
$this->assertFalse($fs->isJunction($target), $target . ': is not a junction');
|
||||
$this->assertTrue($fs->isJunction($target . '/../../junction'), $target . '/../../junction: is a junction');
|
||||
$this->assertFalse($fs->isJunction($junction . '/../real'), $junction . '/../real: is not a junction');
|
||||
$this->assertTrue($fs->isJunction($junction . '/../junction'), $junction . '/../junction: is a junction');
|
||||
|
||||
// Remove junction
|
||||
$this->assertTrue(is_dir($junction));
|
||||
$this->assertTrue($fs->removeJunction($junction));
|
||||
$this->assertFalse(is_dir($junction));
|
||||
$this->assertTrue(is_dir($junction), $junction . ' is a directory');
|
||||
$this->assertTrue($fs->removeJunction($junction), $junction . ' has been removed');
|
||||
$this->assertFalse(is_dir($junction), $junction . ' is not a directory');
|
||||
}
|
||||
|
||||
public function testCopy()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue