view tests/testlib/crash_transaction_late.py @ 46157:021925827c60

copies-rust: record overwrite when merging When detecting fresh value (from current rev) overwriting older ones during merges, we also record this overwrite for to help potential future comparison. This does really have any performance effect right now, but it get use closer to be able to drop all `is_ancestors` when merging. Differential Revision: https://phab.mercurial-scm.org/D9499
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Wed, 02 Dec 2020 15:37:54 +0100
parents 01b0805534bb
children 21ac6aedd5e5
line wrap: on
line source

# 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