208 |
208 |
209 Aborting transaction prevents fncache change |
209 Aborting transaction prevents fncache change |
210 |
210 |
211 $ cat > ../exceptionext.py <<EOF |
211 $ cat > ../exceptionext.py <<EOF |
212 > import os |
212 > import os |
213 > from mercurial import commands, util, transaction |
213 > from mercurial import commands, util, localrepo |
214 > from mercurial.extensions import wrapfunction |
214 > from mercurial.extensions import wrapfunction |
215 > |
215 > |
216 > def wrapper(orig, self, *args, **kwargs): |
216 > def wrapper(orig, self, *args, **kwargs): |
217 > origonclose = self.onclose |
217 > tr = orig(self, *args, **kwargs) |
218 > def onclose(): |
218 > def fail(tr): |
219 > origonclose() |
|
220 > raise util.Abort("forced transaction failure") |
219 > raise util.Abort("forced transaction failure") |
221 > self.onclose = onclose |
220 > # zzz prefix to ensure it sorted after store.write |
222 > return orig(self, *args, **kwargs) |
221 > tr.addfinalize('zzz-forcefails', fail) |
|
222 > return tr |
223 > |
223 > |
224 > def uisetup(ui): |
224 > def uisetup(ui): |
225 > wrapfunction(transaction.transaction, 'close', wrapper) |
225 > wrapfunction(localrepo.localrepository, 'transaction', wrapper) |
226 > |
226 > |
227 > cmdtable = {} |
227 > cmdtable = {} |
228 > |
228 > |
229 > EOF |
229 > EOF |
230 $ rm -f "${extpath}c" |
230 $ rm -f "${extpath}c" |