def test_set_as_binary(): change = Diff.Change("x") change.set_as_binary( a_body=b"a", a_mime="pdf/", b_body=b"b", b_mime="pdf/", ) assert change.binary assert change.uploads == [ {"type": "old", "value": b"a", "mime": "pdf/", "phid": None}, {"type": "new", "value": b"b", "mime": "pdf/", "phid": None}, ] assert change.file_type.name == "BINARY" change = Diff.Change("x") change.set_as_binary( a_body=b"a", a_mime="image/jpeg", b_body=b"b", b_mime="pdf/", ) assert change.file_type.name == "IMAGE" change = Diff.Change("x") change.set_as_binary( a_body=b"a", a_mime="image/jpeg", b_body=b"b", b_mime="pdf/", ) assert change.file_type.name == "IMAGE"
def test_change_del(m_set_as_binary, m_get_file_meta, hg): change = Diff.Change("x") m_get_file_meta.return_value = dict( binary=False, bin_body=b"abc\n", body="abc\n", file_size=123, ) hg._change_del(change, "fn", None, "parent", "node") assert len(change.hunks) == 1 assert_attributes( change.hunks[0], dict( corpus="-abc\n", old_off=1, new_off=0, old_len=1, new_len=0, ), ) m_set_as_binary.assert_not_called() # binary change = Diff.Change("x") m_set_as_binary.reset_mock() m_get_file_meta.return_value = dict( binary=True, bin_body=b"abc\n", body="abc\n", file_size=123, mime="MIME", ) hg._change_del(change, "fn", None, "parent", "node") assert not change.hunks m_set_as_binary.assert_called_once_with( a_body=b"abc\n", a_mime="MIME", b_body="", b_mime="", ) # empty change = Diff.Change("x") m_set_as_binary.reset_mock() m_get_file_meta.return_value = dict( binary=False, bin_body=b"", body="", file_size=0, ) hg._change_del(change, "fn", None, "parent", "node") assert not change.hunks m_set_as_binary.assert_not_called()
def test_multiple_hunks(): git_diff = textwrap.dedent(""" diff --git a/fn b/fn --- a/fn +++ b/fn @@ -4,3 +4,2 @@ c d -e f @@ -11,3 +10,2 @@ j k -l m @@ -25,2 +21,1 @@ x y -z """) change = Diff.Change("x") change.from_git_diff(git_diff) assert len(change.hunks) == 3 assert_attributes( change.hunks[0], dict( old_off=4, old_len=3, new_off=4, new_len=2, old_eof_newline=True, new_eof_newline=True, added=0, deleted=1, corpus="d\n-e\nf\n", ), ) assert_attributes( change.hunks[1], dict( old_off=11, old_len=3, new_off=10, new_len=2, old_eof_newline=True, new_eof_newline=True, added=0, deleted=1, corpus="k\n-l\nm\n", ), ) assert_attributes( change.hunks[2], dict( old_off=25, old_len=2, new_off=21, new_len=1, old_eof_newline=True, new_eof_newline=True, added=0, deleted=1, corpus="y\n-z\n", ), )