|
8 | 8 | use Composer\Package\CompletePackageInterface; |
9 | 9 | use InvalidArgumentException; |
10 | 10 | use Php\Pie\DependencyResolver\Package; |
| 11 | +use Php\Pie\Downloading\DownloadUrlMethod; |
11 | 12 | use Php\Pie\ExtensionName; |
12 | 13 | use Php\Pie\ExtensionType; |
13 | 14 | use Php\Pie\Platform\OperatingSystemFamily; |
@@ -146,4 +147,34 @@ public function testFromComposerCompletePackageWithBuildPath(): void |
146 | 147 | self::assertSame('vendor/foo:1.2.3', $package->prettyNameAndVersion()); |
147 | 148 | self::assertSame('some/subdirectory/path/', $package->buildPath()); |
148 | 149 | } |
| 150 | + |
| 151 | + public function testDownloadUrlMethodWithStringHasValidDownloadUrlMethod(): void |
| 152 | + { |
| 153 | + $composerCompletePackage = new CompletePackage('vendor/foo', '1.2.3.0', '1.2.3'); |
| 154 | + $composerCompletePackage->setPhpExt(['download-url-method' => 'composer-default']); |
| 155 | + |
| 156 | + $package = Package::fromComposerCompletePackage($composerCompletePackage); |
| 157 | + |
| 158 | + self::assertSame(DownloadUrlMethod::ComposerDefaultDownload, $package->downloadUrlMethod()); |
| 159 | + } |
| 160 | + |
| 161 | + public function testDownloadUrlMethodWithSingleItemListHasValidDownloadUrlMethod(): void |
| 162 | + { |
| 163 | + $composerCompletePackage = new CompletePackage('vendor/foo', '1.2.3.0', '1.2.3'); |
| 164 | + $composerCompletePackage->setPhpExt(['download-url-method' => ['composer-default']]); |
| 165 | + |
| 166 | + $package = Package::fromComposerCompletePackage($composerCompletePackage); |
| 167 | + |
| 168 | + self::assertSame(DownloadUrlMethod::ComposerDefaultDownload, $package->downloadUrlMethod()); |
| 169 | + } |
| 170 | + |
| 171 | + public function testDownloadUrlMethodWithMultiItemListIsNotYetSupported(): void |
| 172 | + { |
| 173 | + $composerCompletePackage = new CompletePackage('vendor/foo', '1.2.3.0', '1.2.3'); |
| 174 | + $composerCompletePackage->setPhpExt(['download-url-method' => ['pre-packaged-source', 'composer-default']]); |
| 175 | + |
| 176 | + $this->expectException(InvalidArgumentException::class); |
| 177 | + $this->expectExceptionMessage('This extension requires a newer version of PIE. Multiple download-url-methods are not supported until PIE 1.4.0.'); |
| 178 | + Package::fromComposerCompletePackage($composerCompletePackage); |
| 179 | + } |
149 | 180 | } |
0 commit comments