diff options
-rw-r--r-- | lib/git/diff.py | 1 | ||||
-rw-r--r-- | test/git/test_diff.py | 16 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/git/diff.py b/lib/git/diff.py index 0dd4ed6e..9df0c499 100644 --- a/lib/git/diff.py +++ b/lib/git/diff.py @@ -343,6 +343,7 @@ class Diff(object): continue # END its not a valid diff line old_mode, new_mode, a_blob_id, b_blob_id, change_type, path = line[1:].split(None, 5) + path = path.strip() a_path = path b_path = path deleted_file = False diff --git a/test/git/test_diff.py b/test/git/test_diff.py index 5df39df1..2f6a19bd 100644 --- a/test/git/test_diff.py +++ b/test/git/test_diff.py @@ -8,17 +8,30 @@ from test.testlib import * from git import * class TestDiff(TestBase): + + def _assert_diff_format(self, diffs): + # verify that the format of the diff is sane + for diff in diffs: + if diff.a_blob: + assert not diff.a_blob.path.endswith('\n') + if diff.b_blob: + assert not diff.b_blob.path.endswith('\n') + # END for each diff + return diffs def test_list_from_string_new_mode(self): output = ListProcessAdapter(fixture('diff_new_mode')) diffs = Diff._index_from_patch_format(self.rorepo, output.stdout) + self._assert_diff_format(diffs) + assert_equal(1, len(diffs)) assert_equal(10, len(diffs[0].diff.splitlines())) def test_diff_with_rename(self): output = ListProcessAdapter(fixture('diff_rename')) diffs = Diff._index_from_patch_format(self.rorepo, output.stdout) - + self._assert_diff_format(diffs) + assert_equal(1, len(diffs)) diff = diffs[0] @@ -54,6 +67,7 @@ class TestDiff(TestBase): assert isinstance(diff_index, DiffIndex) if diff_index: + self._assert_diff_format(diff_index) for ct in DiffIndex.change_type: key = 'ct_%s'%ct assertion_map.setdefault(key, 0) |