author | Simon Sapin <simon.sapin@octobus.net> |
Mon, 13 Sep 2021 15:42:39 +0200 | |
changeset 47961 | 4d2a5ca060e3 |
parent 47805 | 8892f604e242 |
child 48186 | 6edc8800dbc3 |
permissions | -rw-r--r-- |
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! |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
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! |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
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! |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
94 |
[255] |