コード例 #1
0
    def test_diff_at_start(self):
        fixture_path = helper.fixture('diff-start.txt')
        parser = diffparse.DiffParser('foo bar/a', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1 +1,4 @@\n')
        self.assertEqual(hunks[-1].lines[-1], '+c\n')
        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')
コード例 #2
0
def test_diff():
    fixture_path = helper.fixture('diff.txt')
    parser = diffparse.DiffParser('cola/diffparse.py', core.read(fixture_path))
    hunks = parser.hunks

    assert len(hunks) == 3
    assert hunks[0].first_line_idx == 0
    assert len(hunks[0].lines) == 23
    assert hunks[0].lines[0] == '@@ -6,10 +6,21 @@ from cola import gitcmds\n'
    assert hunks[0].lines[1] == ' from cola import gitcfg\n'
    assert hunks[0].lines[2] == ' \n'
    assert hunks[0].lines[3] == ' \n'
    assert hunks[0].lines[4] == '+class DiffSource(object):\n'
    assert hunks[0].lines[-1] == (
        r"         self._header_start_re = re.compile('^@@ -(\d+)"
        r" \+(\d+),(\d+) @@.*')"
        '\n')
    assert hunks[1].first_line_idx == 23
    assert len(hunks[1].lines) == 18
    assert hunks[1].lines[
        0] == '@@ -29,13 +40,11 @@ class DiffParser(object):\n'
    assert hunks[1].lines[1] == '         self.diff_sel = []\n'
    assert hunks[1].lines[2] == '         self.selected = []\n'
    assert hunks[1].lines[3] == '         self.filename = filename\n'
    assert hunks[1].lines[4] == (
        '+        self.diff_source = diff_source or DiffSource()\n')
    assert hunks[1].lines[-1] == '         self.header = header\n'

    assert hunks[2].first_line_idx == 41
    assert len(hunks[2].lines) == 16
    assert hunks[2].lines[
        0] == '@@ -43,11 +52,10 @@ class DiffParser(object):\n'
    assert hunks[2].lines[-1] == (
        '         """Writes a new diff corresponding to the user\'s'
        ' selection."""\n')
コード例 #3
0
    def test_diff_file_removal(self):
        diff_text = """\
deleted file mode 100755
@@ -1,1 +0,0 @@
-#!/bin/sh
"""
        parser = diffparse.DiffParser('deleted.txt', diff_text)
        self.assertEqual(1, len(parser.hunks))

        # Selecting the first two lines generate no diff
        expect = None
        actual = parser.generate_patch(0, 1)
        self.assertEqual(expect, actual)

        # Selecting the last line should generate a line removal
        expect = """\
--- a/deleted.txt
+++ b/deleted.txt
@@ -1 +0,0 @@
-#!/bin/sh
"""
        actual = parser.generate_patch(1, 2)
        self.assertEqual(expect, actual)

        # All three lines should map to the same hunk diff
        actual = parser.generate_hunk_patch(0)
        self.assertEqual(expect, actual)

        actual = parser.generate_hunk_patch(1)
        self.assertEqual(expect, actual)

        actual = parser.generate_hunk_patch(2)
        self.assertEqual(expect, actual)
コード例 #4
0
    def test_diff_that_empties_file(self):
        fixture_path = helper.fixture('diff-empty.txt')
        parser = diffparse.DiffParser('filename', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1,2 +0,0 @@\n')
        self.assertEqual(hunks[-1].lines[-1], '-second\n')
        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',
        )
コード例 #5
0
    def test_diff(self):
        fixture_path = helper.fixture('diff.txt')
        parser = diffparse.DiffParser(
            'cola/diffparse.py', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(len(hunks), 3)
        self.assertEqual(hunks[0].first_line_idx, 0)
        self.assertEqual(len(hunks[0].lines), 23)
        self.assertEqual(
            hunks[0].lines[0],
            '@@ -6,10 +6,21 @@ from cola import gitcmds\n')
        self.assertEqual(
            hunks[0].lines[1],
            ' from cola import gitcfg\n')
        self.assertEqual(hunks[0].lines[2], ' \n')
        self.assertEqual(hunks[0].lines[3], ' \n')
        self.assertEqual(hunks[0].lines[4], '+class DiffSource(object):\n')
        self.assertEqual(
            hunks[0].lines[-1],
            r"         self._header_start_re = re.compile('^@@ -(\d+)"
            r" \+(\d+),(\d+) @@.*')"
            '\n')

        self.assertEqual(hunks[1].first_line_idx, 23)
        self.assertEqual(len(hunks[1].lines), 18)
        self.assertEqual(
            hunks[1].lines[0],
            '@@ -29,13 +40,11 @@ class DiffParser(object):\n')
        self.assertEqual(
            hunks[1].lines[1],
            '         self.diff_sel = []\n')
        self.assertEqual(
            hunks[1].lines[2],
            '         self.selected = []\n')
        self.assertEqual(
            hunks[1].lines[3],
            '         self.filename = filename\n')
        self.assertEqual(
            hunks[1].lines[4],
            '+        self.diff_source = diff_source or DiffSource()\n')
        self.assertEqual(
            hunks[1].lines[-1],
            '         self.header = header\n')

        self.assertEqual(hunks[2].first_line_idx, 41)
        self.assertEqual(len(hunks[2].lines), 16)
        self.assertEqual(
            hunks[2].lines[0],
            '@@ -43,11 +52,10 @@ class DiffParser(object):\n')
        self.assertEqual(
            hunks[2].lines[-1],
            '         """Writes a new diff corresponding to the user\'s'
            ' selection."""\n')
コード例 #6
0
def test_diff_at_end():
    fixture_path = helper.fixture('diff-end.txt')
    parser = diffparse.DiffParser('rijndael.js', core.read(fixture_path))
    hunks = parser.hunks

    assert hunks[0].lines[0] == '@@ -1,39 +1 @@\n'
    assert hunks[-1].lines[-1] == (
        "+module.exports = require('./build/Release/rijndael');\n")
    assert hunks[0].old_start == 1
    assert hunks[0].old_count == 39
    assert hunks[0].new_start == 1
    assert hunks[0].new_count == 1
コード例 #7
0
    def test_diff_at_end(self):
        fixture_path = helper.fixture('diff-end.txt')
        parser = diffparse.DiffParser('rijndael.js', core.read(fixture_path))
        hunks = parser.hunks

        self.assertEqual(hunks[0].lines[0], '@@ -1,39 +1 @@\n')
        self.assertEqual(
            hunks[-1].lines[-1],
            "+module.exports = require('./build/Release/rijndael');\n")
        self.assertEqual(hunks[0].old_start, 1)
        self.assertEqual(hunks[0].old_count, 39)
        self.assertEqual(hunks[0].new_start, 1)
        self.assertEqual(hunks[0].new_count, 1)
コード例 #8
0
def test_diff_that_empties_file():
    fixture_path = helper.fixture('diff-empty.txt')
    parser = diffparse.DiffParser('filename', core.read(fixture_path))
    hunks = parser.hunks

    assert hunks[0].lines[0] == '@@ -1,2 +0,0 @@\n'
    assert hunks[-1].lines[-1] == '-second\n'
    assert hunks[0].old_start == 1
    assert hunks[0].old_count == 2
    assert hunks[0].new_start == 0
    assert hunks[0].new_count == 0
    assert parser.generate_patch(1, 1) == ('--- a/filename\n'
                                           '+++ b/filename\n'
                                           '@@ -1,2 +1 @@\n'
                                           '-first\n'
                                           ' second\n')
    assert parser.generate_patch(0, 2) == ('--- a/filename\n'
                                           '+++ b/filename\n'
                                           '@@ -1,2 +0,0 @@\n'
                                           '-first\n'
                                           '-second\n')
コード例 #9
0
def test_diff_at_start():
    fixture_path = helper.fixture('diff-start.txt')
    parser = diffparse.DiffParser('foo bar/a', core.read(fixture_path))
    hunks = parser.hunks

    assert hunks[0].lines[0] == '@@ -1 +1,4 @@\n'
    assert hunks[-1].lines[-1] == '+c\n'
    assert hunks[0].old_start == 1
    assert hunks[0].old_count == 1
    assert hunks[0].new_start == 1
    assert hunks[0].new_count == 4
    assert 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')
    assert 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')