--- /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