def test_get_inverted_patch_for_binary_modify(self): invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.MODIFY_BINARY_PATCH_TEXT_ADD_CHANGES, filename='img/file.png') self.assertEquals( self.MODIFY_BINARY_PATCH_TEXT_REMOVE_CHANGES, invert_git_patches.get_inverted_patch_text([], [], None, True))
def test_left_and_right_for_inverted_patch(self): headers = 'Index: testfile\ndiff --git a/testfile b/testfile\n' for original_status, (expected_left_filename, expected_right_filename) in (('M', ('a/testfile', 'b/testfile')), ('dummy_status', ('a/testfile', 'b/testfile')), ('D', ('/dev/null', 'b/testfile')), ('A', ('a/testfile', '/dev/null')), ('A +', ('a/testfile', '/dev/null'))): invert_git_patches = invert_patches.InvertGitPatches( patch_text=headers, filename='testfile') invert_git_patches._status = original_status (actual_left_filename, actual_right_filename) = ( invert_git_patches._get_left_and_right_for_inverted_patch()) self.assertEquals(expected_left_filename, actual_left_filename) self.assertEquals(expected_right_filename, actual_right_filename)
def test_get_inverted_patch_for_binary_rename_and_modify_with_new_mode( self): invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.RENAME_AND_MODIFY_BINARY_PATCH_TEXT_WITH_NEW_MODE, filename='img/file.png') self.assertEquals(self.DELETE_BINARY_PATCH_TEXT + '\n', invert_git_patches.get_inverted_patch_text([], []))
def test_get_patch_status(self): for patch_text, expected_status in ( # ASCII file patches. (self.ADD_PATCH_TEXT, 'A'), (self.ADD_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, 'A'), (self.DELETE_PATCH_TEXT, 'D'), (self.DELETE_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, 'D'), (self.MODIFY_PATCH_TEXT_ADD_CHANGES, 'M'), (self.CHMOD_PATCH_TEXT_ADD_CHANGES, 'M'), (self.COPY_AND_MODIFY_PATCH_TEXT_WITH_NEW_MODE, 'A +'), (self.COPY_AND_MODIFY_PATCH_TEXT_WITH_EXISTING_MODE, 'A +'), (self.RENAME_AND_MODIFY_PATCH_TEXT_WITH_NEW_MODE, 'A +'), (self.RENAME_AND_MODIFY_PATCH_TEXT_WITH_EXISTING_MODE, 'A +'), (self.RENAME_WITH_NO_CHANGES_PATCH_TEXT, 'A +'), (self.COPY_WITH_NO_CHANGES_PATCH_TEXT, 'A +'), # Binary file patches. (self.ADD_BINARY_PATCH_TEXT, 'A'), (self.ADD_BINARY_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, 'A'), (self.DELETE_BINARY_PATCH_TEXT, 'D'), (self.DELETE_BINARY_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, 'D'), (self.MODIFY_BINARY_PATCH_TEXT_ADD_CHANGES, 'M'), (self.MODIFY_BINARY_PATCH_TEXT_REMOVE_CHANGES, 'M'), (self.COPY_AND_MODIFY_BINARY_PATCH_TEXT_WITH_EXISTING_MODE, 'A +'), (self.COPY_AND_MODIFY_BINARY_PATCH_TEXT_WITH_NEW_MODE, 'A +'), (self.RENAME_AND_MODIFY_BINARY_PATCH_TEXT_WITH_EXISTING_MODE, 'A +'), (self.RENAME_AND_MODIFY_BINARY_PATCH_TEXT_WITH_NEW_MODE, 'A +'), (self.RENAME_WITH_NO_CHANGES_BINARY_PATCH_TEXT, 'A +'), (self.COPY_WITH_NO_CHANGES_BINARY_PATCH_TEXT, 'A +')): invert_git_patches = invert_patches.InvertGitPatches( patch_text, 'dummy_filename') self.assertEquals(expected_status, invert_git_patches.status)
def test_get_inverted_patch_for_binary_copy_and_modify_with_existing_mode( self): invert_git_patches = invert_patches.InvertGitPatches( patch_text=self. COPY_AND_MODIFY_BINARY_PATCH_TEXT_WITH_EXISTING_MODE, filename='img/file.png') self.assertEquals(self.DELETE_BINARY_PATCH_TEXT + '\n', invert_git_patches.get_inverted_patch_text([], []))
def test_get_inverted_patch_for_svn_failure(self): try: _ = invert_patches.InvertGitPatches(patch_text=self.SVN_PATCH_TEXT, filename='file100') self.fail('Expected failure due to unsupported SVN patch.') except AssertionError, e: # Expected. self.assertEquals('Not a Git patch', e.message)
def test_get_inverted_patch_for_chmod(self): lines = ['test\n', '\n', '\n', '\n'] patched_lines = ['test\n', '\n', '\n', '\n'] invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.CHMOD_PATCH_TEXT_ADD_CHANGES, filename='file100') self.assertEquals( self.CHMOD_PATCH_TEXT_REMOVE_CHANGES, invert_git_patches.get_inverted_patch_text(lines, patched_lines))
def test_get_inverted_patch_for_delete(self): lines = [] patched_lines = ['test\n', '\n', '\n'] invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.DELETE_PATCH_TEXT, filename='file100') self.assertEquals( self.ADD_PATCH_TEXT, invert_git_patches.get_inverted_patch_text(lines, patched_lines))
def test_get_inverted_patch_for_rename_and_modify_with_existing_mode(self): lines = ['test\n', '\n', '\n'] patched_lines = [] invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.RENAME_AND_MODIFY_PATCH_TEXT_WITH_EXISTING_MODE, filename='file100') self.assertEquals( self.DELETE_PATCH_TEXT, invert_git_patches.get_inverted_patch_text(lines, patched_lines))
def test_get_inverted_patch_for_copy_and_modify_with_new_mode(self): lines = ['test\n', '\n', '\n'] patched_lines = [] invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.COPY_AND_MODIFY_PATCH_TEXT_WITH_NEW_MODE, filename='file100') self.assertEquals( self.DELETE_PATCH_TEXT, invert_git_patches.get_inverted_patch_text(lines, patched_lines))
def test_get_inverted_patch_for_modify_with_nonewline(self): lines = ['test'] patched_lines = ['test1'] invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.MODIFY_PATCH_TEXT_ADD_CHANGES_NONEWLINE, filename='file100') self.assertEquals( self.MODIFY_PATCH_TEXT_MODIFY_CHANGES_NONEWLINE, invert_git_patches.get_inverted_patch_text(lines, patched_lines))
def test_inverted_patch_status(self): invert_git_patches = invert_patches.InvertGitPatches( self.ADD_PATCH_TEXT, 'dummy_filename') for original_status, expected_inverted_status in (('M', 'M'), ('dummy_status', 'M'), ('D', 'A'), ('A', 'D'), ('A +', 'D')): invert_git_patches._status = original_status self.assertEquals(expected_inverted_status, invert_git_patches.inverted_patch_status)
def test_get_inverted_patch_for_binary_rename_with_no_changes(self): file_data = 'test\n\n\n' invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.RENAME_WITH_NO_CHANGES_BINARY_PATCH_TEXT, filename='img/file.png') self.assertEquals(invert_patches.DELETED_STATUS, invert_git_patches.inverted_patch_status) self.assertEquals( self.DELETE_BINARY_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, invert_git_patches.get_inverted_patch_text([], [], file_data, True))
def test_get_inverted_patch_for_revert_copy_with_no_changes(self): lines = [] patched_lines = ['test\n', '\n', '\n'] invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.DELETE_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, filename='file100') self.assertEquals(invert_patches.ADDED_STATUS, invert_git_patches.inverted_patch_status) self.assertEquals( self.ADD_PATCH_TEXT_WITH_REAL_HASH_DEFAULT_MODE, invert_git_patches.get_inverted_patch_text(lines, patched_lines, ''.join(lines), False))
def test_get_inverted_patch_for_binary_delete(self): invert_git_patches = invert_patches.InvertGitPatches( patch_text=self.DELETE_BINARY_PATCH_TEXT, filename='img/file.png') self.assertEquals(self.ADD_BINARY_PATCH_TEXT, invert_git_patches.get_inverted_patch_text([], []))