Mercurial > hg
view tests/test-bad-extension.t @ 39224:5e52b6da9c0c
tests: demonstrate a problem with renames on the p2 side of a conversion
I think this is related to the octopus merge being sloppy, and that's having a
cascading affect on the fixup merge. If this change is made on p1 (specifically
with the 'Added parent file' commit), the failure doesn't occur.
The file modification with the rename doesn't seem to be necessary, but it's
what's happening in a production repo where I first noticed, so I left it. This
is an example of the manifest divergence I'd been seeing, which wasn't fixed by
Yuya's recent changes. This is separate from the changelog divergence I was
also seeing[1]. Probably nobody cares about bzr anymore, but this will also
affect git, since the octopus fixup code is in the hg sink.
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-August/120473.html
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Mon, 20 Aug 2018 16:19:36 -0400 |
parents | f2e645dc6a67 |
children | 1a2bfc4d756a |
line wrap: on
line source
ensure that failing ui.atexit handlers report sensibly $ cat > $TESTTMP/bailatexit.py <<EOF > from mercurial import util > def bail(): > raise RuntimeError('ui.atexit handler exception') > > def extsetup(ui): > ui.atexit(bail) > EOF $ hg -q --config extensions.bailatexit=$TESTTMP/bailatexit.py \ > help help hg help [-ecks] [TOPIC] show help for a given topic or a help overview error in exit handlers: Traceback (most recent call last): File "*/mercurial/dispatch.py", line *, in _runexithandlers (glob) func(*args, **kwargs) File "$TESTTMP/bailatexit.py", line *, in bail (glob) raise RuntimeError('ui.atexit handler exception') RuntimeError: ui.atexit handler exception [255] $ rm $TESTTMP/bailatexit.py another bad extension $ echo 'raise Exception("bit bucket overflow")' > badext.py $ abspathexc=`pwd`/badext.py $ cat >baddocext.py <<EOF > """ > baddocext is bad > """ > EOF $ abspathdoc=`pwd`/baddocext.py $ cat <<EOF >> $HGRCPATH > [extensions] > gpg = > hgext.gpg = > badext = $abspathexc > baddocext = $abspathdoc > badext2 = > EOF $ hg -q help help 2>&1 |grep extension *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow *** failed to import extension badext2: No module named badext2 show traceback $ hg -q help help --traceback 2>&1 | egrep ' extension|^Exception|Traceback|ImportError' *** 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 names of extensions failed to load can be accessed via extensions.notloaded() $ cat <<EOF > showbadexts.py > from mercurial import commands, extensions, registrar > cmdtable = {} > command = registrar.command(cmdtable) > @command(b'showbadexts', norepo=True) > def showbadexts(ui, *pats, **opts): > ui.write('BADEXTS: %s\n' % ' '.join(sorted(extensions.notloaded()))) > EOF $ hg --config extensions.badexts=showbadexts.py showbadexts 2>&1 | grep '^BADEXTS' BADEXTS: badext badext2 #if no-extraextensions show traceback for ImportError of hgext.name if devel.debug.extensions is set $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ > | grep -v '^ ' \ > | egrep 'extension..[^p]|^Exception|Traceback|ImportError|not import' debug.extensions: loading extensions debug.extensions: - processing 5 entries debug.extensions: - loading extension: 'gpg' debug.extensions: > 'gpg' extension loaded in * (glob) debug.extensions: - validating extension tables: 'gpg' debug.extensions: - invoking registered callbacks: 'gpg' debug.extensions: > callbacks completed in * (glob) debug.extensions: - loading extension: 'badext' *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow Traceback (most recent call last): Exception: bit bucket overflow debug.extensions: - loading extension: 'baddocext' debug.extensions: > 'baddocext' extension loaded in * (glob) debug.extensions: - validating extension tables: 'baddocext' debug.extensions: - invoking registered callbacks: 'baddocext' debug.extensions: > callbacks completed in * (glob) debug.extensions: - loading extension: 'badext2' debug.extensions: - could not import hgext.badext2 (No module named badext2): trying hgext3rd.badext2 Traceback (most recent call last): ImportError: No module named *badext2 (glob) debug.extensions: - could not import hgext3rd.badext2 (No module named badext2): trying badext2 Traceback (most recent call last): ImportError: No module named *badext2 (glob) *** failed to import extension badext2: No module named badext2 Traceback (most recent call last): ImportError: No module named badext2 debug.extensions: > loaded 2 extensions, total time * (glob) debug.extensions: - loading configtable attributes debug.extensions: - executing uisetup hooks debug.extensions: - running uisetup for 'gpg' debug.extensions: > uisetup for 'gpg' took * (glob) debug.extensions: - running uisetup for 'baddocext' debug.extensions: > uisetup for 'baddocext' took * (glob) debug.extensions: - executing extsetup hooks debug.extensions: - running extsetup for 'gpg' debug.extensions: > extsetup for 'gpg' took * (glob) debug.extensions: - running extsetup for 'baddocext' debug.extensions: > extsetup for 'baddocext' took * (glob) debug.extensions: - executing remaining aftercallbacks debug.extensions: > remaining aftercallbacks completed in * (glob) debug.extensions: - loading extension registration objects debug.extensions: > extension registration object loading took * (glob) debug.extensions: extension loading complete #endif confirm that there's no crash when an extension's documentation is bad $ hg help --keyword baddocext *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow *** failed to import extension badext2: No module named badext2 Topics: extensions Using Additional Features