@@ -613,20 +613,28 @@ mod tests {
613613 let mut env_vars = setup_basic_env_vars ( ) ;
614614 env_vars. extend ( setup_dataset_env_vars ( ) ) ;
615615 env_vars. extend ( setup_input_files_env_vars ( 2 ) ) ;
616-
616+
617617 // Remove dataset URL and an input file URL
618618 env_vars. remove ( & IexecDatasetUrl ( 0 ) . name ( ) ) ;
619619 env_vars. remove ( & IexecInputFileUrlPrefix ( 1 ) . name ( ) ) ;
620620
621621 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
622622 let result = PreComputeArgs :: read_args ( ) ;
623-
623+
624624 // Should collect both errors (dataset stops at URL, input file error also collected)
625625 assert_eq ! ( result. 1 . len( ) , 2 ) ;
626- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeDatasetUrlMissing (
627- DATASET_FILENAME . to_string( )
628- ) ) ) ;
629- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 1 ) ) ) ;
626+ assert ! (
627+ result
628+ . 1
629+ . contains( & ReplicateStatusCause :: PreComputeDatasetUrlMissing (
630+ DATASET_FILENAME . to_string( )
631+ ) )
632+ ) ;
633+ assert ! (
634+ result
635+ . 1
636+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 1 ) )
637+ ) ;
630638 } ) ;
631639 }
632640
@@ -636,27 +644,39 @@ mod tests {
636644 env_vars. insert ( IsDatasetRequired . name ( ) , "false" . to_string ( ) ) ;
637645 env_vars. extend ( setup_input_files_env_vars ( 0 ) ) ;
638646 env_vars. extend ( setup_bulk_dataset_env_vars ( 3 ) ) ;
639-
647+
640648 // Remove various fields from different bulk datasets
641649 env_vars. remove ( & IexecDatasetUrl ( 1 ) . name ( ) ) ;
642650 env_vars. remove ( & IexecDatasetChecksum ( 2 ) . name ( ) ) ;
643651 env_vars. remove ( & IexecDatasetKey ( 3 ) . name ( ) ) ;
644652
645653 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
646654 let result = PreComputeArgs :: read_args ( ) ;
647-
655+
648656 // Should collect all 3 errors
649657 assert_eq ! ( result. 1 . len( ) , 3 ) ;
650- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeDatasetUrlMissing (
651- "bulk-dataset-1.txt" . to_string( )
652- ) ) ) ;
653- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeDatasetChecksumMissing (
654- "bulk-dataset-2.txt" . to_string( )
655- ) ) ) ;
656- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeDatasetKeyMissing (
657- "bulk-dataset-3.txt" . to_string( )
658- ) ) ) ;
659-
658+ assert ! (
659+ result
660+ . 1
661+ . contains( & ReplicateStatusCause :: PreComputeDatasetUrlMissing (
662+ "bulk-dataset-1.txt" . to_string( )
663+ ) )
664+ ) ;
665+ assert ! (
666+ result
667+ . 1
668+ . contains( & ReplicateStatusCause :: PreComputeDatasetChecksumMissing (
669+ "bulk-dataset-2.txt" . to_string( )
670+ ) )
671+ ) ;
672+ assert ! (
673+ result
674+ . 1
675+ . contains( & ReplicateStatusCause :: PreComputeDatasetKeyMissing (
676+ "bulk-dataset-3.txt" . to_string( )
677+ ) )
678+ ) ;
679+
660680 // No datasets should be added since they all had errors
661681 assert_eq ! ( result. 0 . datasets. len( ) , 0 ) ;
662682 } ) ;
@@ -668,20 +688,20 @@ mod tests {
668688 env_vars. insert ( IsDatasetRequired . name ( ) , "false" . to_string ( ) ) ;
669689 env_vars. extend ( setup_input_files_env_vars ( 0 ) ) ;
670690 env_vars. extend ( setup_bulk_dataset_env_vars ( 3 ) ) ;
671-
691+
672692 // Remove only the second dataset's URL
673693 env_vars. remove ( & IexecDatasetUrl ( 2 ) . name ( ) ) ;
674694
675695 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
676696 let result = PreComputeArgs :: read_args ( ) ;
677-
697+
678698 // Should have one error for the missing URL
679699 assert_eq ! ( result. 1 . len( ) , 1 ) ;
680700 assert_eq ! (
681701 result. 1 [ 0 ] ,
682702 ReplicateStatusCause :: PreComputeDatasetUrlMissing ( "bulk-dataset-2.txt" . to_string( ) )
683703 ) ;
684-
704+
685705 // Should successfully load the other two datasets
686706 assert_eq ! ( result. 0 . datasets. len( ) , 2 ) ;
687707 assert_eq ! ( result. 0 . datasets[ 0 ] . url, "https://bulk-dataset-1.bin" ) ;
@@ -694,19 +714,27 @@ mod tests {
694714 let mut env_vars = setup_basic_env_vars ( ) ;
695715 env_vars. insert ( IsDatasetRequired . name ( ) , "false" . to_string ( ) ) ;
696716 env_vars. extend ( setup_input_files_env_vars ( 5 ) ) ;
697-
717+
698718 // Remove multiple input file URLs
699719 env_vars. remove ( & IexecInputFileUrlPrefix ( 2 ) . name ( ) ) ;
700720 env_vars. remove ( & IexecInputFileUrlPrefix ( 4 ) . name ( ) ) ;
701721
702722 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
703723 let result = PreComputeArgs :: read_args ( ) ;
704-
724+
705725 // Should collect errors for missing URLs
706726 assert_eq ! ( result. 1 . len( ) , 2 ) ;
707- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 2 ) ) ) ;
708- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 4 ) ) ) ;
709-
727+ assert ! (
728+ result
729+ . 1
730+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 2 ) )
731+ ) ;
732+ assert ! (
733+ result
734+ . 1
735+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 4 ) )
736+ ) ;
737+
710738 // Should successfully load the other three input files
711739 assert_eq ! ( result. 0 . input_files. len( ) , 3 ) ;
712740 assert_eq ! ( result. 0 . input_files[ 0 ] , "https://input-1.txt" ) ;
@@ -721,7 +749,7 @@ mod tests {
721749 env_vars. extend ( setup_dataset_env_vars ( ) ) ;
722750 env_vars. extend ( setup_input_files_env_vars ( 3 ) ) ;
723751 env_vars. extend ( setup_bulk_dataset_env_vars ( 2 ) ) ;
724-
752+
725753 // Create errors across different categories
726754 env_vars. insert ( IsDatasetRequired . name ( ) , "invalid-bool" . to_string ( ) ) ;
727755 // Since invalid bool defaults to false, dataset at index 0 won't be read
@@ -731,14 +759,26 @@ mod tests {
731759
732760 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
733761 let result = PreComputeArgs :: read_args ( ) ;
734-
762+
735763 // Should collect: bool parse error, bulk dataset checksum error, input file error
736764 assert_eq ! ( result. 1 . len( ) , 3 ) ;
737- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeIsDatasetRequiredMissing ) ) ;
738- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeDatasetChecksumMissing (
739- "bulk-dataset-1.txt" . to_string( )
740- ) ) ) ;
741- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 2 ) ) ) ;
765+ assert ! (
766+ result
767+ . 1
768+ . contains( & ReplicateStatusCause :: PreComputeIsDatasetRequiredMissing )
769+ ) ;
770+ assert ! (
771+ result
772+ . 1
773+ . contains( & ReplicateStatusCause :: PreComputeDatasetChecksumMissing (
774+ "bulk-dataset-1.txt" . to_string( )
775+ ) )
776+ ) ;
777+ assert ! (
778+ result
779+ . 1
780+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 2 ) )
781+ ) ;
742782 } ) ;
743783 }
744784
@@ -748,17 +788,17 @@ mod tests {
748788 env_vars. extend ( setup_dataset_env_vars ( ) ) ;
749789 env_vars. extend ( setup_input_files_env_vars ( 0 ) ) ;
750790 env_vars. extend ( setup_bulk_dataset_env_vars ( 4 ) ) ;
751-
791+
752792 // Break datasets at indices 1 and 3
753793 env_vars. remove ( & IexecDatasetUrl ( 1 ) . name ( ) ) ;
754794 env_vars. remove ( & IexecDatasetKey ( 3 ) . name ( ) ) ;
755795
756796 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
757797 let result = PreComputeArgs :: read_args ( ) ;
758-
798+
759799 // Should have 2 errors
760800 assert_eq ! ( result. 1 . len( ) , 2 ) ;
761-
801+
762802 // Should successfully load datasets at indices 0, 2, and 4
763803 assert_eq ! ( result. 0 . datasets. len( ) , 3 ) ;
764804 assert_eq ! ( result. 0 . datasets[ 0 ] . url, DATASET_URL ) ;
@@ -776,11 +816,14 @@ mod tests {
776816
777817 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
778818 let result = PreComputeArgs :: read_args ( ) ;
779-
819+
780820 // Should collect the parse error
781821 assert_eq ! ( result. 1 . len( ) , 1 ) ;
782- assert_eq ! ( result. 1 [ 0 ] , ReplicateStatusCause :: PreComputeFailedUnknownIssue ) ;
783-
822+ assert_eq ! (
823+ result. 1 [ 0 ] ,
824+ ReplicateStatusCause :: PreComputeFailedUnknownIssue
825+ ) ;
826+
784827 // Should still process input files successfully
785828 assert_eq ! ( result. 0 . input_files. len( ) , 2 ) ;
786829 assert_eq ! ( result. 0 . iexec_bulk_slice_size, 0 ) ;
@@ -792,21 +835,21 @@ mod tests {
792835 let mut env_vars = setup_basic_env_vars ( ) ;
793836 env_vars. insert ( IsDatasetRequired . name ( ) , "false" . to_string ( ) ) ;
794837 env_vars. extend ( setup_input_files_env_vars ( 0 ) ) ;
795-
838+
796839 // Set up only one bulk dataset but with missing filename (first field checked)
797840 env_vars. insert ( IexecBulkSliceSize . name ( ) , "1" . to_string ( ) ) ;
798841 // Intentionally not setting filename - this will cause early exit from loop
799842
800843 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
801844 let result = PreComputeArgs :: read_args ( ) ;
802-
845+
803846 // Should collect error for missing filename (loop exits early, doesn't check other fields)
804847 assert_eq ! ( result. 1 . len( ) , 1 ) ;
805848 assert_eq ! (
806849 result. 1 [ 0 ] ,
807850 ReplicateStatusCause :: PreComputeDatasetFilenameMissing ( "dataset_1" . to_string( ) )
808851 ) ;
809-
852+
810853 // No dataset should be added
811854 assert_eq ! ( result. 0 . datasets. len( ) , 0 ) ;
812855 } ) ;
@@ -817,22 +860,27 @@ mod tests {
817860 let mut env_vars = setup_basic_env_vars ( ) ;
818861 env_vars. insert ( IsDatasetRequired . name ( ) , "false" . to_string ( ) ) ;
819862 env_vars. extend ( setup_input_files_env_vars ( 0 ) ) ;
820-
863+
821864 // Set up bulk dataset with filename but missing URL (second field checked)
822865 env_vars. insert ( IexecBulkSliceSize . name ( ) , "1" . to_string ( ) ) ;
823- env_vars. insert ( IexecDatasetFilename ( 1 ) . name ( ) , "incomplete-dataset.txt" . to_string ( ) ) ;
866+ env_vars. insert (
867+ IexecDatasetFilename ( 1 ) . name ( ) ,
868+ "incomplete-dataset.txt" . to_string ( ) ,
869+ ) ;
824870 // Missing URL, checksum, and key - but should only report URL error
825871
826872 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
827873 let result = PreComputeArgs :: read_args ( ) ;
828-
874+
829875 // Should only collect error for the first missing field (URL)
830876 assert_eq ! ( result. 1 . len( ) , 1 ) ;
831877 assert_eq ! (
832878 result. 1 [ 0 ] ,
833- ReplicateStatusCause :: PreComputeDatasetUrlMissing ( "incomplete-dataset.txt" . to_string( ) )
879+ ReplicateStatusCause :: PreComputeDatasetUrlMissing (
880+ "incomplete-dataset.txt" . to_string( )
881+ )
834882 ) ;
835-
883+
836884 // No dataset should be added
837885 assert_eq ! ( result. 0 . datasets. len( ) , 0 ) ;
838886 } ) ;
@@ -847,13 +895,25 @@ mod tests {
847895
848896 temp_env:: with_vars ( to_temp_env_vars ( env_vars) , || {
849897 let result = PreComputeArgs :: read_args ( ) ;
850-
898+
851899 // Should collect errors for all missing input files
852900 assert_eq ! ( result. 1 . len( ) , 3 ) ;
853- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 1 ) ) ) ;
854- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 2 ) ) ) ;
855- assert ! ( result. 1 . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 3 ) ) ) ;
856-
901+ assert ! (
902+ result
903+ . 1
904+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 1 ) )
905+ ) ;
906+ assert ! (
907+ result
908+ . 1
909+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 2 ) )
910+ ) ;
911+ assert ! (
912+ result
913+ . 1
914+ . contains( & ReplicateStatusCause :: PreComputeAtLeastOneInputFileUrlMissing ( 3 ) )
915+ ) ;
916+
857917 // Input files should be empty
858918 assert_eq ! ( result. 0 . input_files. len( ) , 0 ) ;
859919 } ) ;
0 commit comments