@@ -51,6 +51,19 @@ def test_diff_with_rename(self):
5151 assert_equal (diff .rename_from , 'AUTHORS' )
5252 assert_equal (diff .rename_to , 'CONTRIBUTORS' )
5353
54+ def test_diff_with_rename_raw (self ):
55+ output = StringProcessAdapter (fixture ('diff_rename_raw' ))
56+ diffs = Diff ._index_from_raw_format (self .rorepo , output .stdout )
57+ self ._assert_diff_format (diffs )
58+
59+ diffs = filter (lambda d : d .renamed , diffs )
60+ assert_equal (3 , len (diffs ))
61+
62+ diff = diffs [0 ]
63+ assert_true (diff .renamed )
64+ assert_equal (diff .rename_from , 'git/test/test_reflog.py' )
65+ assert_equal (diff .rename_to , 'git/test/refs/test_reflog.py' )
66+
5467 def test_diff_patch_format (self ):
5568 # test all of the 'old' format diffs for completness - it should at least
5669 # be able to deal with it
@@ -98,6 +111,14 @@ def test_diff_interface(self):
98111 # END for each path option
99112 # END for each other side
100113 # END for each commit
114+
115+ # test rename detection
116+ rename_commit = self .rorepo .rev_parse ('4772fe0' )
117+ rename_diffs = rename_commit .parents [0 ].diff (rename_commit , M = True )
118+ rename_diffs = filter (lambda d : d .renamed , rename_diffs )
119+ assert len (rename_diffs ) == 3
120+ assert rename_diffs [0 ].rename_from == rename_diffs [0 ].a_blob .path
121+ assert rename_diffs [0 ].rename_to == rename_diffs [0 ].b_blob .path
101122
102123 # assert we could always find at least one instance of the members we
103124 # can iterate in the diff index - if not this indicates its not working correctly
0 commit comments