Fixed composer creation to account completely for cwd

Also added tests that fail if not.
This commit is contained in:
Basilius Sauter
2017-01-04 08:23:32 +01:00
parent e041db89bc
commit b8f47c6d53
4 changed files with 444 additions and 318 deletions
Generated
+389 -310
View File
File diff suppressed because it is too large Load Diff
+8 -7
View File
@@ -6,7 +6,8 @@ namespace LotGD\Core;
use Composer\{
Composer,
Factory,
IO\NullIO
IO\NullIO,
Package\CompletePackageInterface
};
use Monolog\Logger;
@@ -41,13 +42,13 @@ class ComposerManager
{
if ($this->composer === null) {
// Verify location of composer.json.
$path = $this->cwd . DIRECTORY_SEPARATOR . "composer.json";
if (!file_exists($path)) {
throw new InvalidConfigurationException("composer.json cannot be found at {$path}.");
$composerConfigPath = $this->cwd . DIRECTORY_SEPARATOR . "composer.json";
if (!file_exists($composerConfigPath)) {
throw new InvalidConfigurationException("composer.json cannot be found at {$composerConfigPath}.");
}
$io = new NullIO();
$this->composer = Factory::create($io, $path);
$factory = new Factory();
$this->composer = $factory->createComposer(new NullIO(), $composerConfigPath, false, $this->cwd);
}
return $this->composer;
@@ -58,7 +59,7 @@ class ComposerManager
* @return PackageInterface Package corresponding to this library.
* @throws LibraryDoesNotExistException
*/
public function getPackageForLibrary(string $library): PackageInterface
public function getPackageForLibrary(string $library): CompletePackageInterface
{
// TODO: should probably do something better than O(n) here.
$packages = $this->getComposer()->getRepositoryManager()->getLocalRepository()->getPackages();
+46
View File
@@ -40,4 +40,50 @@ class ComposerManagerTest extends \PHPUnit_Framework_TestCase
$namespace = 'LotGD\\NotFound';
$this->assertNull($manager->translateNamespaceToPath($namespace));
}
public function testListPackageWithRootCwd()
{
$manager = new ComposerManager(implode(DIRECTORY_SEPARATOR, [__DIR__, '..']));
$packageCount = count($manager->getPackages());
$this->assertGreaterThan(1, $packageCount);
}
public function testListPackageWithDifferentThanRootCwd()
{
$oldcwd = getcwd();
chdir($oldcwd . DIRECTORY_SEPARATOR . "tests");
$manager = new ComposerManager(implode(DIRECTORY_SEPARATOR, [__DIR__, '..']));
$packageCount = count($manager->getPackages());
$this->assertGreaterThan(1, $packageCount);
chdir($oldcwd);
}
public function testGetPackageByLibraryNameWithRootCwd()
{
$manager = new ComposerManager(implode(DIRECTORY_SEPARATOR, [__DIR__, '..']));
$package = $manager->getPackageForLibrary("composer/composer");
$this->assertSame("composer/composer", $package->getName());
}
public function testGetPackageByLibraryNameWithDifferentThanRootCwd()
{
$oldcwd = getcwd();
chdir($oldcwd . DIRECTORY_SEPARATOR . "tests");
$manager = new ComposerManager(implode(DIRECTORY_SEPARATOR, [__DIR__, '..']));
$package = $manager->getPackageForLibrary("composer/composer");
$this->assertSame("composer/composer", $package->getName());
chdir($oldcwd);
}
}
+1 -1
View File
@@ -100,7 +100,7 @@ class ConfigurationTest extends \PHPUnit_Framework_TestCase
list($dsn, $user, $password) = $configuration->getDatabaseConnectionDetails("/home/web/sqlite");
$this->assertNotSame($rawDSN, $dsn);
$this->assertSame("sqlite:/home/web/sqlite/db.db3", $dsn);
$this->assertSame("sqlite:/home/web/sqlite" . DIRECTORY_SEPARATOR . "db.db3", $dsn);
}
public function testIfInvalidConfigurationExceptionIsThrownIfDatabaseDSNIsMissing()