Mercurial > hg > mercurial-crew
view tests/test-bad-extension.t @ 26447:99e88320d665 stable
transplant: restore dirstate correctly at unexpected failure
Before this patch, transplant can't restore dirstate as expected at
failure other than one while patching. This causes:
- unexpected file status
- dirstate refers already rollback-ed parent
(only at failure of transplanting the 2nd or later revision)
To restore dirstate correctly also at unexpected failure, this patch
encloses scope of store lock and transaction by 'dirstateguard'.
This is temporary fixing for stable branch. See
DirstateTransactionPlan wiki page for detail about the future plan to
treat dirstate consistently around scope boundary of transaction.
https://mercurial.selenic.com/wiki/DirstateTransactionPlan
This patch also adds 'if lock' examination for safety
'lock.release()', because creating 'dirstateguard' object may fail
unexpectedly (e.g. IOError for saving dirstate).
BTW, in the test script, putting section header '[extensions]' into
'.hg/hgrc' is needed to fix incomplete disabling 'abort' extension at
4d1382fd96ff.
author | FUJIWARA Katsunori <foozy@lares.dti.ne.jp> |
---|---|
date | Thu, 30 Jul 2015 06:22:09 +0900 |
parents | de23a552fc23 |
children | f39953663cc9 |
line wrap: on
line source
$ echo 'raise Exception("bit bucket overflow")' > badext.py $ abspath=`pwd`/badext.py $ cat <<EOF >> $HGRCPATH > [extensions] > gpg = > hgext.gpg = > badext = $abspath > badext2 = > EOF $ hg -q help help *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow *** failed to import extension badext2: No module named badext2 hg help [-ec] [TOPIC] show help for a given topic or a help overview show traceback $ hg -q help help --traceback 2>&1 | grep -v '^ ' *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow Traceback (most recent call last): Exception: bit bucket overflow *** failed to import extension badext2: No module named badext2 Traceback (most recent call last): ImportError: No module named badext2 hg help [-ec] [TOPIC] show help for a given topic or a help overview show traceback for ImportError of hgext.name if debug is set (note that --debug option isn't applied yet when loading extensions) $ hg help help --traceback --config ui.debug=True 2>&1 \ > | grep -v '^ ' | head -n10 *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow Traceback (most recent call last): Exception: bit bucket overflow could not import hgext.badext2 (No module named badext2): trying badext2 Traceback (most recent call last): ImportError: No module named badext2 *** failed to import extension badext2: No module named badext2 Traceback (most recent call last): ImportError: No module named badext2 hg help [-ec] [TOPIC]