@@ -273,7 +273,13 @@ describe('findPyPyVersion', () => {
273273
274274 it ( 'found PyPy in toolcache' , async ( ) => {
275275 await expect (
276- finder . findPyPyVersion ( 'pypy-3.6-v7.3.x' , architecture , true , false )
276+ finder . findPyPyVersion (
277+ 'pypy-3.6-v7.3.x' ,
278+ architecture ,
279+ true ,
280+ false ,
281+ false
282+ )
277283 ) . resolves . toEqual ( {
278284 resolvedPythonVersion : '3.6.12' ,
279285 resolvedPyPyVersion : '7.3.3'
@@ -291,13 +297,13 @@ describe('findPyPyVersion', () => {
291297
292298 it ( 'throw on invalid input format' , async ( ) => {
293299 await expect (
294- finder . findPyPyVersion ( 'pypy3.7-v7.3.x' , architecture , true , false )
300+ finder . findPyPyVersion ( 'pypy3.7-v7.3.x' , architecture , true , false , false )
295301 ) . rejects . toThrow ( ) ;
296302 } ) ;
297303
298304 it ( 'throw on invalid input format pypy3.7-7.3.x' , async ( ) => {
299305 await expect (
300- finder . findPyPyVersion ( 'pypy3.7-v7.3.x' , architecture , true , false )
306+ finder . findPyPyVersion ( 'pypy3.7-v7.3.x' , architecture , true , false , false )
301307 ) . rejects . toThrow ( ) ;
302308 } ) ;
303309
@@ -309,7 +315,13 @@ describe('findPyPyVersion', () => {
309315 spyChmodSync = jest . spyOn ( fs , 'chmodSync' ) ;
310316 spyChmodSync . mockImplementation ( ( ) => undefined ) ;
311317 await expect (
312- finder . findPyPyVersion ( 'pypy-3.7-v7.3.x' , architecture , true , false )
318+ finder . findPyPyVersion (
319+ 'pypy-3.7-v7.3.x' ,
320+ architecture ,
321+ true ,
322+ false ,
323+ false
324+ )
313325 ) . resolves . toEqual ( {
314326 resolvedPythonVersion : '3.7.9' ,
315327 resolvedPyPyVersion : '7.3.3'
@@ -333,7 +345,13 @@ describe('findPyPyVersion', () => {
333345 spyChmodSync = jest . spyOn ( fs , 'chmodSync' ) ;
334346 spyChmodSync . mockImplementation ( ( ) => undefined ) ;
335347 await expect (
336- finder . findPyPyVersion ( 'pypy-3.7-v7.3.x' , architecture , false , false )
348+ finder . findPyPyVersion (
349+ 'pypy-3.7-v7.3.x' ,
350+ architecture ,
351+ false ,
352+ false ,
353+ false
354+ )
337355 ) . resolves . toEqual ( {
338356 resolvedPythonVersion : '3.7.9' ,
339357 resolvedPyPyVersion : '7.3.3'
@@ -344,15 +362,27 @@ describe('findPyPyVersion', () => {
344362
345363 it ( 'throw if release is not found' , async ( ) => {
346364 await expect (
347- finder . findPyPyVersion ( 'pypy-3.7-v7.5.x' , architecture , true , false )
365+ finder . findPyPyVersion (
366+ 'pypy-3.7-v7.5.x' ,
367+ architecture ,
368+ true ,
369+ false ,
370+ false
371+ )
348372 ) . rejects . toThrowError (
349373 `PyPy version 3.7 (v7.5.x) with arch ${ architecture } not found`
350374 ) ;
351375 } ) ;
352376
353377 it ( 'check-latest enabled version found and used from toolcache' , async ( ) => {
354378 await expect (
355- finder . findPyPyVersion ( 'pypy-3.6-v7.3.x' , architecture , false , true )
379+ finder . findPyPyVersion (
380+ 'pypy-3.6-v7.3.x' ,
381+ architecture ,
382+ false ,
383+ true ,
384+ false
385+ )
356386 ) . resolves . toEqual ( {
357387 resolvedPythonVersion : '3.6.12' ,
358388 resolvedPyPyVersion : '7.3.3'
@@ -371,7 +401,13 @@ describe('findPyPyVersion', () => {
371401 spyChmodSync = jest . spyOn ( fs , 'chmodSync' ) ;
372402 spyChmodSync . mockImplementation ( ( ) => undefined ) ;
373403 await expect (
374- finder . findPyPyVersion ( 'pypy-3.7-v7.3.x' , architecture , false , true )
404+ finder . findPyPyVersion (
405+ 'pypy-3.7-v7.3.x' ,
406+ architecture ,
407+ false ,
408+ true ,
409+ false
410+ )
375411 ) . resolves . toEqual ( {
376412 resolvedPythonVersion : '3.7.9' ,
377413 resolvedPyPyVersion : '7.3.3'
@@ -391,7 +427,13 @@ describe('findPyPyVersion', () => {
391427 return pypyPath ;
392428 } ) ;
393429 await expect (
394- finder . findPyPyVersion ( 'pypy-3.8-v7.3.x' , architecture , false , true )
430+ finder . findPyPyVersion (
431+ 'pypy-3.8-v7.3.x' ,
432+ architecture ,
433+ false ,
434+ true ,
435+ false
436+ )
395437 ) . resolves . toEqual ( {
396438 resolvedPythonVersion : '3.8.8' ,
397439 resolvedPyPyVersion : '7.3.3'
@@ -401,4 +443,22 @@ describe('findPyPyVersion', () => {
401443 'Failed to resolve PyPy v7.3.x with Python (3.8) from manifest'
402444 ) ;
403445 } ) ;
446+
447+ it ( 'found and install successfully, pre-release fallback' , async ( ) => {
448+ spyCacheDir = jest . spyOn ( tc , 'cacheDir' ) ;
449+ spyCacheDir . mockImplementation ( ( ) =>
450+ path . join ( toolDir , 'PyPy' , '3.8.12' , architecture )
451+ ) ;
452+ spyChmodSync = jest . spyOn ( fs , 'chmodSync' ) ;
453+ spyChmodSync . mockImplementation ( ( ) => undefined ) ;
454+ await expect (
455+ finder . findPyPyVersion ( 'pypy3.8' , architecture , false , false , false )
456+ ) . rejects . toThrowError ( ) ;
457+ await expect (
458+ finder . findPyPyVersion ( 'pypy3.8' , architecture , false , false , true )
459+ ) . resolves . toEqual ( {
460+ resolvedPythonVersion : '3.8.12' ,
461+ resolvedPyPyVersion : '7.3.8rc2'
462+ } ) ;
463+ } ) ;
404464} ) ;
0 commit comments