tests/testlib/crash_transaction_late.py
author Joerg Sonnenberger <joerg@bec.de>
Sat, 07 Nov 2020 19:24:12 +0100
changeset 45885 a6f08085edfe
parent 44638 01b0805534bb
child 48699 21ac6aedd5e5
permissions -rw-r--r--
transaction: rename find to findoffset and drop backup file support transaction.find used to support access to both the regular file and backup file list. They have different formats, so any consumer has to be aware of the difference alredy. There is no in-core consumer for the backup file access, so don't provide it. Differential Revision: https://phab.mercurial-scm.org/D9276

# tiny extension to abort a transaction very late during test
#
# Copyright 2020 Pierre-Yves David <pierre-yves.david@octobus.net>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.

from __future__ import absolute_import

from mercurial import (
    error,
    transaction,
)


def abort(fp):
    raise error.Abort(b"This is a late abort")


def reposetup(ui, repo):

    transaction.postfinalizegenerators.add(b'late-abort')

    class LateAbortRepo(repo.__class__):
        def transaction(self, *args, **kwargs):
            tr = super(LateAbortRepo, self).transaction(*args, **kwargs)
            tr.addfilegenerator(
                b'late-abort', [b'late-abort'], abort, order=9999999
            )
            return tr

    repo.__class__ = LateAbortRepo