Skip to content

Commit 00f269f

Browse files
committed
Fixing tests and update code for upstream changes
1 parent 0e12ebc commit 00f269f

File tree

4 files changed

+59
-36
lines changed

4 files changed

+59
-36
lines changed

src/Symfony/Component/AssetMapper/ImportMap/ImportMapVersionChecker.php

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public function checkVersions(): array
4040

4141
$packages = [];
4242
foreach ($entries as $entry) {
43-
if (null === $entry->version) {
43+
if (!$entry->isRemotePackage()) {
4444
continue;
4545
}
4646

@@ -49,7 +49,7 @@ public function checkVersions(): array
4949
continue;
5050
}
5151

52-
$packageName = $this->extractPackageNameFromImport($entry->importName);
52+
$packageName = $entry->getPackageName();
5353

5454
$url = str_replace(
5555
['%package%', '%version%'],
@@ -78,23 +78,25 @@ public function checkVersions(): array
7878
);
7979

8080
foreach ($dependencies as $dependencyName) {
81-
$dependencyVersionConstraint = $packageDependencies[$dependencyName] ?? null;
82-
83-
$dependencyPackageName = $this->extractPackageNameFromImport($dependencyName);
84-
if (!$entries->has($dependencyPackageName)) {
81+
// dependency is not in the import map
82+
if (!$entries->has($dependencyName)) {
83+
$dependencyVersionConstraint = $packageDependencies[$dependencyName] ?? 'unknown';
8584
$problems[] = new PackageVersionProblem($packageName, $dependencyName, $dependencyVersionConstraint, null);
8685

8786
continue;
8887
}
8988

89+
$dependencyPackageName = $entries->get($dependencyName)->getPackageName();
90+
$dependencyVersionConstraint = $packageDependencies[$dependencyPackageName] ?? null;
91+
9092
if (null === $dependencyVersionConstraint) {
91-
$problems[] = new PackageVersionProblem($packageName, $dependencyName, $dependencyVersionConstraint, $entries->get($dependencyName)->version);
93+
$problems[] = new PackageVersionProblem($packageName, $dependencyPackageName, $dependencyVersionConstraint, $entries->get($dependencyName)->version);
9294

9395
continue;
9496
}
9597

9698
if (!$this->isVersionSatisfied($dependencyVersionConstraint, $entries->get($dependencyName)->version)) {
97-
$problems[] = new PackageVersionProblem($packageName, $dependencyName, $dependencyVersionConstraint, $entries->get($dependencyName)->version);
99+
$problems[] = new PackageVersionProblem($packageName, $dependencyPackageName, $dependencyVersionConstraint, $entries->get($dependencyName)->version);
98100
}
99101
}
100102
}
@@ -172,14 +174,4 @@ private function isVersionSatisfied(string $versionConstraint, ?string $version)
172174
return false;
173175
}
174176
}
175-
176-
private function extractPackageNameFromImport(string $importName): string
177-
{
178-
$i = strpos($importName, '/');
179-
if ($i && (!str_starts_with($importName, '@') || $i = strpos($importName, '/', $i + 1))) {
180-
return substr($importName, 0, $i);
181-
}
182-
183-
return $importName;
184-
}
185177
}

src/Symfony/Component/AssetMapper/ImportMap/Resolver/PackageResolverInterface.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public function resolvePackages(array $packagesToRequire): array;
3333
*
3434
* The returned array should be a map using the same keys as $importMapEntries.
3535
*
36+
* The dependencies are an array of module names that are imported by the package.
37+
*
3638
* @param array<string, ImportMapEntry> $importMapEntries
3739
*
3840
* @return array<string, array{content: string, dependencies: string[]}>

src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapVersionCheckerTest.php

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Symfony\Component\AssetMapper\ImportMap\ImportMapConfigReader;
1616
use Symfony\Component\AssetMapper\ImportMap\ImportMapEntries;
1717
use Symfony\Component\AssetMapper\ImportMap\ImportMapEntry;
18+
use Symfony\Component\AssetMapper\ImportMap\ImportMapType;
1819
use Symfony\Component\AssetMapper\ImportMap\ImportMapVersionChecker;
1920
use Symfony\Component\AssetMapper\ImportMap\PackageVersionProblem;
2021
use Symfony\Component\AssetMapper\ImportMap\RemotePackageDownloader;
@@ -73,7 +74,7 @@ public static function getCheckVersionsTests()
7374
{
7475
yield 'no dependencies' => [
7576
[
76-
new ImportMapEntry('foo', version: '1.0.0'),
77+
self::createRemoteEntry('foo', '1.0.0'),
7778
],
7879
[
7980
'foo' => [],
@@ -84,8 +85,8 @@ public static function getCheckVersionsTests()
8485

8586
yield 'single with dependency but no problem' => [
8687
[
87-
new ImportMapEntry('foo', version: '1.0.0'),
88-
new ImportMapEntry('bar', version: '1.5.0'),
88+
self::createRemoteEntry('foo', version: '1.0.0'),
89+
self::createRemoteEntry('bar', version: '1.5.0'),
8990
],
9091
[
9192
'foo' => ['bar'],
@@ -104,8 +105,8 @@ public static function getCheckVersionsTests()
104105

105106
yield 'single with dependency with problem' => [
106107
[
107-
new ImportMapEntry('foo', version: '1.0.0'),
108-
new ImportMapEntry('bar', version: '1.5.0'),
108+
self::createRemoteEntry('foo', version: '1.0.0'),
109+
self::createRemoteEntry('bar', version: '1.5.0'),
109110
],
110111
[
111112
'foo' => ['bar'],
@@ -124,9 +125,31 @@ public static function getCheckVersionsTests()
124125
],
125126
];
126127

128+
yield 'single with dependency & different package specifier with problem' => [
129+
[
130+
self::createRemoteEntry('foo', version: '1.0.0', packageModuleSpecifier: 'foo_package'),
131+
self::createRemoteEntry('bar', version: '1.5.0', packageModuleSpecifier: 'bar_package'),
132+
],
133+
[
134+
'foo' => ['bar'],
135+
'bar' => [],
136+
],
137+
[
138+
[
139+
'url' => '/foo_package/1.0.0',
140+
'response' => [
141+
'dependencies' => ['bar_package' => '^2.0.0'],
142+
],
143+
],
144+
],
145+
[
146+
new PackageVersionProblem('foo_package', 'bar_package', '^2.0.0', '1.5.0'),
147+
],
148+
];
149+
127150
yield 'single with missing dependency' => [
128151
[
129-
new ImportMapEntry('foo', version: '1.0.0'),
152+
self::createRemoteEntry('foo', version: '1.0.0'),
130153
],
131154
[
132155
'foo' => ['bar'],
@@ -146,9 +169,9 @@ public static function getCheckVersionsTests()
146169

147170
yield 'multiple package and problems' => [
148171
[
149-
new ImportMapEntry('foo', version: '1.0.0'),
150-
new ImportMapEntry('bar', version: '1.5.0'),
151-
new ImportMapEntry('baz', version: '2.0.0'),
172+
self::createRemoteEntry('foo', version: '1.0.0'),
173+
self::createRemoteEntry('bar', version: '1.5.0'),
174+
self::createRemoteEntry('baz', version: '2.0.0'),
152175
],
153176
[
154177
'foo' => ['bar'],
@@ -177,8 +200,8 @@ public static function getCheckVersionsTests()
177200

178201
yield 'single with problem on peerDependency' => [
179202
[
180-
new ImportMapEntry('foo', version: '1.0.0'),
181-
new ImportMapEntry('bar', version: '1.5.0'),
203+
self::createRemoteEntry('foo', version: '1.0.0'),
204+
self::createRemoteEntry('bar', version: '1.5.0'),
182205
],
183206
[
184207
'foo' => ['bar'],
@@ -199,8 +222,8 @@ public static function getCheckVersionsTests()
199222

200223
yield 'single that imports something that is not required by the package' => [
201224
[
202-
new ImportMapEntry('foo', version: '1.0.0'),
203-
new ImportMapEntry('bar', version: '1.5.0'),
225+
self::createRemoteEntry('foo', version: '1.0.0'),
226+
self::createRemoteEntry('bar', version: '1.5.0'),
204227
],
205228
[
206229
'foo' => ['bar'],
@@ -221,8 +244,8 @@ public static function getCheckVersionsTests()
221244

222245
yield 'single with npm-style constraint' => [
223246
[
224-
new ImportMapEntry('foo', version: '1.0.0'),
225-
new ImportMapEntry('bar', version: '1.5.0'),
247+
self::createRemoteEntry('foo', version: '1.0.0'),
248+
self::createRemoteEntry('bar', version: '1.5.0'),
226249
],
227250
[
228251
'foo' => ['bar'],
@@ -241,8 +264,8 @@ public static function getCheckVersionsTests()
241264

242265
yield 'single with invalid constraint shows as problem' => [
243266
[
244-
new ImportMapEntry('foo', version: '1.0.0'),
245-
new ImportMapEntry('bar', version: '1.5.0'),
267+
self::createRemoteEntry('foo', version: '1.0.0'),
268+
self::createRemoteEntry('bar', version: '1.5.0'),
246269
],
247270
[
248271
'foo' => ['bar'],
@@ -403,4 +426,10 @@ public static function getNpmSpecificVersionConstraints()
403426
'~1',
404427
];
405428
}
429+
430+
private static function createRemoteEntry(string $importName, string $version, string $packageModuleSpecifier = null): ImportMapEntry
431+
{
432+
$packageModuleSpecifier = $packageModuleSpecifier ?? $importName;
433+
return ImportMapEntry::createRemote($importName, ImportMapType::JS, '/path/to/'.$importName, $version, $packageModuleSpecifier, false);
434+
}
406435
}

src/Symfony/Component/AssetMapper/Tests/ImportMap/Resolver/JsDelivrEsmResolverTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ public static function provideDownloadPackagesTests()
305305
],
306306
],
307307
[
308-
'lodash' => 'lodash contents',
308+
'lodash' => ['content' => 'lodash contents', 'dependencies' => []],
309309
],
310310
];
311311

0 commit comments

Comments
 (0)