Skip to content

Commit

Permalink
Return package home URL when no generator supports it (#37)
Browse files Browse the repository at this point in the history
  • Loading branch information
IonBazan authored Dec 9, 2024
1 parent 4f10027 commit ee8037c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
11 changes: 8 additions & 3 deletions src/Url/GeneratorContainer.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace IonBazan\ComposerDiff\Url;

use Composer\Package\CompletePackage;
use Composer\Package\PackageInterface;

class GeneratorContainer implements UrlGenerator
Expand Down Expand Up @@ -69,10 +70,14 @@ public function getReleaseUrl(PackageInterface $package)

public function getProjectUrl(PackageInterface $package)
{
if (!$generator = $this->get($package)) {
return null;
if ($generator = $this->get($package)) {
return $generator->getProjectUrl($package);
}

return $generator->getProjectUrl($package);
if ($package instanceof CompletePackage) {
return $package->getHomepage();
}

return null;
}
}
13 changes: 13 additions & 0 deletions tests/Url/GeneratorContainerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

namespace IonBazan\ComposerDiff\Tests\Url;

use Composer\Package\CompletePackage;
use IonBazan\ComposerDiff\Tests\TestCase;
use IonBazan\ComposerDiff\Url\GeneratorContainer;

Expand Down Expand Up @@ -30,4 +31,16 @@ public function testItSupportsPackageSupportedByOneOfTheGenerators()
self::assertTrue($generator->supportsPackage($this->getPackageWithSource('acme/package', '3.12.0', 'https://bitbucket.org/acme/package.git')));
self::assertFalse($generator->supportsPackage($this->getPackageWithSource('acme/package', '3.12.0', 'https://non-existent.org/acme/package.git')));
}

public function testItReturnsHomepageForProjectUrlWhenNoGeneratorSupportsPackage()
{
$generator = new GeneratorContainer();
$package = new CompletePackage('acme/package', '3.12.0', '3.12.0');
$package->setHomepage('https://acme.com');

self::assertSame('https://acme.com', $generator->getProjectUrl($package));

$package->setHomepage(null);
self::assertNull($generator->getProjectUrl($package));
}
}

0 comments on commit ee8037c

Please sign in to comment.