From 798e357ffe3d551a59a26b3f228e321cd6f2a4ed Mon Sep 17 00:00:00 2001 From: Brandon Milton Date: Tue, 5 Dec 2017 20:13:35 -0800 Subject: [PATCH 1/3] Add more patch and blob tests that could fail --- test/test_blob.py | 18 +++++++++++ test/test_patch.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/test/test_blob.py b/test/test_blob.py index c2095fd3e..21c9cb963 100644 --- a/test/test_blob.py +++ b/test/test_blob.py @@ -57,6 +57,17 @@ \ No newline at end of file """ +BLOB_PATCH_2 = """diff --git a/file b/file +index a520c24..d675fa4 100644 +--- a/file ++++ b/file +@@ -1,3 +1 @@ +-hello world +-hola mundo +-bonjour le monde ++foo bar +""" + BLOB_PATCH_DELETED = """diff --git a/file b/file deleted file mode 100644 index a520c24..0000000 @@ -170,5 +181,12 @@ def test_diff_blob_to_buffer_delete(self): patch = blob.diff_to_buffer(None) self.assertEqual(patch.patch, BLOB_PATCH_DELETED) + def test_diff_blob_create(self): + old = self.repo[self.repo.create_blob(BLOB_CONTENT)] + new = self.repo[self.repo.create_blob(BLOB_NEW_CONTENT)] + + patch = old.diff(new) + self.assertEqual(patch.patch, BLOB_PATCH_2) + if __name__ == '__main__': unittest.main() diff --git a/test/test_patch.py b/test/test_patch.py index 015e5ad21..30011531d 100644 --- a/test/test_patch.py +++ b/test/test_patch.py @@ -155,3 +155,77 @@ def test_patch_create_from_bad_new_type_arg(self): None, self.repo, ) + + def test_patch_create_blob_blobs(self): + old_blob = self.repo[self.repo.create_blob(BLOB_OLD_CONTENT)] + new_blob = self.repo[self.repo.create_blob(BLOB_NEW_CONTENT)] + patch = pygit2.Patch.create_from( + old_blob, + new_blob, + old_as_path=BLOB_OLD_PATH, + new_as_path=BLOB_NEW_PATH, + ) + + self.assertEqual(patch.patch, BLOB_PATCH) + + def test_patch_create_blob_buffer(self): + blob = self.repo[self.repo.create_blob(BLOB_OLD_CONTENT)] + patch = pygit2.Patch.create_from( + blob, + BLOB_NEW_CONTENT, + old_as_path=BLOB_OLD_PATH, + new_as_path=BLOB_NEW_PATH, + ) + + self.assertEqual(patch.patch, BLOB_PATCH) + + def test_patch_create_blob_delete(self): + blob = self.repo[self.repo.create_blob(BLOB_OLD_CONTENT)] + patch = pygit2.Patch.create_from( + blob, + None, + old_as_path=BLOB_OLD_PATH, + new_as_path=BLOB_NEW_PATH, + ) + + self.assertEqual(patch.patch, BLOB_PATCH_DELETED) + + def test_patch_create_blob_add(self): + blob = self.repo[self.repo.create_blob(BLOB_NEW_CONTENT)] + patch = pygit2.Patch.create_from( + None, + blob, + old_as_path=BLOB_OLD_PATH, + new_as_path=BLOB_NEW_PATH, + ) + + self.assertEqual(patch.patch, BLOB_PATCH_ADDED) + + def test_patch_multi_content(self): + patch_text = [] + patches = [] + for content in [BLOB_OLD_CONTENT, BLOB_NEW_CONTENT]*10: + patch = pygit2.Patch.create_from( + content, + None, + ) + + patch_text.append(patch.patch) + patches.append(patch) + + self.assertEqual(patch_text, [patch.patch for patch in patches]) + + def test_patch_multi_blob(self): + patch_text = [] + patches = [] + for sha in [BLOB_OLD_SHA, BLOB_NEW_SHA]*10: + blob = self.repo[sha] + patch = pygit2.Patch.create_from( + blob, + None + ) + + patch_text.append(patch.patch) + patches.append(patch) + + self.assertEqual(patch_text, [patch.patch for patch in patches]) From d463fd7151b6d839afbd49628b7b923d7a958591 Mon Sep 17 00:00:00 2001 From: Brandon Milton Date: Sat, 9 Dec 2017 12:13:36 -0800 Subject: [PATCH 2/3] Make broken patch tests be less nebulous --- test/test_patch.py | 51 +++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/test/test_patch.py b/test/test_patch.py index 30011531d..29189a439 100644 --- a/test/test_patch.py +++ b/test/test_patch.py @@ -201,31 +201,36 @@ def test_patch_create_blob_add(self): self.assertEqual(patch.patch, BLOB_PATCH_ADDED) - def test_patch_multi_content(self): - patch_text = [] - patches = [] - for content in [BLOB_OLD_CONTENT, BLOB_NEW_CONTENT]*10: - patch = pygit2.Patch.create_from( - content, - None, - ) - - patch_text.append(patch.patch) - patches.append(patch) + def test_patch_delete_blob(self): + blob = self.repo[BLOB_OLD_SHA] + patch = pygit2.Patch.create_from( + blob, + None, + old_as_path=BLOB_OLD_PATH, + new_as_path=BLOB_NEW_PATH, + ) - self.assertEqual(patch_text, [patch.patch for patch in patches]) + # Make sure that even after deleting the blob the patch still has the + # necessary references to generate its patch + del blob + self.assertEqual(patch.patch, BLOB_PATCH_DELETED) def test_patch_multi_blob(self): - patch_text = [] - patches = [] - for sha in [BLOB_OLD_SHA, BLOB_NEW_SHA]*10: - blob = self.repo[sha] - patch = pygit2.Patch.create_from( - blob, - None - ) + blob = self.repo[BLOB_OLD_SHA] + patch = pygit2.Patch.create_from( + blob, + None + ) + patch_text = patch.patch - patch_text.append(patch.patch) - patches.append(patch) + blob = self.repo[BLOB_OLD_SHA] + patch2 = pygit2.Patch.create_from( + blob, + None + ) + patch_text2 = patch.patch - self.assertEqual(patch_text, [patch.patch for patch in patches]) + self.assertEqual(patch_text, patch_text2) + self.assertEqual(patch_text, patch.patch) + self.assertEqual(patch_text2, patch2.patch) + self.assertEqual(patch.patch, patch2.patch) From 83fdde770b72b836cc7ae1490803464f74bf9d3d Mon Sep 17 00:00:00 2001 From: Brandon Milton Date: Sat, 9 Dec 2017 12:51:09 -0800 Subject: [PATCH 3/3] Add similar blob test --- test/test_blob.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/test_blob.py b/test/test_blob.py index 21c9cb963..a97746edc 100644 --- a/test/test_blob.py +++ b/test/test_blob.py @@ -188,5 +188,17 @@ def test_diff_blob_create(self): patch = old.diff(new) self.assertEqual(patch.patch, BLOB_PATCH_2) + def test_blob_from_repo(self): + blob = self.repo[BLOB_SHA] + patch_one = blob.diff_to_buffer(None) + + blob = self.repo[BLOB_SHA] + patch_two = blob.diff_to_buffer(None) + + self.assertEqual( + patch_one.patch, + patch_two.patch, + ) + if __name__ == '__main__': unittest.main()