@@ -294,6 +294,47 @@ it(`should use hash from "packageManager" even when "devEngines" defines a diffe
294294 } ) ;
295295} ) ;
296296
297+ it ( `should use hash from env even when "devEngines" defines a different one` , async ( ) => {
298+ await xfs . mktempPromise ( async cwd => {
299+ await xfs . writeJsonPromise ( ppath . join ( cwd , `package.json` as PortablePath ) , {
300+ devEngines : {
301+ packageManager : {
302+ name : `yarn` ,
303+ version : `3.0.0-rc.2+sha224.f83f6d1cbfac10ba6b516a62ccd2a72ccd857aa6c514d1cd7185ec60` ,
304+ } ,
305+ } ,
306+ } ) ;
307+
308+ process . env . COREPACK_DEV_ENGINES_YARN = `3.0.0-rc.2+sha224.deadbeef` ;
309+ await expect ( runCli ( cwd , [ `yarn` , `--version` ] ) ) . resolves . toMatchObject ( {
310+ exitCode : 1 ,
311+ stderr : / M i s m a t c h h a s h e s . E x p e c t e d d e a d b e e f , g o t f 8 3 f 6 d 1 c b f a c 1 0 b a 6 b 5 1 6 a 6 2 c c d 2 a 7 2 c c d 8 5 7 a a 6 c 5 1 4 d 1 c d 7 1 8 5 e c 6 0 / ,
312+ stdout : `` ,
313+ } ) ;
314+ } ) ;
315+ } ) ;
316+
317+ it ( `should use hash from env even when ".corepack.env" defines a different one` , async ( ) => {
318+ await xfs . mktempPromise ( async cwd => {
319+ await xfs . writeJsonPromise ( ppath . join ( cwd , `package.json` as PortablePath ) , {
320+ devEngines : {
321+ packageManager : {
322+ name : `yarn` ,
323+ version : `3.0.0-rc.2` ,
324+ } ,
325+ } ,
326+ } ) ;
327+ await xfs . writeFilePromise ( ppath . join ( cwd , `.corepack.env` as PortablePath ) , `COREPACK_DEV_ENGINES_YARN=3.0.0-rc.2+sha1.bedabb1e\n` ) ;
328+
329+ process . env . COREPACK_DEV_ENGINES_YARN = `3.0.0-rc.2+sha224.deadbeef` ;
330+ await expect ( runCli ( cwd , [ `yarn` , `--version` ] ) ) . resolves . toMatchObject ( {
331+ exitCode : 1 ,
332+ stderr : / M i s m a t c h h a s h e s . E x p e c t e d b e d a b b 1 e , g o t 6 9 4 b d a d 8 1 7 0 3 1 6 9 e 2 0 3 f e b d 5 7 f 9 d c 9 7 d 3 b e 8 6 7 b d / ,
333+ stdout : `` ,
334+ } ) ;
335+ } ) ;
336+ } ) ;
337+
297338describe ( `should accept range in devEngines only if a specific version is provided` , ( ) => {
298339 it ( `either in .corepack.env` , async ( ) => {
299340 await xfs . mktempPromise ( async cwd => {
0 commit comments