##// END OF EJS Templates
revlog: subclass the new `repository.iverifyproblem` Protocol class...
revlog: subclass the new `repository.iverifyproblem` Protocol class This is the same transformation as 3a90a6fd710d did for dirstate, but the CamelCase naming was already cleaned up here. We shouldn't have to explicitly subclass, but I'm doing so to test the interplay of regular attributes and the `attrs` class. Also, PyCharm has a nifty feature that puts a jump point in the gutter to navigate back and forth between the base class and subclasses (and override functions and base class functions) when there's an explicit subclassing. Additionally, PyCharm will immediately flag signature mismatches without a 40m pytype run.

File last commit:

r53326:a4889a91 default
r53365:4ef6dbc2 default
Show More
test-bad-extension.t
188 lines | 7.3 KiB | text/troff | Tads3Lexer
/ tests / test-bad-extension.t
Pulkit Goyal
tests: don't run couple of tests related to extensions loading with chg...
r45109 #require no-chg
Yuya Nishihara
extensions: use ui.log() interface to provide detailed loading information...
r41032 $ filterlog () {
> sed -e 's!^[0-9/]* [0-9:]* ([0-9]*)>!YYYY/MM/DD HH:MM:SS (PID)>!'
> }
Bryan O'Sullivan
atexit: test failing handlers
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
av6
commands: adjust metavariables as appropriate...
r40382 hg help [-eck] [-s PLATFORM] [TOPIC]
Bryan O'Sullivan
atexit: test failing handlers
r31957
show help for a given topic or a help overview
error in exit handlers:
Traceback (most recent call last):
pyoxidized: adapt output of test-bad-extension.t...
r48651 File "*/mercurial/dispatch.py", line *, in _runexithandlers (glob) (no-pyoxidizer !)
File "mercurial.dispatch", line *, in _runexithandlers (glob) (pyoxidizer !)
Bryan O'Sullivan
atexit: test failing handlers
r31957 func(*args, **kwargs)
Raphaël Gomès
py-3-13: fix traceback matching for the new Python version
r52982 ~~~~^^^^^^^^^^^^^^^^^ (py313 !)
Bryan O'Sullivan
atexit: test failing handlers
r31957 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
Martin Geisler
tests: unify test-bad-extension
r11858 $ echo 'raise Exception("bit bucket overflow")' > badext.py
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083 $ abspathexc=`pwd`/badext.py
$ cat >baddocext.py <<EOF
> """
> baddocext is bad
> """
> EOF
$ abspathdoc=`pwd`/baddocext.py
Martin Geisler
tests: unify test-bad-extension
r11858
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 $ cat <<EOF >> $HGRCPATH
> [extensions]
> gpg =
> hgext.gpg =
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083 > badext = $abspathexc
> baddocext = $abspathdoc
Yuya Nishihara
tests: write hgrc of more than two lines by using shell heredoc...
r23172 > badext2 =
> EOF
Martin Geisler
tests: unify test-bad-extension
r11858
timeless@mozdev.org
test-bad-extension: reduce dependencies on other things...
r26239 $ hg -q help help 2>&1 |grep extension
extensions: highlight the name of the faulty extensions in the error message...
r49183 *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 *** failed to import extension "badext2": No module named 'badext2'
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364
show traceback
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326 $ hg -q help help --traceback 2>&1 | "$PYTHON" "$TESTDIR/filtertraceback.py"
extensions: highlight the name of the faulty extensions in the error message...
r49183 *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 Traceback (most recent call last):
Exception: bit bucket overflow
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 *** failed to import extension "badext2": No module named 'badext2'
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext.badext2'
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326
During handling of the above exception, another exception occurred:
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext3rd.badext2'
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326
During handling of the above exception, another exception occurred:
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'badext2'
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326 hg help [-eck] [-s PLATFORM] [TOPIC]
show help for a given topic or a help overview
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 names of extensions failed to load can be accessed via extensions.notloaded()
$ cat <<EOF > showbadexts.py
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > from mercurial import commands, extensions, registrar
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 > cmdtable = {}
Yuya Nishihara
registrar: move cmdutil.command to registrar module (API)...
r32337 > command = registrar.command(cmdtable)
Pulkit Goyal
py3: make sure commands name are bytes in tests
r33097 > @command(b'showbadexts', norepo=True)
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 > def showbadexts(ui, *pats, **opts):
Augie Fackler
tests: fix up test-bad-extension.t's inline extension...
r40222 > ui.write(b'BADEXTS: %s\n' % b' '.join(sorted(extensions.notloaded())))
Jun Wu
extensions: add notloaded method to return extensions failed to load...
r28155 > EOF
$ hg --config extensions.badexts=showbadexts.py showbadexts 2>&1 | grep '^BADEXTS'
BADEXTS: badext badext2
Gregory Szorc
tests: conditionalize extension tests for extra extensions...
r39148 #if no-extraextensions
Boris Feld
debug: move extensions debug behind a dedicated flag...
r38750 show traceback for ImportError of hgext.name if devel.debug.extensions is set
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364
Boris Feld
debug: move extensions debug behind a dedicated flag...
r38750 $ (hg help help --traceback --debug --config devel.debug.extensions=yes 2>&1) \
timeless@mozdev.org
test-bad-extension: reduce dependencies on other things...
r26239 > | grep -v '^ ' \
Yuya Nishihara
extensions: use ui.log() interface to provide detailed loading information...
r41032 > | filterlog \
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326 > | "$PYTHON" "$TESTDIR/filtertraceback.py"
Yuya Nishihara
extensions: use ui.log() interface to provide detailed loading information...
r41032 YYYY/MM/DD HH:MM:SS (PID)> loading extensions
YYYY/MM/DD HH:MM:SS (PID)> - processing 5 entries
YYYY/MM/DD HH:MM:SS (PID)> - loading extension: gpg
YYYY/MM/DD HH:MM:SS (PID)> > gpg extension loaded in * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - validating extension tables: gpg
YYYY/MM/DD HH:MM:SS (PID)> - invoking registered callbacks: gpg
YYYY/MM/DD HH:MM:SS (PID)> > callbacks completed in * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - loading extension: badext
extensions: highlight the name of the faulty extensions in the error message...
r49183 *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 Traceback (most recent call last):
Exception: bit bucket overflow
Yuya Nishihara
extensions: use ui.log() interface to provide detailed loading information...
r41032 YYYY/MM/DD HH:MM:SS (PID)> - loading extension: baddocext
YYYY/MM/DD HH:MM:SS (PID)> > baddocext extension loaded in * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - validating extension tables: baddocext
YYYY/MM/DD HH:MM:SS (PID)> - invoking registered callbacks: baddocext
YYYY/MM/DD HH:MM:SS (PID)> > callbacks completed in * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - loading extension: badext2
YYYY/MM/DD HH:MM:SS (PID)> - could not import hgext.badext2 (No module named *badext2*): trying hgext3rd.badext2 (glob)
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext.badext2'
Yuya Nishihara
extensions: use ui.log() interface to provide detailed loading information...
r41032 YYYY/MM/DD HH:MM:SS (PID)> - could not import hgext3rd.badext2 (No module named *badext2*): trying badext2 (glob)
Pierre-Yves David
extensions: also search for extension in the 'hgext3rd' package...
r28541 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext.badext2'
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326
During handling of the above exception, another exception occurred:
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext3rd.badext2'
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 *** failed to import extension "badext2": No module named 'badext2'
Yuya Nishihara
extensions: show traceback on load failure if --traceback flag is set...
r25364 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext.badext2'
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326
During handling of the above exception, another exception occurred:
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'hgext3rd.badext2'
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326
During handling of the above exception, another exception occurred:
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 Traceback (most recent call last):
Matt Harbison
tests: drop py36 conditionals in test-bad-extension.t...
r51179 ModuleNotFoundError: No module named 'badext2'
Yuya Nishihara
extensions: use ui.log() interface to provide detailed loading information...
r41032 YYYY/MM/DD HH:MM:SS (PID)> > loaded 2 extensions, total time * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - loading configtable attributes
YYYY/MM/DD HH:MM:SS (PID)> - executing uisetup hooks
YYYY/MM/DD HH:MM:SS (PID)> - running uisetup for gpg
YYYY/MM/DD HH:MM:SS (PID)> > uisetup for gpg took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - running uisetup for baddocext
YYYY/MM/DD HH:MM:SS (PID)> > uisetup for baddocext took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> > all uisetup took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - executing extsetup hooks
YYYY/MM/DD HH:MM:SS (PID)> - running extsetup for gpg
YYYY/MM/DD HH:MM:SS (PID)> > extsetup for gpg took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - running extsetup for baddocext
YYYY/MM/DD HH:MM:SS (PID)> > extsetup for baddocext took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> > all extsetup took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - executing remaining aftercallbacks
YYYY/MM/DD HH:MM:SS (PID)> > remaining aftercallbacks completed in * (glob)
YYYY/MM/DD HH:MM:SS (PID)> - loading extension registration objects
YYYY/MM/DD HH:MM:SS (PID)> > extension registration object loading took * (glob)
YYYY/MM/DD HH:MM:SS (PID)> > extension baddocext take a total of * to load (glob)
YYYY/MM/DD HH:MM:SS (PID)> > extension gpg take a total of * to load (glob)
YYYY/MM/DD HH:MM:SS (PID)> extension loading complete
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326 hg help [-eck] [-s PLATFORM] [TOPIC]
show help for a given topic or a help overview
With no arguments, print a list of commands with short help messages.
branching: merge stable into default
r52993 Given a topic, extension, or command name, print help for that topic.
Matt Harbison
tests: replace ersatz Traceback filtering with test utility...
r53326
Returns 0 if successful.
options ([+] can be repeated):
global options ([+] can be repeated):
Gregory Szorc
tests: conditionalize extension tests for extra extensions...
r39148 #endif
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083
confirm that there's no crash when an extension's documentation is bad
$ hg help --keyword baddocext
extensions: highlight the name of the faulty extensions in the error message...
r49183 *** failed to import extension "badext" from $TESTTMP/badext.py: bit bucket overflow
Matt Harbison
tests: drop `(py3 !)` output matching predicates...
r50772 *** failed to import extension "badext2": No module named 'badext2'
Simon Farnsworth
tests: confirm that a badly documented extension doesn't cause a crash...
r28083 Topics:
extensions Using Additional Features