Mercurial > public > mercurial-scm > hg-stable
diff tests/testlib/crash_transaction_late.py @ 44638:01b0805534bb
nodemap: make sure on disk change get rolled back with the transaction
In case of errors, we need to rollback the change made to the persistent
nodemap.
Differential Revision: https://phab.mercurial-scm.org/D8191
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Fri, 28 Feb 2020 03:05:52 +0100 |
parents | |
children | 21ac6aedd5e5 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/testlib/crash_transaction_late.py Fri Feb 28 03:05:52 2020 +0100 @@ -0,0 +1,32 @@ +# 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