public function testImplicitCreationOfRootPackage() { $graph = new DependencyGraph(); $packages = $graph->getPackages(); $this->assertCount(1, $packages); $this->assertTrue($graph->isRootPackage($packages['__root'])); }
private function processLockedData(DependencyGraph $graph, array $lockedPackageData) { $packageName = null; if (isset($lockedPackageData['name'])) { $packageName = $lockedPackageData['name']; } elseif (isset($lockedPackageData['package'])) { $packageName = $lockedPackageData['package']; } if (null === $packageName) { return; } $package = $graph->getPackage($packageName); if (null === $package) { return; } $package->setVersion($lockedPackageData['version']); if (isset($lockedPackageData['installation-source']) && isset($lockedPackageData[$lockedPackageData['installation-source']]['reference']) && $lockedPackageData['version'] !== $lockedPackageData[$lockedPackageData['installation-source']]['reference']) { $package->setSourceReference($lockedPackageData[$lockedPackageData['installation-source']]['reference']); } }
private function dumpGraph(DependencyGraph $graph) { $packages = $graph->getPackages(); usort($packages, function (PackageNode $a, PackageNode $b) use($graph) { if ($graph->isRootPackage($a)) { return -1; } if ($graph->isRootPackage($b)) { return 1; } return strcmp($a->getName(), $b->getName()); }); $txt = ''; foreach ($packages as $package) { if ('' !== $txt) { $txt .= "\n\n"; } $name = $package->getName(); if ($graph->isRootPackage($package)) { $name .= ' (Root)'; } $txt .= $name . "\n" . str_repeat('=', strlen($name)) . "\n"; $txt .= "Version: " . ($package->getVersion() ?: '<null>') . "\n"; if (null !== ($ref = $package->getSourceReference())) { $txt .= "Source-Reference: " . $ref . "\n"; } if (count($outEdges = $package->getOutEdges()) > 0) { usort($outEdges, function (DependencyEdge $a, DependencyEdge $b) { return strcmp($a->getDestPackage()->getName(), $b->getDestPackage()->getName()); }); foreach ($outEdges as $edge) { assert($edge instanceof DependencyEdge); $txt .= "-> " . $edge->getDestPackage()->getName() . "\n"; } } } return $txt; }