Skip to content

Commit 4e4075f

Browse files
mjswensenbestander
authored andcommitted
Fix inaccurate peer dependency warning on upgrade (#2704) (#2733)
1 parent 5b968dd commit 4e4075f

File tree

6 files changed

+184
-0
lines changed

6 files changed

+184
-0
lines changed

__tests__/commands/upgrade.js

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,35 @@ test.concurrent('upgrades from fixed version to latest', (): Promise<void> => {
103103
assert.deepEqual(pkg.dependencies, {'max-safe-integer': '^1.0.1'});
104104
});
105105
});
106+
107+
test.concurrent('warns when peer dependency is not met after upgrade', (): Promise<void> => {
108+
return buildRun(
109+
reporters.BufferReporter,
110+
fixturesLoc,
111+
async (args, flags, config, reporter): Promise<void> => {
112+
await upgrade(config, reporter, flags, args);
113+
const output = reporter.getBuffer();
114+
const warnings = output.filter((entry) => entry.type === 'warning');
115+
assert(warnings.some((warning) => warning.data.toString().toLowerCase().includes('incorrect peer')));
116+
},
117+
['themer'],
118+
{},
119+
'peer-dependency-warn',
120+
);
121+
});
122+
123+
test.concurrent('doesn\'t warn when peer dependency is still met after upgrade', (): Promise<void> => {
124+
return buildRun(
125+
reporters.BufferReporter,
126+
fixturesLoc,
127+
async (args, flags, config, reporter): Promise<void> => {
128+
await upgrade(config, reporter, flags, args);
129+
const output = reporter.getBuffer();
130+
const warnings = output.filter((entry) => entry.type === 'warning');
131+
assert(!warnings.some((warning) => warning.data.toString().toLowerCase().includes('peer')));
132+
},
133+
['themer'],
134+
{},
135+
'peer-dependency-no-warn',
136+
);
137+
});
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"private": "true",
3+
"dependencies": {
4+
"themer": "2.0.0",
5+
"themer-hyper": "^1.0.3"
6+
}
7+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
clone@^1.0.2:
6+
version "1.0.2"
7+
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
8+
9+
color-convert@^1.3.0:
10+
version "1.9.0"
11+
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
12+
dependencies:
13+
color-name "^1.1.1"
14+
15+
color-name@^1.0.0, color-name@^1.1.1:
16+
version "1.1.1"
17+
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
18+
19+
color-string@^0.3.0:
20+
version "0.3.0"
21+
resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
22+
dependencies:
23+
color-name "^1.0.0"
24+
25+
color@^0.11.4:
26+
version "0.11.4"
27+
resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
28+
dependencies:
29+
clone "^1.0.2"
30+
color-convert "^1.3.0"
31+
color-string "^0.3.0"
32+
33+
34+
version "0.0.8"
35+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
36+
37+
minimist@^1.2.0:
38+
version "1.2.0"
39+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
40+
41+
mkdirp-promise@^5.0.1:
42+
version "5.0.1"
43+
resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1"
44+
dependencies:
45+
mkdirp "*"
46+
47+
mkdirp@*:
48+
version "0.5.1"
49+
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
50+
dependencies:
51+
minimist "0.0.8"
52+
53+
pn@^1.0.0:
54+
version "1.0.0"
55+
resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
56+
57+
themer-hyper@^1.0.3:
58+
version "1.0.3"
59+
resolved "https://registry.yarnpkg.com/themer-hyper/-/themer-hyper-1.0.3.tgz#395c789a8ce0770cbbe41c59f00da03b19d85dc3"
60+
dependencies:
61+
color "^0.11.4"
62+
63+
64+
version "2.0.0"
65+
resolved "https://registry.yarnpkg.com/themer/-/themer-2.0.0.tgz#47ebac19913f7cabda14dcea7efb1b7907d3c6ae"
66+
dependencies:
67+
minimist "^1.2.0"
68+
mkdirp-promise "^5.0.1"
69+
pn "^1.0.0"
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"private": true,
3+
"dependencies": {
4+
"themer": "1.0.2",
5+
"themer-hyper": "1.0.1"
6+
}
7+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2+
# yarn lockfile v1
3+
4+
5+
clone@^1.0.2:
6+
version "1.0.2"
7+
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
8+
9+
color-convert@^1.3.0:
10+
version "1.9.0"
11+
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.0.tgz#1accf97dd739b983bf994d56fec8f95853641b7a"
12+
dependencies:
13+
color-name "^1.1.1"
14+
15+
color-name@^1.0.0, color-name@^1.1.1:
16+
version "1.1.1"
17+
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
18+
19+
color-string@^0.3.0:
20+
version "0.3.0"
21+
resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
22+
dependencies:
23+
color-name "^1.0.0"
24+
25+
color@^0.11.4:
26+
version "0.11.4"
27+
resolved "https://registry.yarnpkg.com/color/-/color-0.11.4.tgz#6d7b5c74fb65e841cd48792ad1ed5e07b904d764"
28+
dependencies:
29+
clone "^1.0.2"
30+
color-convert "^1.3.0"
31+
color-string "^0.3.0"
32+
33+
34+
version "0.0.8"
35+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
36+
37+
minimist@^1.2.0:
38+
version "1.2.0"
39+
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
40+
41+
mkdirp@^0.5.1:
42+
version "0.5.1"
43+
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
44+
dependencies:
45+
minimist "0.0.8"
46+
47+
pn@^1.0.0:
48+
version "1.0.0"
49+
resolved "https://registry.yarnpkg.com/pn/-/pn-1.0.0.tgz#1cf5a30b0d806cd18f88fc41a6b5d4ad615b3ba9"
50+
51+
52+
version "1.0.1"
53+
resolved "https://registry.yarnpkg.com/themer-hyper/-/themer-hyper-1.0.1.tgz#7766d9bcfc50c6536d2499afbc2a18f10a172317"
54+
dependencies:
55+
color "^0.11.4"
56+
57+
58+
version "1.0.2"
59+
resolved "https://registry.yarnpkg.com/themer/-/themer-1.0.2.tgz#bbcd2843d998c4a890aaec40b851728acc3aab1b"
60+
dependencies:
61+
minimist "^1.2.0"
62+
mkdirp "^0.5.1"
63+
pn "^1.0.0"

src/package-linker.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,12 @@ export default class PackageLinker {
300300
} while (request = request.parentRequest);
301301
}
302302

303+
// if the resolver already knows about the peer dependency, add those patterns as well
304+
const packagePatterns = this.resolver.patternsByPackage[name];
305+
if (packagePatterns) {
306+
searchPatterns = searchPatterns.concat(packagePatterns);
307+
}
308+
303309
// include root seed patterns last
304310
searchPatterns = searchPatterns.concat(this.resolver.seedPatterns);
305311

0 commit comments

Comments
 (0)