@@ -411,3 +411,50 @@ def test_diff_interface(self):
411411 cp = c .parents [0 ]
412412 diff_index = c .diff (cp , ["does/not/exist" ])
413413 self .assertEqual (len (diff_index ), 0 )
414+
415+ @with_rw_directory
416+ def test_rename_override (self , rw_dir ):
417+ """Test disabling of diff rename detection"""
418+
419+ # create and commit file_a.txt
420+ repo = Repo .init (rw_dir )
421+ file_a = osp .join (rw_dir , "file_a.txt" )
422+ with open (file_a , "w" , encoding = 'utf-8' ) as outfile :
423+ outfile .write ("hello world" )
424+ repo .git .add (Git .polish_url (file_a ))
425+ repo .git .commit (message = "Added file_a.txt" )
426+
427+ # remove file_a.txt
428+ repo .git .rm (Git .polish_url (file_a ))
429+
430+ # create and commit file_b.txt
431+ file_b = osp .join (rw_dir , "file_b.txt" )
432+ with open (file_b , "w" , encoding = 'utf-8' ) as outfile :
433+ outfile .write ("hello world" )
434+ repo .git .add (Git .polish_url (file_b ))
435+ repo .git .commit (message = "Removed file_a.txt. Added file_b.txt" )
436+
437+ commit_a = repo .commit ('HEAD' )
438+ commit_b = repo .commit ('HEAD~1' )
439+
440+ # check default diff command with renamed files enabled
441+ diffs = commit_b .diff (commit_a )
442+ self .assertEqual (1 , len (diffs ))
443+ diff = diffs [0 ]
444+ self .assertEqual (True , diff .renamed_file )
445+ self .assertEqual ('file_a.txt' , diff .rename_from )
446+ self .assertEqual ('file_b.txt' , diff .rename_to )
447+
448+ # check diff with rename files disabled
449+ diffs = commit_b .diff (commit_a , no_renames = True )
450+ self .assertEqual (2 , len (diffs ))
451+
452+ # check fileA.txt deleted
453+ diff = diffs [0 ]
454+ self .assertEqual (True , diff .deleted_file )
455+ self .assertEqual ('file_a.txt' , diff .a_path )
456+
457+ # check fileB.txt added
458+ diff = diffs [1 ]
459+ self .assertEqual (True , diff .new_file )
460+ self .assertEqual ('file_b.txt' , diff .a_path )
0 commit comments