author | Yuya Nishihara <yuya@tcha.org> |
Mon, 18 Jun 2018 21:58:04 +0900 | |
changeset 38451 | 5b04a0c30f3f |
parent 33109 | fce4ed2912bb |
child 38534 | 9ee202679a76 |
permissions | -rw-r--r-- |
31957
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
1 |
ensure that failing ui.atexit handlers report sensibly |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
2 |
|
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
3 |
$ cat > $TESTTMP/bailatexit.py <<EOF |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
4 |
> from mercurial import util |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
5 |
> def bail(): |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
6 |
> raise RuntimeError('ui.atexit handler exception') |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
7 |
> |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
8 |
> def extsetup(ui): |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
9 |
> ui.atexit(bail) |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
10 |
> EOF |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
11 |
$ hg -q --config extensions.bailatexit=$TESTTMP/bailatexit.py \ |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
12 |
> help help |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
13 |
hg help [-ecks] [TOPIC] |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
14 |
|
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
15 |
show help for a given topic or a help overview |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
16 |
error in exit handlers: |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
17 |
Traceback (most recent call last): |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
18 |
File "*/mercurial/dispatch.py", line *, in _runexithandlers (glob) |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
19 |
func(*args, **kwargs) |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
20 |
File "$TESTTMP/bailatexit.py", line *, in bail (glob) |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
21 |
raise RuntimeError('ui.atexit handler exception') |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
22 |
RuntimeError: ui.atexit handler exception |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
23 |
[255] |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
24 |
|
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
25 |
$ rm $TESTTMP/bailatexit.py |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
26 |
|
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
27 |
another bad extension |
84f9eb9758c0
atexit: test failing handlers
Bryan O'Sullivan <bryano@fb.com>
parents:
30029
diff
changeset
|
28 |
|
11858
934c7e91c126
tests: unify test-bad-extension
Martin Geisler <mg@lazybytes.net>
parents:
6204
diff
changeset
|
29 |
$ echo 'raise Exception("bit bucket overflow")' > badext.py |
28083
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
30 |
$ abspathexc=`pwd`/badext.py |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
31 |
|
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
32 |
$ cat >baddocext.py <<EOF |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
33 |
> """ |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
34 |
> baddocext is bad |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
35 |
> """ |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
36 |
> EOF |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
37 |
$ abspathdoc=`pwd`/baddocext.py |
3014
01454af644b8
load extensions only after the ui object has been completely initialized
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
38 |
|
23172
e955549cd045
tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
14286
diff
changeset
|
39 |
$ cat <<EOF >> $HGRCPATH |
e955549cd045
tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
14286
diff
changeset
|
40 |
> [extensions] |
e955549cd045
tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
14286
diff
changeset
|
41 |
> gpg = |
e955549cd045
tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
14286
diff
changeset
|
42 |
> hgext.gpg = |
28083
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
43 |
> badext = $abspathexc |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
44 |
> baddocext = $abspathdoc |
23172
e955549cd045
tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
14286
diff
changeset
|
45 |
> badext2 = |
e955549cd045
tests: write hgrc of more than two lines by using shell heredoc
Yuya Nishihara <yuya@tcha.org>
parents:
14286
diff
changeset
|
46 |
> EOF |
3014
01454af644b8
load extensions only after the ui object has been completely initialized
Alexis S. L. Carvalho <alexis@cecm.usp.br>
parents:
diff
changeset
|
47 |
|
26239
f39953663cc9
test-bad-extension: reduce dependencies on other things
timeless@mozdev.org
parents:
25364
diff
changeset
|
48 |
$ hg -q help help 2>&1 |grep extension |
12640
6cc4b14fb76b
tests: remove redundant globs
Mads Kiilerich <mads@kiilerich.com>
parents:
12376
diff
changeset
|
49 |
*** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow |
12375
02990e22150b
tests: require regexes in unified tests to be marked with " (re)"
Brodie Rao <brodie@bitheap.org>
parents:
11858
diff
changeset
|
50 |
*** failed to import extension badext2: No module named badext2 |
25364
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
51 |
|
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
52 |
show traceback |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
53 |
|
26239
f39953663cc9
test-bad-extension: reduce dependencies on other things
timeless@mozdev.org
parents:
25364
diff
changeset
|
54 |
$ hg -q help help --traceback 2>&1 | egrep ' extension|^Exception|Traceback|ImportError' |
25364
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
55 |
*** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
56 |
Traceback (most recent call last): |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
57 |
Exception: bit bucket overflow |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
58 |
*** failed to import extension badext2: No module named badext2 |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
59 |
Traceback (most recent call last): |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
60 |
ImportError: No module named badext2 |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
61 |
|
28155
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
62 |
names of extensions failed to load can be accessed via extensions.notloaded() |
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
63 |
|
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
64 |
$ cat <<EOF > showbadexts.py |
32376
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
31957
diff
changeset
|
65 |
> from mercurial import commands, extensions, registrar |
28155
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
66 |
> cmdtable = {} |
32376
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
31957
diff
changeset
|
67 |
> command = registrar.command(cmdtable) |
33109
fce4ed2912bb
py3: make sure commands name are bytes in tests
Pulkit Goyal <7895pulkit@gmail.com>
parents:
32376
diff
changeset
|
68 |
> @command(b'showbadexts', norepo=True) |
28155
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
69 |
> def showbadexts(ui, *pats, **opts): |
28338
9974b8236cac
tests: Solaris grep doesn't add a trailing newline when it's missing
Danek Duvall <danek.duvall@oracle.com>
parents:
28155
diff
changeset
|
70 |
> ui.write('BADEXTS: %s\n' % ' '.join(sorted(extensions.notloaded()))) |
28155
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
71 |
> EOF |
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
72 |
$ hg --config extensions.badexts=showbadexts.py showbadexts 2>&1 | grep '^BADEXTS' |
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
73 |
BADEXTS: badext badext2 |
7f430b2ac7fd
extensions: add notloaded method to return extensions failed to load
Jun Wu <quark@fb.com>
parents:
28083
diff
changeset
|
74 |
|
25364
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
75 |
show traceback for ImportError of hgext.name if debug is set |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
76 |
(note that --debug option isn't applied yet when loading extensions) |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
77 |
|
26239
f39953663cc9
test-bad-extension: reduce dependencies on other things
timeless@mozdev.org
parents:
25364
diff
changeset
|
78 |
$ (hg -q help help --traceback --config ui.debug=True 2>&1) \ |
f39953663cc9
test-bad-extension: reduce dependencies on other things
timeless@mozdev.org
parents:
25364
diff
changeset
|
79 |
> | grep -v '^ ' \ |
f39953663cc9
test-bad-extension: reduce dependencies on other things
timeless@mozdev.org
parents:
25364
diff
changeset
|
80 |
> | egrep 'extension..[^p]|^Exception|Traceback|ImportError|not import' |
25364
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
81 |
*** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
82 |
Traceback (most recent call last): |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
83 |
Exception: bit bucket overflow |
30029
ebe488e04ca3
extensions: fix a debug message when searching for extensions
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28737
diff
changeset
|
84 |
could not import hgext.badext2 (No module named *badext2): trying hgext3rd.badext2 (glob) |
25364
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
85 |
Traceback (most recent call last): |
27538
50ad3f25fb4c
test-bad-extension: account for PyPy/CPython error difference
Bryan O'Sullivan <bos@serpentine.com>
parents:
26239
diff
changeset
|
86 |
ImportError: No module named *badext2 (glob) |
28737
a3a01194a337
pypy: fix overspecific test checks
Maciej Fijalkowski <fijall@gmail.com>
parents:
28541
diff
changeset
|
87 |
could not import hgext3rd.badext2 (No module named *badext2): trying badext2 (glob) |
28541
4b81487a01d4
extensions: also search for extension in the 'hgext3rd' package
Pierre-Yves David <pierre-yves.david@fb.com>
parents:
28338
diff
changeset
|
88 |
Traceback (most recent call last): |
28737
a3a01194a337
pypy: fix overspecific test checks
Maciej Fijalkowski <fijall@gmail.com>
parents:
28541
diff
changeset
|
89 |
ImportError: No module named *badext2 (glob) |
25364
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
90 |
*** failed to import extension badext2: No module named badext2 |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
91 |
Traceback (most recent call last): |
de23a552fc23
extensions: show traceback on load failure if --traceback flag is set
Yuya Nishihara <yuya@tcha.org>
parents:
23172
diff
changeset
|
92 |
ImportError: No module named badext2 |
28083
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
93 |
|
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
94 |
confirm that there's no crash when an extension's documentation is bad |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
95 |
|
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
96 |
$ hg help --keyword baddocext |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
97 |
*** failed to import extension badext from $TESTTMP/badext.py: bit bucket overflow |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
98 |
*** failed to import extension badext2: No module named badext2 |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
99 |
Topics: |
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
100 |
|
550097d01ca3
tests: confirm that a badly documented extension doesn't cause a crash
Simon Farnsworth <simonfar@fb.com>
parents:
27538
diff
changeset
|
101 |
extensions Using Additional Features |