Mercurial > hg
annotate tests/test-nointerrupt.t @ 48670:6d2ddea0721a stable
stream-clone: filter possible missing requirements using all supported one
The `supportedformat` requirements is missing some important requirements and it
seems better to filter out with all requirements we know, not just an
"arbitrary" subset.
The `supportedformat` set is lacking some important requirements (for example
`revlog-compression-zstd`). This is getting fixed on default (for Mercurial 6.1)
However, fixing that in 6.1 means the stream requirements sent over the wire
will contains more items. And if we don't apply this fix on older version, they
might end up complaining about lacking support for feature they actually support
for years.
This patch does not fix the deeper problem (advertised stream requirement
lacking some of them), but focus on the trivial part : Lets use the full set of
supported requirement for looking for unsupported ones.
This patch should be simple to backport to older version of Mercurial and
packager should be encouraged to do so.
This is a graft of d9017df70135 from default.
Differential Revision: https://phab.mercurial-scm.org/D12091
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 24 Jan 2022 11:49:06 +0100 |
parents | 8c34edb1ad10 |
children | 8c75ae3f0eea |
rev | line source |
---|---|
47587
be496e3489b9
tests: blacklist a handful of test with `rhg` or `chg`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47063
diff
changeset
|
1 #require no-windows no-rhg |
be496e3489b9
tests: blacklist a handful of test with `rhg` or `chg`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47063
diff
changeset
|
2 |
be496e3489b9
tests: blacklist a handful of test with `rhg` or `chg`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47063
diff
changeset
|
3 XXX-RHG this test hangs if `hg` is really `rhg`. This was hidden by the use of |
be496e3489b9
tests: blacklist a handful of test with `rhg` or `chg`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47063
diff
changeset
|
4 `alias hg=rhg` by run-tests.py. With such alias removed, this test is revealed |
be496e3489b9
tests: blacklist a handful of test with `rhg` or `chg`
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47063
diff
changeset
|
5 buggy. This need to be resolved sooner than later. |
39479
3ba87d5b9ad3
tests: disable test-nointerrupt on Windows
Matt Harbison <matt_harbison@yahoo.com>
parents:
38656
diff
changeset
|
6 |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
7 Dummy extension simulating unsafe long running command |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
8 $ SYNC_FILE="$TESTTMP/sync-file" |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
9 $ export SYNC_FILE |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
10 $ DONE_FILE="$TESTTMP/done-file" |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
11 $ export DONE_FILE |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
12 $ |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
13 $ cat > wait_ext.py <<EOF |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
14 > import os |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
15 > import time |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
16 > |
38656
531f5e933e49
tests: properly sort imports in test-nointerrupt.t
Augie Fackler <augie@google.com>
parents:
38526
diff
changeset
|
17 > from mercurial.i18n import _ |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
18 > from mercurial import registrar |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
19 > from mercurial import testing |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
20 > |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
21 > cmdtable = {} |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
22 > command = registrar.command(cmdtable) |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
23 > |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
24 > @command(b'wait-signal', [], _(b'SYNC_FILE DONE_FILE'), norepo=True) |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
25 > def sleep(ui, sync_file=b"$SYNC_FILE", done_file=b"$DONE_FILE", **opts): |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
26 > start = time.time() |
41076
8ecb17b7f432
procutil: correct spelling of uninterruptable -> uninterruptible
Kyle Lippincott <spectral@google.com>
parents:
39479
diff
changeset
|
27 > with ui.uninterruptible(): |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
28 > testing.write_file(sync_file, b'%d' % os.getpid()) |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
29 > testing.wait_file(done_file) |
47805
8892f604e242
test-nointerrupt: make "sure" the handler "might" trigger (issue6558)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47762
diff
changeset
|
30 > # make sure we get rescheduled and the signal get a chance to be handled |
8892f604e242
test-nointerrupt: make "sure" the handler "might" trigger (issue6558)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47762
diff
changeset
|
31 > time.sleep(0.1) |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
32 > ui.warn(b"end of unsafe operation\n") |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
33 > ui.warn(b"%d second(s) passed\n" % int(time.time() - start)) |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
34 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
35 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
36 $ cat > send-signal.sh << EOF |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
37 > #!/bin/sh |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
38 > SIG=\$1 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
39 > if [ -z "\$SIG" ]; then |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
40 > echo "send-signal.sh requires one argument" >&2 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
41 > exit 1 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
42 > fi |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
43 > "$RUNTESTDIR/testlib/wait-on-file" 10 "$SYNC_FILE" || exit 2 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
44 > kill -s \$SIG \`cat "$SYNC_FILE"\` |
47805
8892f604e242
test-nointerrupt: make "sure" the handler "might" trigger (issue6558)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47762
diff
changeset
|
45 > sleep 1 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
46 > touch "$DONE_FILE" |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
47 > EOF |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
48 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
49 #if no-windows |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
50 $ chmod +x send-signal.sh |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
51 #endif |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
52 |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
53 Kludge to emulate timeout(1) which is not generally available. |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
54 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
55 Set up repository |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
56 $ hg init repo |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
57 $ cd repo |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
58 $ cat >> $HGRCPATH << EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
59 > [extensions] |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
60 > wait_ext = $TESTTMP/wait_ext.py |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
61 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
62 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
63 |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
64 Test ctrl-c |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
65 $ rm -f $SYNC_FILE $DONE_FILE |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
66 $ sh -c "../send-signal.sh INT" & |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
67 $ hg wait-signal |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
68 interrupted! |
48255
8c34edb1ad10
backout: backed out changeset 6edc8800dbc3
Raphaël Gomès <rgomes@octobus.net>
parents:
48186
diff
changeset
|
69 [255] |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
70 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
71 $ cat >> $HGRCPATH << EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
72 > [experimental] |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
73 > nointerrupt = yes |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
74 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
75 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
76 $ rm -f $SYNC_FILE $DONE_FILE |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
77 $ sh -c "../send-signal.sh INT" & |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
78 $ hg wait-signal |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
79 interrupted! |
48255
8c34edb1ad10
backout: backed out changeset 6edc8800dbc3
Raphaël Gomès <rgomes@octobus.net>
parents:
48186
diff
changeset
|
80 [255] |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
81 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
82 $ cat >> $HGRCPATH << EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
83 > [experimental] |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
84 > nointerrupt-interactiveonly = False |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
85 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
86 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
87 $ rm -f $SYNC_FILE $DONE_FILE |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
88 $ sh -c "../send-signal.sh INT" & |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
89 $ hg wait-signal |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
90 shutting down cleanly |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
91 press ^C again to terminate immediately (dangerous) |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
92 end of unsafe operation |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
93 interrupted! |
48255
8c34edb1ad10
backout: backed out changeset 6edc8800dbc3
Raphaël Gomès <rgomes@octobus.net>
parents:
48186
diff
changeset
|
94 [255] |