def parse_unidiff(diff): """Unified diff parser, takes a file-like object as argument.""" ret = PatchSet() current_patch = None for line in diff: # check for source file header check_source = RE_SOURCE_FILENAME.match(line) if check_source: source_file = check_source.group("filename") current_patch = None continue # check for target file header check_target = RE_TARGET_FILENAME.match(line) if check_target: target_file = check_target.group("filename") current_patch = PatchedFile(source_file, target_file) ret.append(current_patch) continue # check for hunk header re_hunk_header = RE_HUNK_HEADER.match(line) if re_hunk_header: hunk_info = re_hunk_header.groups() hunk = _parse_hunk(diff, *hunk_info) current_patch.append(hunk) return ret
class TestPatchedFile(unittest2.TestCase): """Tests for PatchedFile.""" def setUp(self): self.patched_file = PatchedFile() def test_is_added_file(self): hunk = Hunk(src_start=0, src_len=0, tgt_start=1, tgt_len=10) self.patched_file.append(hunk) self.assertTrue(self.patched_file.is_added_file) def test_is_deleted_file(self): hunk = Hunk(src_start=1, src_len=10, tgt_start=0, tgt_len=0) self.patched_file.append(hunk) self.assertTrue(self.patched_file.is_deleted_file) def test_is_modified_file(self): hunk = Hunk(src_start=1, src_len=10, tgt_start=1, tgt_len=8) self.patched_file.append(hunk) self.assertTrue(self.patched_file.is_modified_file)
class TestPatchedFile(unittest.TestCase): """Tests for PatchedFile.""" def setUp(self): self.patched_file = PatchedFile() def test_is_added_file(self): hunk = Hunk(src_start=0, src_len=0, tgt_start=1, tgt_len=10) self.patched_file.append(hunk) self.assertTrue(self.patched_file.is_added_file) def test_is_deleted_file(self): hunk = Hunk(src_start=1, src_len=10, tgt_start=0, tgt_len=0) self.patched_file.append(hunk) self.assertTrue(self.patched_file.is_deleted_file) def test_is_modified_file(self): hunk = Hunk(src_start=1, src_len=10, tgt_start=1, tgt_len=8) self.patched_file.append(hunk) self.assertTrue(self.patched_file.is_modified_file)
def setUp(self): super(TestPatchedFile, self).setUp() self.patched_file = PatchedFile()
def setUp(self): self.patched_file = PatchedFile()