Ejemplo n.º 1
0
 def test_compare_same2(self):
     mode = "delete"
     content = "-    deleteme\n- and me!"
     lines = Pair(56, 55)
     dh1 = DiffHunk(mode, content, self.CONTEXT, lines)
     dh2 = DiffHunk(mode, content, self.CONTEXT, lines)
     expected = 0
     actual = dh1.compare(dh2)
     assert expected == actual
Ejemplo n.º 2
0
 def test_compare_same3(self):
     mode = "change"
     content = "- line removed\n+ line inserted"
     lines = Pair(1, 2)
     dh1 = DiffHunk(mode, content, self.CONTEXT, lines)
     dh2 = DiffHunk(mode, content, self.CONTEXT, lines)
     expected = 0
     actual = dh1.compare(dh2)
     assert expected == actual
Ejemplo n.º 3
0
 def test_compare_same1(self):
     mode = "insert"
     content = "+  I'm added"
     lines = Pair(34, 34)
     dh1 = DiffHunk(mode, content, self.CONTEXT, lines)
     dh2 = DiffHunk(mode, content, self.CONTEXT, lines)
     expected = 0
     actual = dh1.compare(dh2)
     assert expected == actual
Ejemplo n.º 4
0
 def test_compare_mode(self):
     mode1 = "change"
     mode2 = "insert"
     content = "+ line inserted"
     lines = Pair(1, 2)
     dh1 = DiffHunk(mode1, content, self.CONTEXT, lines)
     dh2 = DiffHunk(mode2, content, self.CONTEXT, lines)
     expected = 2
     actual = dh1.compare(dh2)
     assert expected == actual
Ejemplo n.º 5
0
 def test_compare_lines(self):
     mode = "change"
     content = "+ line inserted"
     lines1 = Pair(1, 2)
     lines2 = Pair(3, 4)
     dh1 = DiffHunk(mode, content, self.CONTEXT, lines1)
     dh2 = DiffHunk(mode, content, self.CONTEXT, lines2)
     expected = 1
     actual = dh1.compare(dh2)
     assert expected == actual
Ejemplo n.º 6
0
 def test_compare_context_and_content(self):
     mode = "change"
     content1 = "+ line inserted\n- line removed"
     content2 = "+ different line inserted\n- line removed"
     lines = Pair(1, 2)
     dh1 = DiffHunk(mode, content1, self.CONTEXT, lines)
     dh2 = DiffHunk(mode, content2, self.CONTEXT, lines)
     expected = 2
     actual = dh1.compare(dh2)
     assert expected == actual
Ejemplo n.º 7
0
    def _parse(self, input_lines):
        """
        Parses a string and translates it into a list of DiffHunk objects.

        Arguments
        ---------
        input_lines : list of str
            A list of strings containing a sequence of differences to parse.
            Must be in GNU unified diff format, defined at:
            https://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified

        Returns
        -------
        list
            A list of DiffHunk objects.

        """
        difflist = []
        hunk_content = ""
        mode = ""
        line1 = line2 = 0
        for diff_line in input_lines:
            if diff_line.startswith("---"):
                continue
            elif diff_line.startswith("+++"):
                continue
            elif diff_line.startswith("@@"):
                if mode:
                    hunk_obj = DiffHunk(
                        mode=mode,
                        content=hunk_content,
                        context=Pair(
                            first=self._firstcontext[line1],
                            second=self._secondcontext[line2],
                        ),
                        lines=Pair(first=line1, second=line2),
                    )
                    difflist.append(hunk_obj)

                # next hunk...
                mode, line1, line2 = self._translate_diff_syntax(diff_line)
                hunk_content = ""
            else:
                hunk_content += diff_line

        hunk_obj = DiffHunk(
            mode=mode,
            content=hunk_content,
            context=Pair(first=self._firstcontext[line1],
                         second=self._secondcontext[line2]),
            lines=Pair(first=line1, second=line2),
        )
        difflist.append(hunk_obj)

        return difflist
Ejemplo n.º 8
0
 def test_str_insert(self):
     context = Pair("file1:34", "file2:34")
     mode = "insert"
     content = "+  I'm added"
     lines = Pair(34, 34)
     expected = textwrap.dedent("""\
         insert in file1:34 vs file2:34:
         +  I'm added
     """)
     actual = str(DiffHunk(mode, content, context, lines))
     assert expected == actual
Ejemplo n.º 9
0
 def test_str_change(self):
     context = Pair("file1:1", "file2:2")
     mode = "change"
     content = "- line removed\n+ line inserted"
     lines = Pair(1, 2)
     expected = textwrap.dedent("""\
         change in file1:1 vs file2:2:
         - line removed
         + line inserted
     """)
     actual = str(DiffHunk(mode, content, context, lines))
     assert expected == actual
Ejemplo n.º 10
0
 def test_str_delete(self):
     context = Pair("file1:56", "file2:55")
     mode = "delete"
     content = "-    deleteme\n- and me!"
     lines = Pair(56, 55)
     expected = textwrap.dedent("""\
         delete in file1:56 vs file2:55:
         -    deleteme
         - and me!
     """)
     actual = str(DiffHunk(mode, content, context, lines))
     assert expected == actual