@@ -304,4 +304,162 @@ describe('fetch linux tool data based on options', () => {
304304 expect ( tool . dir ) . toBe ( name )
305305 expect ( tool . branch ) . toBe ( 'swiftwasm' )
306306 } )
307+
308+ it ( 'fetches ubuntu 22.04 swift tool with Linux SDK' , async ( ) => {
309+ setos ( { os : 'linux' , dist : 'Ubuntu' , release : '22.04' } )
310+ jest . spyOn ( os , 'arch' ) . mockReturnValue ( 'x64' )
311+ const version = ToolchainVersion . create ( '6.1.1' , false , [ 'static-sdk' ] )
312+ const tool = await Platform . toolchain ( version )
313+ expect ( tool ) . toBeTruthy ( )
314+ const lTool = tool as LinuxToolchainSnapshot
315+ expect ( lTool . download ) . toBe ( 'swift-6.1.1-RELEASE-ubuntu22.04.tar.gz' )
316+ expect ( lTool . dir ) . toBe ( 'swift-6.1.1-RELEASE' )
317+ expect ( lTool . platform ) . toBe ( 'ubuntu2204' )
318+ expect ( lTool . branch ) . toBe ( 'swift-6.1.1-release' )
319+ expect ( lTool . download_signature ) . toBe (
320+ 'swift-6.1.1-RELEASE-ubuntu22.04.tar.gz.sig'
321+ )
322+ expect ( lTool . preventCaching ) . toBe ( false )
323+ if ( ! tool ) {
324+ return
325+ }
326+
327+ const sdkSnapshots = await version . sdkSnapshots ( tool )
328+ expect ( sdkSnapshots . length ) . toBe ( 1 )
329+ const sdkSnapshot = sdkSnapshots [ 0 ]
330+ expect ( sdkSnapshot . platform ) . toBe ( 'static-sdk' )
331+ expect ( sdkSnapshot . dir ) . toBe ( 'swift-6.1.1-RELEASE' )
332+ expect ( sdkSnapshot . branch ) . toBe ( 'swift-6.1.1-release' )
333+ expect ( sdkSnapshot . download ) . toBe (
334+ 'swift-6.1.1-RELEASE_static-linux-0.0.1.artifactbundle.tar.gz'
335+ )
336+ expect ( sdkSnapshot . checksum ) . toBe (
337+ '8a69753e181e40c202465f03bcafcc898070a86817ca0f39fc808f76638e90c2'
338+ )
339+ } )
340+
341+ it ( 'fetches ubuntu 22.04 named swift tool with Linux SDK' , async ( ) => {
342+ setos ( { os : 'linux' , dist : 'Ubuntu' , release : '22.04' } )
343+ jest . spyOn ( os , 'arch' ) . mockReturnValue ( 'x64' )
344+ const name = 'swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a'
345+ const version = ToolchainVersion . create ( name , false , [ 'static-sdk' ] )
346+ const tool = await Platform . toolchain ( version )
347+ expect ( tool ) . toBeTruthy ( )
348+ const lTool = tool as LinuxToolchainSnapshot
349+ expect ( lTool . download ) . toBe (
350+ 'swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a-ubuntu22.04.tar.gz'
351+ )
352+ expect ( lTool . dir ) . toBe ( 'swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a' )
353+ expect ( lTool . platform ) . toBe ( 'ubuntu2204' )
354+ expect ( lTool . branch ) . toBe ( 'swift-6.0-branch' )
355+ expect ( lTool . download_signature ) . toBe (
356+ 'swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a-ubuntu22.04.tar.gz.sig'
357+ )
358+ expect ( lTool . preventCaching ) . toBe ( false )
359+ if ( ! tool ) {
360+ return
361+ }
362+
363+ const sdkSnapshots = await version . sdkSnapshots ( tool )
364+ expect ( sdkSnapshots . length ) . toBe ( 1 )
365+ const sdkSnapshot = sdkSnapshots [ 0 ]
366+ expect ( sdkSnapshot . platform ) . toBe ( 'static-sdk' )
367+ expect ( sdkSnapshot . dir ) . toBe ( 'swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a' )
368+ expect ( sdkSnapshot . branch ) . toBe ( 'swift-6.0-branch' )
369+ expect ( sdkSnapshot . download ) . toBe (
370+ 'swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a_static-linux-0.0.1.artifactbundle.tar.gz'
371+ )
372+ expect ( sdkSnapshot . checksum ) . toBe (
373+ '83a88650cd0675552ce2cf8159c31966fde73418f49493c1644073fffe8be9f4'
374+ )
375+ } )
376+
377+ it ( 'fetches ubuntu 22.04 named swift tool with WASM SDK' , async ( ) => {
378+ setos ( { os : 'linux' , dist : 'Ubuntu' , release : '22.04' } )
379+ jest . spyOn ( os , 'arch' ) . mockReturnValue ( 'x64' )
380+ const name = 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a'
381+ const version = ToolchainVersion . create ( name , false , [ 'wasm-sdk' ] )
382+ const tool = await Platform . toolchain ( version )
383+ expect ( tool ) . toBeTruthy ( )
384+ const lTool = tool as LinuxToolchainSnapshot
385+ expect ( lTool . download ) . toBe (
386+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a-ubuntu22.04.tar.gz'
387+ )
388+ expect ( lTool . dir ) . toBe ( 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a' )
389+ expect ( lTool . platform ) . toBe ( 'ubuntu2204' )
390+ expect ( lTool . branch ) . toBe ( 'swift-6.2-branch' )
391+ expect ( lTool . download_signature ) . toBe (
392+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a-ubuntu22.04.tar.gz.sig'
393+ )
394+ expect ( lTool . preventCaching ) . toBe ( false )
395+ if ( ! tool ) {
396+ return
397+ }
398+
399+ const sdkSnapshots = await version . sdkSnapshots ( tool )
400+ expect ( sdkSnapshots . length ) . toBe ( 1 )
401+ const sdkSnapshot = sdkSnapshots [ 0 ]
402+ expect ( sdkSnapshot . platform ) . toBe ( 'wasm-sdk' )
403+ expect ( sdkSnapshot . dir ) . toBe ( 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a' )
404+ expect ( sdkSnapshot . branch ) . toBe ( 'swift-6.2-branch' )
405+ expect ( sdkSnapshot . download ) . toBe (
406+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a_wasm.artifactbundle.tar.gz'
407+ )
408+ expect ( sdkSnapshot . checksum ) . toBe (
409+ '40f3c780d4a8f3d369c203615330e1b00441b6f8b7023535bebc16bf4dd5f84a'
410+ )
411+ } )
412+
413+ it ( 'fetches ubuntu 22.04 named swift tool with Linux and WASM SDK' , async ( ) => {
414+ setos ( { os : 'linux' , dist : 'Ubuntu' , release : '22.04' } )
415+ jest . spyOn ( os , 'arch' ) . mockReturnValue ( 'x64' )
416+ const name = 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a'
417+ const version = ToolchainVersion . create ( name , false , [
418+ 'static-sdk' ,
419+ 'wasm-sdk'
420+ ] )
421+ const tool = await Platform . toolchain ( version )
422+ expect ( tool ) . toBeTruthy ( )
423+ const lTool = tool as LinuxToolchainSnapshot
424+ expect ( lTool . download ) . toBe (
425+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a-ubuntu22.04.tar.gz'
426+ )
427+ expect ( lTool . dir ) . toBe ( 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a' )
428+ expect ( lTool . platform ) . toBe ( 'ubuntu2204' )
429+ expect ( lTool . branch ) . toBe ( 'swift-6.2-branch' )
430+ expect ( lTool . download_signature ) . toBe (
431+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a-ubuntu22.04.tar.gz.sig'
432+ )
433+ expect ( lTool . preventCaching ) . toBe ( false )
434+ if ( ! tool ) {
435+ return
436+ }
437+
438+ const sdkSnapshots = await version . sdkSnapshots ( tool )
439+ expect ( sdkSnapshots . length ) . toBe ( 2 )
440+ for ( let i = 0 ; i < 2 ; i ++ ) {
441+ const sdkSnapshot = sdkSnapshots [ i ]
442+ expect ( sdkSnapshot . dir ) . toBe (
443+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a'
444+ )
445+ expect ( sdkSnapshot . branch ) . toBe ( 'swift-6.2-branch' )
446+ if ( i == 0 ) {
447+ expect ( sdkSnapshot . platform ) . toBe ( 'static-sdk' )
448+ expect ( sdkSnapshot . download ) . toBe (
449+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a_static-linux-0.0.1.artifactbundle.tar.gz'
450+ )
451+ expect ( sdkSnapshot . checksum ) . toBe (
452+ '9e4065031461c00a88912e94d0c7d847e701a28667f58facad49dc636de77b6f'
453+ )
454+ } else {
455+ expect ( sdkSnapshot . platform ) . toBe ( 'wasm-sdk' )
456+ expect ( sdkSnapshot . download ) . toBe (
457+ 'swift-6.2-DEVELOPMENT-SNAPSHOT-2025-08-01-a_wasm.artifactbundle.tar.gz'
458+ )
459+ expect ( sdkSnapshot . checksum ) . toBe (
460+ '40f3c780d4a8f3d369c203615330e1b00441b6f8b7023535bebc16bf4dd5f84a'
461+ )
462+ }
463+ }
464+ } )
307465} )
0 commit comments