def test_diff_at_start(self): fixture_path = helper.fixture('diff-start.txt') parser = DiffParser('foo bar/a', core.read(fixture_path)) hunks = parser.hunks self.assertEqual(hunks[0].lines[0], '@@ -1 +1,4 @@') self.assertEqual(hunks[-1].lines[-1], '+c') self.assertEqual(hunks[0].old_start, 1) self.assertEqual(hunks[0].old_count, 1) self.assertEqual(hunks[0].new_start, 1) self.assertEqual(hunks[0].new_count, 4) self.assertEqual( parser.generate_patch(1, 3), '--- a/foo bar/a\n' '+++ b/foo bar/a\n' '@@ -1 +1,3 @@\n' ' bar\n' '+a\n' '+b\n') self.assertEqual( parser.generate_patch(0, 4), '--- a/foo bar/a\n' '+++ b/foo bar/a\n' '@@ -1 +1,4 @@\n' ' bar\n' '+a\n' '+b\n' '+c\n')
def test_diff_at_start(self): fixture_path = helper.fixture('diff-start.txt') parser = DiffParser('foo bar/a', core.read(fixture_path)) hunks = parser.hunks self.assertEqual(hunks[0].lines[0], '@@ -1 +1,4 @@') self.assertEqual(hunks[-1].lines[-1], '+c') self.assertEqual(hunks[0].old_start, 1) self.assertEqual(hunks[0].old_count, 1) self.assertEqual(hunks[0].new_start, 1) self.assertEqual(hunks[0].new_count, 4) self.assertEqual(parser.generate_patch(1, 3), '--- a/foo bar/a\n' '+++ b/foo bar/a\n' '@@ -1 +1,3 @@\n' ' bar\n' '+a\n' '+b\n') self.assertEqual(parser.generate_patch(0, 4), '--- a/foo bar/a\n' '+++ b/foo bar/a\n' '@@ -1 +1,4 @@\n' ' bar\n' '+a\n' '+b\n' '+c\n')
def test_diff_that_empties_file(self): fixture_path = helper.fixture('diff-empty.txt') parser = DiffParser('filename', core.read(fixture_path)) hunks = parser.hunks self.assertEqual(hunks[0].lines[0], '@@ -1,2 +0,0 @@') self.assertEqual(hunks[-1].lines[-1], '-second') self.assertEqual(hunks[0].old_start, 1) self.assertEqual(hunks[0].old_count, 2) self.assertEqual(hunks[0].new_start, 0) self.assertEqual(hunks[0].new_count, 0) self.assertEqual(parser.generate_patch(1, 1), '--- a/filename\n' '+++ b/filename\n' '@@ -1,2 +1 @@\n' '-first\n' ' second\n') self.assertEqual(parser.generate_patch(0, 2), '--- a/filename\n' '+++ b/filename\n' '@@ -1,2 +0,0 @@\n' '-first\n' '-second\n')
def test_diff_that_empties_file(self): fixture_path = helper.fixture('diff-empty.txt') parser = DiffParser('filename', core.read(fixture_path)) hunks = parser.hunks self.assertEqual(hunks[0].lines[0], '@@ -1,2 +0,0 @@') self.assertEqual(hunks[-1].lines[-1], '-second') self.assertEqual(hunks[0].old_start, 1) self.assertEqual(hunks[0].old_count, 2) self.assertEqual(hunks[0].new_start, 0) self.assertEqual(hunks[0].new_count, 0) self.assertEqual(parser.generate_patch(1, 1), '--- a/filename\n' '+++ b/filename\n' '@@ -1,2 +1 @@\n' '-first\n' ' second\n') self.assertEqual(parser.generate_patch(0, 2), '--- a/filename\n' '+++ b/filename\n' '@@ -1,2 +0,0 @@\n' '-first\n' '-second\n')
def do(self): parser = DiffParser(self.model.filename, self.model.diff_text) if self.has_selection: patch = parser.generate_patch(self.first_line_idx, self.last_line_idx, reverse=self.reverse) else: patch = parser.generate_hunk_patch(self.first_line_idx, reverse=self.reverse) if patch is None: return cfg = gitcfg.current() tmp_path = utils.tmp_filename('patch') try: core.write(tmp_path, patch, encoding=cfg.file_encoding(self.model.filename)) if self.apply_to_worktree: status, out, err = self.model.apply_diff_to_worktree(tmp_path) else: status, out, err = self.model.apply_diff(tmp_path) finally: os.unlink(tmp_path) Interaction.log_status(status, out, err) self.model.update_file_status(update_index=True)
def do(self): parser = DiffParser(self.model.filename, self.model.diff_text) if self.has_selection: patch = parser.generate_patch(self.first_line_idx, self.last_line_idx, reverse=self.reverse) else: patch = parser.generate_hunk_patch(self.first_line_idx, reverse=self.reverse) if patch is None: return cfg = gitcfg.current() tmp_path = utils.tmp_filename('patch') try: core.write(tmp_path, patch, encoding=cfg.file_encoding(self.model.filename)) if self.apply_to_worktree: status, out, err = self.model.apply_diff_to_worktree(tmp_path) else: status, out, err = self.model.apply_diff(tmp_path) finally: os.unlink(tmp_path) Interaction.log_status(status, out, err) self.model.update_file_status(update_index=True)