@@ -59,7 +59,7 @@ impl Bundle {
5959
6060 // Fill platform-specific defaults for package types when omitted.
6161 if self . package_types . is_none ( ) {
62- self . package_types = Self :: default_package_types ( client. bundle ) ;
62+ self . package_types = Some ( Self :: default_package_types ( client. bundle ) ) ;
6363 }
6464
6565 Self :: validate_package_types_for_bundle ( client. bundle , self . package_types . as_deref ( ) ) ?;
@@ -125,11 +125,9 @@ impl Bundle {
125125 }
126126 }
127127
128+ println ! ( "Bundled {} bundles:" , bundles. len( ) ) ;
128129 for bundle_path in bundles. iter ( ) {
129- tracing:: info!(
130- "Bundled app at: {}" ,
131- bundle_path. absolutize( ) . unwrap( ) . display( )
132- ) ;
130+ println ! ( "{}" , bundle_path. absolutize( ) . unwrap( ) . display( ) ) ;
133131 }
134132
135133 let client = client_artifacts. into_structured_output ( ) ;
@@ -195,11 +193,14 @@ impl Bundle {
195193 Ok ( bundles)
196194 }
197195
198- fn default_package_types ( bundle : BundleFormat ) -> Option < Vec < PackageType > > {
196+ fn default_package_types ( bundle : BundleFormat ) -> Vec < PackageType > {
199197 match bundle {
200- BundleFormat :: Ios => Some ( vec ! [ crate :: PackageType :: Ipa ] ) ,
201- BundleFormat :: Android => Some ( vec ! [ crate :: PackageType :: Aab ] ) ,
202- _ => None ,
198+ BundleFormat :: Web | BundleFormat :: Server => Vec :: new ( ) ,
199+ BundleFormat :: MacOS => vec ! [ PackageType :: MacOsBundle , PackageType :: Dmg ] ,
200+ BundleFormat :: Windows => vec ! [ PackageType :: Nsis ] ,
201+ BundleFormat :: Linux => vec ! [ PackageType :: AppImage ] ,
202+ BundleFormat :: Ios => vec ! [ PackageType :: Ipa ] ,
203+ BundleFormat :: Android => vec ! [ PackageType :: Aab ] ,
203204 }
204205 }
205206
@@ -271,11 +272,55 @@ mod tests {
271272 } ;
272273
273274 #[ test]
274- fn ios_bundle_defaults_to_ipa ( ) {
275+ fn bundle_formats_have_default_package_types ( ) {
275276 assert_eq ! (
276277 Bundle :: default_package_types( BundleFormat :: Ios ) ,
277- Some ( vec![ PackageType :: Ipa ] )
278+ vec![ PackageType :: Ipa ]
279+ ) ;
280+ assert_eq ! (
281+ Bundle :: default_package_types( BundleFormat :: Android ) ,
282+ vec![ PackageType :: Aab ]
283+ ) ;
284+ assert_eq ! (
285+ Bundle :: default_package_types( BundleFormat :: MacOS ) ,
286+ vec![ PackageType :: MacOsBundle , PackageType :: Dmg ]
278287 ) ;
288+ assert_eq ! (
289+ Bundle :: default_package_types( BundleFormat :: Windows ) ,
290+ vec![ PackageType :: Nsis ]
291+ ) ;
292+ assert_eq ! (
293+ Bundle :: default_package_types( BundleFormat :: Linux ) ,
294+ vec![ PackageType :: AppImage ]
295+ ) ;
296+ assert_eq ! ( Bundle :: default_package_types( BundleFormat :: Web ) , vec![ ] ) ;
297+ assert_eq ! ( Bundle :: default_package_types( BundleFormat :: Server ) , vec![ ] ) ;
298+ }
299+
300+ #[ test]
301+ fn default_package_types_are_valid_for_their_bundle_format ( ) {
302+ for bundle_format in [
303+ BundleFormat :: Web ,
304+ BundleFormat :: MacOS ,
305+ BundleFormat :: Windows ,
306+ BundleFormat :: Linux ,
307+ BundleFormat :: Server ,
308+ BundleFormat :: Ios ,
309+ BundleFormat :: Android ,
310+ ] {
311+ let package_types = Bundle :: default_package_types ( bundle_format) ;
312+ Bundle :: validate_package_types_for_bundle ( bundle_format, Some ( & package_types) ) . unwrap ( ) ;
313+ }
314+ }
315+
316+ #[ test]
317+ fn omitted_package_types_are_filled_with_defaults ( ) {
318+ let mut package_types = None ;
319+ if package_types. is_none ( ) {
320+ package_types = Some ( Bundle :: default_package_types ( BundleFormat :: Linux ) ) ;
321+ }
322+
323+ assert_eq ! ( package_types, Some ( vec![ PackageType :: AppImage ] ) ) ;
279324 }
280325
281326 #[ test]
0 commit comments