Example #1
0
    def testIncrementalParser(self):
        """Verify that the parser is effectively incremental"""

        log = self.getDarcsOutput('darcs-all_actions_test')

        csets = list(changesets_from_darcschanges(log, chunksize=100))
        self.assertEqual(len(csets), 4)
Example #2
0
    def testIncrementalParser(self):
        """Verify that the parser is effectively incremental"""

        log = self.getDarcsOutput('darcs-all_actions_test')

        csets = list(changesets_from_darcschanges(log, chunksize=100))
        self.assertEqual(len(csets), 4)
Example #3
0
    def testRenameAndAdd(self):
        """Verify that the parser reduce rename A B+add B to rename A B"""

        log = self.getDarcsOutput('darcs-rename_and_add_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 5)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'Autoconf.lhs.in')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'Makefile')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'autoconf.mk.in')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        entry = cset.entries[3]
        self.assertEqual(entry.name, 'configure.in')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        entry = cset.entries[4]
        self.assertEqual(entry.name, 'darcs_cgi.lhs')
        self.assertEqual(entry.action_kind, entry.UPDATED)
Example #4
0
    def testAddRenameEdit(self):
        "Verify if the parser degrades (rename A B)+(add A)+(edit B) to (rename A B)+(edit B)"

        log = self.getDarcsOutput('darcs-rename_add_edit_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 5)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'vcpx/repository/git')
        self.assertEqual(entry.is_directory, True)
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'vcpx/repository/git/target.py')
        self.assertEqual(entry.old_name, 'vcpx/repository/git.py')
        self.assertEqual(entry.action_kind, entry.RENAMED)

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'vcpx/repository/git/__init__.py')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[3]
        self.assertEqual(entry.name, 'vcpx/repository/git/source.py')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[4]
        self.assertEqual(entry.name, 'vcpx/repository/git/target.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)
Example #5
0
    def testRenameAndAdd(self):
        """Verify that the parser reduce rename A B+add B to rename A B"""

        log = self.getDarcsOutput('darcs-rename_and_add_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 5)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'Autoconf.lhs.in')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'Makefile')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'autoconf.mk.in')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        entry = cset.entries[3]
        self.assertEqual(entry.name, 'configure.in')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        entry = cset.entries[4]
        self.assertEqual(entry.name, 'darcs_cgi.lhs')
        self.assertEqual(entry.action_kind, entry.UPDATED)
Example #6
0
    def testAddRenameEdit(self):
        "Verify if the parser degrades (rename A B)+(add A)+(edit B) to (rename A B)+(edit B)"

        log = self.getDarcsOutput('darcs-rename_add_edit_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 5)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'vcpx/repository/git')
        self.assertEqual(entry.is_directory, True)
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'vcpx/repository/git/target.py')
        self.assertEqual(entry.old_name, 'vcpx/repository/git.py')
        self.assertEqual(entry.action_kind, entry.RENAMED)

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'vcpx/repository/git/__init__.py')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[3]
        self.assertEqual(entry.name, 'vcpx/repository/git/source.py')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[4]
        self.assertEqual(entry.name, 'vcpx/repository/git/target.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)
Example #7
0
    def testAddAndRename(self):
        "Verify if the parser degrades (add A)+(rename A B) to (add B)"

        log = self.getDarcsOutput('darcs-add_then_rename_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'vcpx/repository/git/__init__.py')
        self.assertEqual(entry.action_kind, entry.ADDED)

        log = self.getDarcsOutput('darcs-mixed_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual([], [e for e in cset.entries if e.name == 'ancillary/mbox2rpc.py'])
        self.assertEqual([], [e for e in cset.entries if e.action_kind == e.RENAMED])
Example #8
0
    def testAddAndRemove(self):
        "Verify if the parser annihilate (add A)+(remove A)"

        log = self.getDarcsOutput('darcs-add_then_remove_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()

        self.assertEqual([], [e for e in cset.entries
                              if e.name == 'Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz'])
Example #9
0
    def testAllActions(self):
        """Verify darcs changes parser understand all actions"""

        log = self.getDarcsOutput('darcs-all_actions_test')

        csets = list(changesets_from_darcschanges(log))

        self.assertEqual(len(csets), 4)

        cset = csets[0]
        self.assertEqual(cset.revision, 'first')
        self.assertEqual(len(cset.entries), 2)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'a.txt')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, False)

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, True)

        cset = csets[1]
        self.assertEqual(cset.revision, 'removed')
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.DELETED)
        self.assertEqual(entry.is_directory, True)

        cset = csets[2]
        self.assertEqual(cset.revision, 'moved')
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, True)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, True)

        cset = csets[3]
        self.assertEqual(cset.revision, 'modified')
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'a.txt')
        self.assertEqual(entry.action_kind, entry.UPDATED)
        self.assertEqual(entry.is_directory, False)
Example #10
0
    def testAddAndRename(self):
        "Verify if the parser degrades (add A)+(rename A B) to (add B)"

        log = self.getDarcsOutput('darcs-add_then_rename_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'vcpx/repository/git/__init__.py')
        self.assertEqual(entry.action_kind, entry.ADDED)

        log = self.getDarcsOutput('darcs-mixed_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(
            [], [e for e in cset.entries if e.name == 'ancillary/mbox2rpc.py'])
        self.assertEqual(
            [], [e for e in cset.entries if e.action_kind == e.RENAMED])
Example #11
0
    def testAllActions(self):
        """Verify darcs changes parser understand all actions"""

        log = self.getDarcsOutput('darcs-all_actions_test')

        csets = list(changesets_from_darcschanges(log))

        self.assertEqual(len(csets), 4)

        cset = csets[0]
        self.assertEqual(cset.revision, 'first')
        self.assertEqual(len(cset.entries), 2)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'a.txt')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, False)

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, True)

        cset = csets[1]
        self.assertEqual(cset.revision, 'removed')
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.DELETED)
        self.assertEqual(entry.is_directory, True)

        cset = csets[2]
        self.assertEqual(cset.revision, 'moved')
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, True)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'dir')
        self.assertEqual(entry.action_kind, entry.ADDED)
        self.assertEqual(entry.is_directory, True)

        cset = csets[3]
        self.assertEqual(cset.revision, 'modified')
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'a.txt')
        self.assertEqual(entry.action_kind, entry.UPDATED)
        self.assertEqual(entry.is_directory, False)
Example #12
0
    def testOldDateFormat(self):
        """Verify that the parser understands date format used by old darcs"""

        log = self.getDarcsOutput('darcs-old_date_format_test')

        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(cset.date, datetime(2003, 10, 14, 9, 42, 0, 0, UTC))

        cset = csets.next()
        self.assertEqual(cset.date, datetime(2003, 10, 14, 14, 2, 31, 0, UTC))
Example #13
0
    def testAddAndRemove(self):
        "Verify if the parser annihilate (add A)+(remove A)"

        log = self.getDarcsOutput('darcs-add_then_remove_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()

        self.assertEqual([], [
            e for e in cset.entries if e.name ==
            'Carpet/CarpetWeb/binaries/darcs-1.0.3-static-linux-i386.gz'
        ])
Example #14
0
    def testRenameAndRemove(self):
        """Verify that the parser degrades rename A B+remove B to remove A"""

        log = self.getDarcsOutput('darcs-rename_then_remove_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'fileA')
        self.assertEqual(entry.action_kind, entry.DELETED)
Example #15
0
    def testOldDateFormat(self):
        """Verify that the parser understands date format used by old darcs"""

        log = self.getDarcsOutput('darcs-old_date_format_test')

        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(cset.date, datetime(2003, 10, 14, 9, 42, 0, 0, UTC))

        cset = csets.next()
        self.assertEqual(cset.date, datetime(2003, 10, 14, 14, 2, 31, 0, UTC))
Example #16
0
    def testRenameAndRemove(self):
        """Verify that the parser degrades rename A B+remove B to remove A"""

        log = self.getDarcsOutput('darcs-rename_then_remove_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 1)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'fileA')
        self.assertEqual(entry.action_kind, entry.DELETED)
Example #17
0
    def testOnTailorOwnRepo(self):
        """Verify fetching unidiff of a darcs patch"""

        from os import getcwd

        patchname = 'more detailed diags on SAXException'
        changes = ExternalCommand(command=["darcs", "changes", "--xml", "--summary",
                                           "--patches", patchname])
        csets = changesets_from_darcschanges(changes.execute(stdout=PIPE, TZ='UTC')[0],
                                             unidiff=True,
                                             repodir=getcwd())
        unidiff = csets.next().unidiff
        head = unidiff.split('\n')[0]
        self.assertEqual(head, 'Thu Jun  9 20:17:11 UTC 2005  [email protected]')
Example #18
0
    def testBadOrderedXML(self):
        "Verify if the parser is able to correct the bad order produced by changes --xml"

        log = self.getDarcsOutput('darcs-bad_xml_order_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()

        # Verify that each renamed entry is not within a directory added or renamed
        # by a following hunk
        for i,e in enumerate(cset.entries):
            if e.action_kind == e.RENAMED:
                postadds = [n.name for n in cset.entries[i+1:]
                            if ((e.name.startswith(n.name+'/') or (e.old_name==n.name)) and
                                (n.action_kind==n.ADDED or n.action_kind==n.RENAMED))]
                self.assertEqual(postadds, [])
Example #19
0
    def testOnTailorOwnRepo(self):
        """Verify fetching unidiff of a darcs patch"""

        from os import getcwd

        patchname = 'more detailed diags on SAXException'
        changes = ExternalCommand(command=[
            "darcs", "changes", "--xml", "--summary", "--patches", patchname
        ])
        csets = changesets_from_darcschanges(changes.execute(stdout=PIPE,
                                                             TZ='UTC')[0],
                                             unidiff=True,
                                             repodir=getcwd())
        unidiff = csets.next().unidiff
        head = unidiff.split('\n')[0]
        self.assertEqual(head, 'Thu Jun  9 20:17:11 UTC 2005  [email protected]')
Example #20
0
    def testBadOrderedXML(self):
        "Verify if the parser is able to correct the bad order produced by changes --xml"

        log = self.getDarcsOutput('darcs-bad_xml_order_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()

        # Verify that each renamed entry is not within a directory added or renamed
        # by a following hunk
        for i, e in enumerate(cset.entries):
            if e.action_kind == e.RENAMED:
                postadds = [
                    n.name for n in cset.entries[i + 1:] if
                    ((e.name.startswith(n.name +
                                        '/') or (e.old_name == n.name)) and
                     (n.action_kind == n.ADDED or n.action_kind == n.RENAMED))
                ]
                self.assertEqual(postadds, [])
Example #21
0
    def testRenameAndAddDir(self):
        """Verify that the parser reduce rename A B+add B to rename A B"""

        log = self.getDarcsOutput('darcs-rename_and_add_dir_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 7)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'logos/plain_logo.png')
        self.assertEqual(entry.action_kind, entry.RENAMED)
        self.assertEqual(entry.old_name, 'logo.png')

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'logos')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'logos/large_logo.png')
        self.assertEqual(entry.action_kind, entry.ADDED)
Example #22
0
    def testRenameAndAddDir(self):
        """Verify that the parser reduce rename A B+add B to rename A B"""

        log = self.getDarcsOutput('darcs-rename_and_add_dir_test')
        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(len(cset.entries), 7)

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'logos/plain_logo.png')
        self.assertEqual(entry.action_kind, entry.RENAMED)
        self.assertEqual(entry.old_name, 'logo.png')

        entry = cset.entries[1]
        self.assertEqual(entry.name, 'logos')
        self.assertEqual(entry.action_kind, entry.ADDED)

        entry = cset.entries[2]
        self.assertEqual(entry.name, 'logos/large_logo.png')
        self.assertEqual(entry.action_kind, entry.ADDED)
Example #23
0
    def testBasicBehaviour(self):
        """Verify basic darcs changes parser behaviour"""

        log = self.getDarcsOutput('darcs-simple_test')

        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(cset.revision,
                         "Fix the CVS parser to omit already seen changesets")
        self.assertEqual(cset.author, "*****@*****.**")
        self.assertEqual(cset.date, datetime(2004, 7, 16, 12, 37, 37, 0, UTC))
        self.assertEqual(cset.log, "For some unknown reasons....")
        entry = cset.entries[0]
        self.assertEqual(entry.name, 'vcpx/cvs.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        cset = csets.next()
        self.assertEqual(cset.revision,
                         "Svn log parser with test")
        self.assertEqual(cset.date, datetime(2004, 6, 1, 14, 5, 59, 0, UTC))
        self.assertEqual(len(cset.entries), 4)
        self.assertEqual(cset.darcs_hash,
                         '20040601140559-97f81-b669594864cb35290fbe4848e6645e73057a8caf.gz')

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'cvsync/svn.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)
        entry = cset.entries[1]
        self.assertEqual(entry.name, 'cvsync/tests/__init__.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)
        entry = cset.entries[2]
        self.assertEqual(entry.name, 'cvsync/tests/svn.py')
        self.assertEqual(entry.action_kind, entry.ADDED)
        entry = cset.entries[3]
        self.assertEqual(entry.name, 'cvsync/tests/testrepo.dump')
        self.assertEqual(entry.action_kind, entry.ADDED)
Example #24
0
    def testBasicBehaviour(self):
        """Verify basic darcs changes parser behaviour"""

        log = self.getDarcsOutput('darcs-simple_test')

        csets = changesets_from_darcschanges(log)

        cset = csets.next()
        self.assertEqual(cset.revision,
                         "Fix the CVS parser to omit already seen changesets")
        self.assertEqual(cset.author, "*****@*****.**")
        self.assertEqual(cset.date, datetime(2004, 7, 16, 12, 37, 37, 0, UTC))
        self.assertEqual(cset.log, "For some unknown reasons....")
        entry = cset.entries[0]
        self.assertEqual(entry.name, 'vcpx/cvs.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)

        cset = csets.next()
        self.assertEqual(cset.revision, "Svn log parser with test")
        self.assertEqual(cset.date, datetime(2004, 6, 1, 14, 5, 59, 0, UTC))
        self.assertEqual(len(cset.entries), 4)
        self.assertEqual(
            cset.darcs_hash,
            '20040601140559-97f81-b669594864cb35290fbe4848e6645e73057a8caf.gz')

        entry = cset.entries[0]
        self.assertEqual(entry.name, 'cvsync/svn.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)
        entry = cset.entries[1]
        self.assertEqual(entry.name, 'cvsync/tests/__init__.py')
        self.assertEqual(entry.action_kind, entry.UPDATED)
        entry = cset.entries[2]
        self.assertEqual(entry.name, 'cvsync/tests/svn.py')
        self.assertEqual(entry.action_kind, entry.ADDED)
        entry = cset.entries[3]
        self.assertEqual(entry.name, 'cvsync/tests/testrepo.dump')
        self.assertEqual(entry.action_kind, entry.ADDED)