@@ -599,3 +599,29 @@ void test_apply_both__two_deltas_one_file(void)
599599
600600 git_diff_free (diff );
601601}
602+
603+ void test_apply_both__two_deltas_one_new_file (void )
604+ {
605+ git_diff * diff ;
606+
607+ struct merge_index_entry both_expected [] = {
608+ { 0100644 , "f51658077d85f2264fa179b4d0848268cb3475c3" , 0 , "asparagus.txt" },
609+ { 0100644 , "68f6182f4c85d39e1309d97c7e456156dc9c0096" , 0 , "beef.txt" },
610+ { 0100644 , "4b7c5650008b2e747fe1809eeb5a1dde0e80850a" , 0 , "bouilli.txt" },
611+ { 0100644 , "c4e6cca3ec6ae0148ed231f97257df8c311e015f" , 0 , "gravy.txt" },
612+ { 0100644 , "08d4c445cf0078f3d9b604b82f32f4d87e083325" , 0 , "newfile.txt" },
613+ { 0100644 , "68af1fc7407fd9addf1701a87eb1c95c7494c598" , 0 , "oyster.txt" },
614+ { 0100644 , "94d2c01087f48213bd157222d54edfefd77c9bba" , 0 , "veal.txt" }
615+ };
616+ size_t both_expected_cnt = sizeof (both_expected ) /
617+ sizeof (struct merge_index_entry );
618+
619+ cl_git_pass (git_diff_from_buffer (& diff , DIFF_TWO_DELTAS_ONE_NEW_FILE ,
620+ strlen (DIFF_TWO_DELTAS_ONE_NEW_FILE )));
621+ cl_git_pass (git_apply (repo , diff , GIT_APPLY_LOCATION_BOTH , NULL ));
622+
623+ validate_apply_index (repo , both_expected , both_expected_cnt );
624+ validate_apply_workdir (repo , both_expected , both_expected_cnt );
625+
626+ git_diff_free (diff );
627+ }
0 commit comments