@@ -499,3 +499,28 @@ void test_apply_both__rename_a_to_b_to_c_exact(void)
499499
500500 git_diff_free (diff );
501501}
502+
503+ void test_apply_both__rename_circular (void )
504+ {
505+ git_diff * diff ;
506+
507+ struct merge_index_entry both_expected [] = {
508+ { 0100644 , "68f6182f4c85d39e1309d97c7e456156dc9c0096" , 0 , "asparagus.txt" },
509+ { 0100644 , "f51658077d85f2264fa179b4d0848268cb3475c3" , 0 , "beef.txt" },
510+ { 0100644 , "4b7c5650008b2e747fe1809eeb5a1dde0e80850a" , 0 , "bouilli.txt" },
511+ { 0100644 , "c4e6cca3ec6ae0148ed231f97257df8c311e015f" , 0 , "gravy.txt" },
512+ { 0100644 , "68af1fc7407fd9addf1701a87eb1c95c7494c598" , 0 , "oyster.txt" },
513+ { 0100644 , "94d2c01087f48213bd157222d54edfefd77c9bba" , 0 , "veal.txt" }
514+ };
515+ size_t both_expected_cnt = sizeof (both_expected ) /
516+ sizeof (struct merge_index_entry );
517+
518+ cl_git_pass (git_diff_from_buffer (& diff , DIFF_RENAME_CIRCULAR ,
519+ strlen (DIFF_RENAME_CIRCULAR )));
520+ cl_git_pass (git_apply (repo , diff , GIT_APPLY_LOCATION_BOTH , NULL ));
521+
522+ validate_apply_index (repo , both_expected , both_expected_cnt );
523+ validate_apply_workdir (repo , both_expected , both_expected_cnt );
524+
525+ git_diff_free (diff );
526+ }
0 commit comments