test-bad-extension.t
151 lines
| 6.3 KiB
| text/troff
|
Tads3Lexer
/ tests / test-bad-extension.t
|
r31957 | 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 | ||||
|
r11858 | $ echo 'raise Exception("bit bucket overflow")' > badext.py | ||
|
r28083 | $ abspathexc=`pwd`/badext.py | ||
$ cat >baddocext.py <<EOF | ||||
> """ | ||||
> baddocext is bad | ||||
> """ | ||||
> EOF | ||||
$ abspathdoc=`pwd`/baddocext.py | ||||
|
r11858 | |||
|
r23172 | $ cat <<EOF >> $HGRCPATH | ||
> [extensions] | ||||
> gpg = | ||||
> hgext.gpg = | ||||
|
r28083 | > badext = $abspathexc | ||
> baddocext = $abspathdoc | ||||
|
r23172 | > badext2 = | ||
> EOF | ||||
|
r11858 | |||
|
r26239 | $ hg -q help help 2>&1 |grep extension | ||
|
r12640 | *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow | ||
|
r40272 | *** failed to import extension badext2: No module named *badext2* (glob) | ||
|
r25364 | |||
show traceback | ||||
|
r40273 | $ hg -q help help --traceback 2>&1 | egrep ' extension|^Exception|Traceback|ImportError|ModuleNotFound' | ||
|
r25364 | *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow | ||
Traceback (most recent call last): | ||||
Exception: bit bucket overflow | ||||
|
r40272 | *** failed to import extension badext2: No module named *badext2* (glob) | ||
|
r25364 | Traceback (most recent call last): | ||
|
r40299 | ImportError: No module named badext2 (no-py3 !) | ||
ModuleNotFoundError: No module named 'hgext.badext2' (py3 !) | ||||
Traceback (most recent call last): (py3 !) | ||||
ModuleNotFoundError: No module named 'hgext3rd.badext2' (py3 !) | ||||
Traceback (most recent call last): (py3 !) | ||||
ModuleNotFoundError: No module named 'badext2' (py3 !) | ||||
|
r25364 | |||
|
r28155 | names of extensions failed to load can be accessed via extensions.notloaded() | ||
$ cat <<EOF > showbadexts.py | ||||
|
r32337 | > from mercurial import commands, extensions, registrar | ||
|
r28155 | > cmdtable = {} | ||
|
r32337 | > command = registrar.command(cmdtable) | ||
|
r33097 | > @command(b'showbadexts', norepo=True) | ||
|
r28155 | > def showbadexts(ui, *pats, **opts): | ||
|
r40222 | > ui.write(b'BADEXTS: %s\n' % b' '.join(sorted(extensions.notloaded()))) | ||
|
r28155 | > EOF | ||
$ hg --config extensions.badexts=showbadexts.py showbadexts 2>&1 | grep '^BADEXTS' | ||||
BADEXTS: badext badext2 | ||||
|
r39148 | #if no-extraextensions | ||
|
r38750 | show traceback for ImportError of hgext.name if devel.debug.extensions is set | ||
|
r25364 | |||
|
r38750 | $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \ | ||
|
r26239 | > | grep -v '^ ' \ | ||
|
r40273 | > | egrep 'extension..[^p]|^Exception|Traceback|ImportError|not import|ModuleNotFound' | ||
|
r38834 | 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' | ||||
|
r25364 | *** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow | ||
Traceback (most recent call last): | ||||
Exception: bit bucket overflow | ||||
|
r38834 | 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' | ||||
|
r40272 | debug.extensions: - could not import hgext.badext2 (No module named *badext2*): trying hgext3rd.badext2 (glob) | ||
|
r25364 | Traceback (most recent call last): | ||
|
r40299 | ImportError: No module named badext2 (no-py3 !) | ||
ModuleNotFoundError: No module named 'hgext.badext2' (py3 !) | ||||
|
r40272 | debug.extensions: - could not import hgext3rd.badext2 (No module named *badext2*): trying badext2 (glob) | ||
|
r28541 | Traceback (most recent call last): | ||
|
r40299 | ImportError: No module named badext2 (no-py3 !) | ||
ModuleNotFoundError: No module named 'hgext.badext2' (py3 !) | ||||
Traceback (most recent call last): (py3 !) | ||||
ModuleNotFoundError: No module named 'hgext3rd.badext2' (py3 !) | ||||
|
r40272 | *** failed to import extension badext2: No module named *badext2* (glob) | ||
|
r25364 | Traceback (most recent call last): | ||
|
r40299 | ModuleNotFoundError: No module named 'hgext.badext2' (py3 !) | ||
Traceback (most recent call last): (py3 !) | ||||
ModuleNotFoundError: No module named 'hgext3rd.badext2' (py3 !) | ||||
Traceback (most recent call last): (py3 !) | ||||
ModuleNotFoundError: No module named 'badext2' (py3 !) | ||||
ImportError: No module named badext2 (no-py3 !) | ||||
|
r38834 | 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) | ||||
|
r39544 | debug.extensions: > all uisetup took * (glob) | ||
|
r38834 | 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) | ||||
|
r39545 | debug.extensions: > all extsetup took * (glob) | ||
|
r38834 | 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) | ||||
|
r39547 | debug.extensions: > extension baddocext take a total of * to load (glob) | ||
debug.extensions: > extension gpg take a total of * to load (glob) | ||||
|
r38834 | debug.extensions: extension loading complete | ||
|
r39148 | #endif | ||
|
r28083 | |||
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 | ||||
|
r40272 | *** failed to import extension badext2: No module named *badext2* (glob) | ||
|
r28083 | Topics: | ||
extensions Using Additional Features | ||||