Ejemplo n.º 1
0
    def test_line_counts(self):
        """Testing DiffParser with insert/delete line counts"""
        diff = (b'+ This is some line before the change\n'
                b'- And another line\n'
                b'Index: foo\n'
                b'- One last.\n'
                b'--- README  123\n'
                b'+++ README  (new)\n'
                b'@@ -1,1 +1,1 @@\n'
                b'-blah blah\n'
                b'-blah\n'
                b'+blah!\n'
                b'-blah...\n'
                b'+blah?\n'
                b'-blah!\n'
                b'+blah?!\n')

        parsed_files = DiffParser(diff).parse()
        self.assertEqual(len(parsed_files), 1)

        self.assert_parsed_diff_file(parsed_files[0],
                                     orig_filename=b'README',
                                     orig_file_details=b'123',
                                     modified_filename=b'README',
                                     modified_file_details=b'(new)',
                                     insert_count=3,
                                     delete_count=4,
                                     data=diff)
    def test_form_feed(self):
        """Testing DiffParser with a form feed in the file"""
        data = (b'--- README  123\n'
                b'+++ README  (new)\n'
                b'@@ -1,4 +1,6 @@\n'
                b' Line 1\n'
                b' Line 2\n'
                b'+\x0c\n'
                b'+Inserted line\n'
                b' Line 3\n'
                b' Line 4\n')
        files = DiffParser(data).parse()

        self.assertEqual(len(files), 1)
        self.assertEqual(files[0].insert_count, 2)
        self.assertEqual(files[0].delete_count, 0)
        self.assertEqual(files[0].data, data)
Ejemplo n.º 3
0
    def get_parser(self, data):
        """Return a diff parser used to parse diff data.

        The diff parser will be responsible for parsing the contents of the
        diff, and should expect (but validate) that the diff content is
        appropriate for the type of repository.

        Subclasses should override this.

        Args:
            data (bytes):
                The diff data to parse.

        Returns:
            reviewboard.diffviewer.diffparser.BaseDiffParser:
            The diff parser used to parse this data.
        """
        # Avoids a circular import.
        from reviewboard.diffviewer.parser import DiffParser

        return DiffParser(data)
    def test_line_counts(self):
        """Testing DiffParser with insert/delete line counts"""
        diff = (b'+ This is some line before the change\n'
                b'- And another line\n'
                b'Index: foo\n'
                b'- One last.\n'
                b'--- README  123\n'
                b'+++ README  (new)\n'
                b'@@ -1,1 +1,1 @@\n'
                b'-blah blah\n'
                b'-blah\n'
                b'+blah!\n'
                b'-blah...\n'
                b'+blah?\n'
                b'-blah!\n'
                b'+blah?!\n')
        files = DiffParser(diff).parse()

        self.assertEqual(len(files), 1)
        self.assertEqual(files[0].insert_count, 3)
        self.assertEqual(files[0].delete_count, 4)
Ejemplo n.º 5
0
    def test_form_feed(self):
        """Testing DiffParser with a form feed in the file"""
        diff = (b'--- README  123\n'
                b'+++ README  (new)\n'
                b'@@ -1,4 +1,6 @@\n'
                b' Line 1\n'
                b' Line 2\n'
                b'+\x0c\n'
                b'+Inserted line\n'
                b' Line 3\n'
                b' Line 4\n')

        parsed_files = DiffParser(diff).parse()
        self.assertEqual(len(parsed_files), 1)

        self.assert_parsed_diff_file(parsed_files[0],
                                     orig_filename=b'README',
                                     orig_file_details=b'123',
                                     modified_filename=b'README',
                                     modified_file_details=b'(new)',
                                     insert_count=2,
                                     data=diff)
Ejemplo n.º 6
0
 def __init__(self, data):
     DiffParser.__init__(self, data)
Ejemplo n.º 7
0
 def __init__(self, data):
     DiffParser.__init__(self, data)
Ejemplo n.º 8
0
 def __init__(self, data, repo):
     DiffParser.__init__(self, data)
     self.regex_full = re.compile('^RCS file: %s/(.*),v$' % re.escape(repo))
Ejemplo n.º 9
0
 def __init__(self, data, repo):
     DiffParser.__init__(self, data)
     self.regex_full = re.compile('^RCS file: %s/(.*),v$' % re.escape(repo))
Ejemplo n.º 10
0
    def test_raw_diff_with_diffset(self):
        """Testing DiffParser.raw_diff with DiffSet"""
        repository = self.create_repository(tool_name='Test')
        diffset = self.create_diffset(repository=repository)

        self.create_diffcommit(
            diffset=diffset,
            commit_id='r1',
            parent_id='r0',
            diff_contents=(
                b'diff --git a/ABC b/ABC\n'
                b'index 94bdd3e..197009f 100644\n'
                b'--- ABC\n'
                b'+++ ABC\n'
                b'@@ -1,1 +1,1 @@\n'
                b'-line!\n'
                b'+line..\n'
            ))
        self.create_diffcommit(
            diffset=diffset,
            commit_id='r2',
            parent_id='r1',
            diff_contents=(
                b'diff --git a/README b/README\n'
                b'index 94bdd3e..197009f 100644\n'
                b'--- README\n'
                b'+++ README\n'
                b'@@ -1,1 +1,1 @@\n'
                b'-Hello, world!\n'
                b'+Hi, world!\n'
            ))
        self.create_diffcommit(
            diffset=diffset,
            commit_id='r4',
            parent_id='r3',
            diff_contents=(
                b'diff --git a/README b/README\n'
                b'index 197009f..87abad9 100644\n'
                b'--- README\n'
                b'+++ README\n'
                b'@@ -1,1 +1,1 @@\n'
                b'-Hi, world!\n'
                b'+Yo, world.\n'
            ))

        cumulative_diff = (
            b'diff --git a/ABC b/ABC\n'
            b'index 94bdd3e..197009f 100644\n'
            b'--- ABC\n'
            b'+++ ABC\n'
            b'@@ -1,1 +1,1 @@\n'
            b'-line!\n'
            b'+line..\n'
            b'diff --git a/README b/README\n'
            b'index 94bdd3e..87abad9 100644\n'
            b'--- README\n'
            b'+++ README\n'
            b'@@ -1,1 +1,1 @@\n'
            b'-Hello, world!\n'
            b'+Yo, world.\n'
        )

        diffset.finalize_commit_series(
            cumulative_diff=cumulative_diff,
            validation_info=None,
            validate=False,
            save=True)

        parser = DiffParser(b'')
        self.assertEqual(parser.raw_diff(diffset), cumulative_diff)