@@ -251,6 +251,18 @@ mod tests {
251251 assert ! ( binaries[ 0 ] . contains( "direnv.linux-s390x" ) ) ;
252252 }
253253
254+ #[ test]
255+ fn test_linux_ppc64le_unarchived_binary ( ) {
256+ let assets: Vec < String > = ron:: from_str ( include_str ! ( "assets/direnv@direnv.ron" ) ) . unwrap ( ) ;
257+ let asset_refs: Vec < & str > = assets. iter ( ) . map ( |s| s. as_str ( ) ) . collect ( ) ;
258+ let platform_triple = AssetTriple :: new ( "linux" . to_string ( ) , "powerpc64" . to_string ( ) , false ) ;
259+ let binaries = get_triple_compatible_assets ( & asset_refs, & platform_triple, |asset| asset) ;
260+ assert ! ( binaries. is_some( ) ) ;
261+ let binaries = binaries. unwrap ( ) ;
262+ assert ! ( !binaries. is_empty( ) && binaries. len( ) == 1 ) ;
263+ assert ! ( binaries[ 0 ] . contains( "direnv.linux-ppc64le" ) ) ;
264+ }
265+
254266 #[ test]
255267 fn test_linux_armv7_with_armv6_glibc_asset ( ) {
256268 let assets: Vec < String > =
@@ -444,4 +456,40 @@ mod tests {
444456 let binaries = binaries. unwrap ( ) ;
445457 assert ! ( binaries[ 0 ] . contains( "fantarepo_ends_in_os_v1.0.0_arm64.darwin" ) ) ;
446458 }
459+
460+ #[ test]
461+ fn test_linux_x86_64_multiple_assets ( ) {
462+ let assets: Vec < String > = ron:: from_str ( include_str ! ( "assets/ahmetb@kubectx.ron" ) ) . unwrap ( ) ;
463+ let platform_triple = AssetTriple :: new ( "linux" . to_string ( ) , "x86_64" . to_string ( ) , false ) ;
464+ let binaries = get_triple_compatible_assets ( & assets, & platform_triple, |asset| asset) ;
465+ assert ! ( binaries. is_some( ) ) ;
466+ let binaries = binaries. unwrap ( ) ;
467+ assert ! ( !binaries. is_empty( ) && binaries. len( ) == 2 ) ;
468+ assert ! ( binaries[ 0 ] . contains( "kubectx_v0.9.5_linux_x86_64.tar.gz" ) ) ;
469+ assert ! ( binaries[ 1 ] . contains( "kubens_v0.9.5_linux_x86_64.tar.gz" ) ) ;
470+ }
471+
472+ #[ test]
473+ fn test_linux_armv7_multiple_assets ( ) {
474+ let assets: Vec < String > = ron:: from_str ( include_str ! ( "assets/ahmetb@kubectx.ron" ) ) . unwrap ( ) ;
475+ let platform_triple = AssetTriple :: new ( "linux" . to_string ( ) , "arm" . to_string ( ) , false ) ;
476+ let binaries = get_triple_compatible_assets ( & assets, & platform_triple, |asset| asset) ;
477+ assert ! ( binaries. is_some( ) ) ;
478+ let binaries = binaries. unwrap ( ) ;
479+ assert ! ( !binaries. is_empty( ) && binaries. len( ) == 2 ) ;
480+ assert ! ( binaries[ 0 ] . contains( "kubectx_v0.9.5_linux_armv7.tar.gz" ) ) ;
481+ assert ! ( binaries[ 1 ] . contains( "kubens_v0.9.5_linux_armv7.tar.gz" ) ) ;
482+ }
483+
484+ #[ test]
485+ fn test_linux_arm64_many_extensions_one_match ( ) {
486+ let assets: Vec < String > = ron:: from_str ( include_str ! ( "assets/muesli@duf.ron" ) ) . unwrap ( ) ;
487+ let asset_refs: Vec < & str > = assets. iter ( ) . map ( |s| s. as_str ( ) ) . collect ( ) ;
488+ let platform_triple = AssetTriple :: new ( "linux" . to_string ( ) , "aarch64" . to_string ( ) , false ) ;
489+ let binaries = get_triple_compatible_assets ( & asset_refs, & platform_triple, |asset| asset) ;
490+ assert ! ( binaries. is_some( ) ) ;
491+ let binaries = binaries. unwrap ( ) ;
492+ assert ! ( !binaries. is_empty( ) && binaries. len( ) == 1 ) ;
493+ assert ! ( binaries[ 0 ] . contains( "duf_0.9.1_linux_arm64.tar.gz" ) ) ;
494+ }
447495}
0 commit comments