Mercurial > hg
annotate tests/test-worker.t @ 49603:3eda36e9b3d6 stable
matcher: fix issues regex flag contained in pattern (issue6759)
Python 3.11 is now enforcing that flag must be at the beginning of the regex
This creates a serious regression for people using Python 3.11 with an hgignore
using flag in a "relre" pattern.
We now detect any flags in such pattern and "prepend" our ".*" pattern after them.
In addition, we now insert the flag in the regexp to only affect the pattern we
are rewriting. Otherwise, the regex built from the combined pattern would these
flags in the middle of it anyway.
As a side effect of this last change, we fix a bug… before this change regex
flag in a pattern would affect all combined patterns. That was bad and is not
longer the case.
The Rust code needs to be updated to fix that very bug, but we will do it in
another changeset.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 16 Nov 2022 13:05:01 +0100 |
parents | 42d2b31cee0b |
children | 950c39918bd2 |
rev | line source |
---|---|
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
1 Test UI worker interaction |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
2 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
3 $ cat > t.py <<EOF |
44116
b5aaa09be18c
py3: suppress unraisable exceptions in test-worker.t
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43402
diff
changeset
|
4 > import sys |
32114
44a98a2ea431
test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com>
parents:
32113
diff
changeset
|
5 > import time |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
6 > from mercurial import ( |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
7 > error, |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32114
diff
changeset
|
8 > registrar, |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
9 > ui as uimod, |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
10 > worker, |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
11 > ) |
44116
b5aaa09be18c
py3: suppress unraisable exceptions in test-worker.t
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43402
diff
changeset
|
12 > sys.unraisablehook = lambda x: None |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
13 > def abort(ui, args): |
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
14 > if args[0] == 0: |
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
15 > # by first worker for test stability |
36182
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
16 > raise error.Abort(b'known exception') |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
17 > return runme(ui, []) |
32043
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
18 > def exc(ui, args): |
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
19 > if args[0] == 0: |
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
20 > # by first worker for test stability |
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
21 > raise Exception('unknown exception') |
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
22 > return runme(ui, []) |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
23 > def runme(ui, args): |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
24 > for arg in args: |
36182
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
25 > ui.status(b'run\n') |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
26 > yield 1, arg |
32114
44a98a2ea431
test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com>
parents:
32113
diff
changeset
|
27 > time.sleep(0.1) # easier to trigger killworkers code path |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
28 > functable = { |
36182
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
29 > b'abort': abort, |
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
30 > b'exc': exc, |
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
31 > b'runme': runme, |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
32 > } |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
33 > cmdtable = {} |
32337
46ba2cdda476
registrar: move cmdutil.command to registrar module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
32114
diff
changeset
|
34 > command = registrar.command(cmdtable) |
36182
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
35 > @command(b'test', [], b'hg test [COST] [FUNC]') |
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
36 > def t(ui, repo, cost=1.0, func=b'runme'): |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
37 > cost = float(cost) |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
38 > func = functable[func] |
36182
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
39 > ui.status(b'start\n') |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
40 > runs = worker.worker(ui, cost, func, (ui,), range(8)) |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
41 > for n, i in runs: |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
42 > pass |
36182
4f0439981a8a
py3: add b'' prefixes in test-worker.t
Pulkit Goyal <7895pulkit@gmail.com>
parents:
33097
diff
changeset
|
43 > ui.status(b'done\n') |
31696
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
44 > EOF |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
45 $ abspath=`pwd`/t.py |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
46 $ hg init |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
47 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
48 Run tests with worker enable by forcing a heigh cost |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
49 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
50 $ hg --config "extensions.t=$abspath" test 100000.0 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
51 start |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
52 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
53 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
54 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
55 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
56 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
57 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
58 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
59 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
60 done |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
61 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
62 Run tests without worker by forcing a low cost |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
63 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
64 $ hg --config "extensions.t=$abspath" test 0.0000001 |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
65 start |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
66 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
67 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
68 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
69 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
70 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
71 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
72 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
73 run |
9d3d56aa1a9f
worker: flush ui buffers before running the worker
David Soria Parra <davidsp@fb.com>
parents:
diff
changeset
|
74 done |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
75 |
32061
6e0368b6e0bb
test-worker: disable tests of forked workers on Windows
Yuya Nishihara <yuya@tcha.org>
parents:
32043
diff
changeset
|
76 #if no-windows |
6e0368b6e0bb
test-worker: disable tests of forked workers on Windows
Yuya Nishihara <yuya@tcha.org>
parents:
32043
diff
changeset
|
77 |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
78 Known exception should be caught, but printed if --traceback is enabled |
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
79 |
32114
44a98a2ea431
test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com>
parents:
32113
diff
changeset
|
80 $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=8' \ |
44a98a2ea431
test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com>
parents:
32113
diff
changeset
|
81 > test 100000.0 abort 2>&1 |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
82 start |
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
83 abort: known exception |
32042
8f8ad0139b8b
worker: propagate exit code to main process
Yuya Nishihara <yuya@tcha.org>
parents:
32041
diff
changeset
|
84 [255] |
32041
38963a53ab0d
dispatch: print traceback in scmutil.callcatch() if --traceback specified
Yuya Nishihara <yuya@tcha.org>
parents:
31696
diff
changeset
|
85 |
32114
44a98a2ea431
test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com>
parents:
32113
diff
changeset
|
86 $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=8' \ |
45825
8f07f5a9c3de
worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents:
44248
diff
changeset
|
87 > test 100000.0 abort --traceback 2>&1 | egrep '(WorkerError|Abort)' |
41521
bad59bbd9bec
py3: add alternate output on Python 3
Gregory Szorc <gregory.szorc@gmail.com>
parents:
36182
diff
changeset
|
88 raise error.Abort(b'known exception') |
43402
40bf3d7ecc42
py3: add a __str__ method to Abort
Denis Laxalde <denis@laxalde.org>
parents:
41521
diff
changeset
|
89 mercurial.error.Abort: known exception (py3 !) |
45825
8f07f5a9c3de
worker: raise exception instead of calling sys.exit() with child's code
Martin von Zweigbergk <martinvonz@google.com>
parents:
44248
diff
changeset
|
90 raise error.WorkerError(status) |
45903
64faa55716f4
tests: make test-worker.t pass on py2
Martin von Zweigbergk <martinvonz@google.com>
parents:
45825
diff
changeset
|
91 mercurial.error.WorkerError: 255 (py3 !) |
32043
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
92 |
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
93 Traceback must be printed for unknown exceptions |
b844d0d367e2
worker: print traceback for uncaught exception unconditionally
Yuya Nishihara <yuya@tcha.org>
parents:
32042
diff
changeset
|
94 |
32114
44a98a2ea431
test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com>
parents:
32113
diff
changeset
|
95 $ hg --config "extensions.t=$abspath" --config 'worker.numcpus=8' \ |
32113
9f0c055eebae
test-worker: capture tracebacks more reliably
Jun Wu <quark@fb.com>
parents:
32112
diff
changeset
|
96 > test 100000.0 exc 2>&1 | grep '^Exception' |
9f0c055eebae
test-worker: capture tracebacks more reliably
Jun Wu <quark@fb.com>
parents:
32112
diff
changeset
|
97 Exception: unknown exception |
32061
6e0368b6e0bb
test-worker: disable tests of forked workers on Windows
Yuya Nishihara <yuya@tcha.org>
parents:
32043
diff
changeset
|
98 |
32112
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
99 Workers should not do cleanups in all cases |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
100 |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
101 $ cat > $TESTTMP/detectcleanup.py <<EOF |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
102 > import atexit |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
103 > import os |
44116
b5aaa09be18c
py3: suppress unraisable exceptions in test-worker.t
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43402
diff
changeset
|
104 > import sys |
32112
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
105 > import time |
44116
b5aaa09be18c
py3: suppress unraisable exceptions in test-worker.t
Gregory Szorc <gregory.szorc@gmail.com>
parents:
43402
diff
changeset
|
106 > sys.unraisablehook = lambda x: None |
32112
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
107 > oldfork = os.fork |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
108 > count = 0 |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
109 > parentpid = os.getpid() |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
110 > def delayedfork(): |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
111 > global count |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
112 > count += 1 |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
113 > pid = oldfork() |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
114 > # make it easier to test SIGTERM hitting other workers when they have |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
115 > # not set up error handling yet. |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
116 > if count > 1 and pid == 0: |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
117 > time.sleep(0.1) |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
118 > return pid |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
119 > os.fork = delayedfork |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
120 > def cleanup(): |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
121 > if os.getpid() != parentpid: |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
122 > os.write(1, 'should never happen\n') |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
123 > atexit.register(cleanup) |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
124 > EOF |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
125 |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
126 $ hg --config "extensions.t=$abspath" --config worker.numcpus=8 --config \ |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
127 > "extensions.d=$TESTTMP/detectcleanup.py" test 100000 abort |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
128 start |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
129 abort: known exception |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
130 [255] |
31763785094b
worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com>
parents:
32061
diff
changeset
|
131 |
44248
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
132 Do not crash on partially read result |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
133 |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
134 $ cat > $TESTTMP/detecttruncated.py <<EOF |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
135 > import os |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
136 > import sys |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
137 > import time |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
138 > sys.unraisablehook = lambda x: None |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
139 > oldwrite = os.write |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
140 > def splitwrite(fd, string): |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
141 > ret = oldwrite(fd, string[:9]) |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
142 > if ret == 9: |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
143 > time.sleep(0.1) |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
144 > ret += oldwrite(fd, string[9:]) |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
145 > return ret |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
146 > os.write = splitwrite |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
147 > EOF |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
148 |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
149 $ hg --config "extensions.t=$abspath" --config worker.numcpus=8 --config \ |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
150 > "extensions.d=$TESTTMP/detecttruncated.py" test 100000.0 |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
151 start |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
152 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
153 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
154 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
155 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
156 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
157 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
158 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
159 run |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
160 done |
12491abf93bd
worker: manually buffer reads from pickle stream
Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
parents:
44116
diff
changeset
|
161 |
32061
6e0368b6e0bb
test-worker: disable tests of forked workers on Windows
Yuya Nishihara <yuya@tcha.org>
parents:
32043
diff
changeset
|
162 #endif |