@@ -32,6 +32,11 @@ pub(crate) fn generate_struct(cmd: &GenerateStructCmd) -> Result<()> {
3232 let filename = & cmd. manifest ;
3333 let input = files. file_path ( filename) ?;
3434
35+ validate ( & ValidateCmd {
36+ manifest : cmd. manifest . clone ( ) ,
37+ loader : cmd. loader . clone ( ) ,
38+ } ) ?;
39+
3540 match ( & input, & cmd. output . is_dir ( ) ) {
3641 ( FilePath :: Remote ( _) , _) => generate_struct_single ( & files, input, cmd) ,
3742 ( FilePath :: Local ( file) , _) if !file. exists ( ) => Err ( FMLError :: CliError ( format ! (
@@ -615,6 +620,28 @@ mod test {
615620 Ok ( ( ) )
616621 }
617622
623+ #[ test]
624+ fn test_generate_catches_invalid_feature ( ) -> Result < ( ) , FMLError > {
625+ let manifest = join (
626+ pkg_dir ( ) ,
627+ "fixtures/fe/invalid/invalid_default_value_for_one_channel.fml.yaml" ,
628+ ) ;
629+ let output = NamedTempFile :: new ( ) ?;
630+
631+ let cmd: GenerateStructCmd = GenerateStructCmd {
632+ manifest,
633+ output : output. path ( ) . into ( ) ,
634+ language : TargetLanguage :: ExperimenterYAML ,
635+ load_from_ir : false ,
636+ channel : "app-debug" . to_string ( ) ,
637+ loader : Default :: default ( ) ,
638+ } ;
639+
640+ let result = generate_struct ( & cmd) ;
641+ assert ! ( result. is_err( ) ) ;
642+ Ok ( ( ) )
643+ }
644+
618645 #[ test]
619646 fn test_validate_command ( ) -> Result < ( ) > {
620647 let paths = MANIFEST_PATHS
0 commit comments