Mercurial > hg
annotate tests/test-nointerrupt.t @ 51473:a72ab2ec5315
stream-clone-test: factor some piece of basic clone test out
Multiple parts of this case (listing cache, checking error) are common to all
cases and don't need to be in the conditionnal block.
This simplify the test update.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 28 Feb 2024 22:05:28 +0100 |
parents | 8c75ae3f0eea |
children |
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) |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
30 > 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
|
31 > 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
|
32 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
33 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
34 $ 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
|
35 > #!/bin/sh |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
36 > SIG=\$1 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
37 > 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
|
38 > 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
|
39 > exit 1 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
40 > fi |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
41 > "$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
|
42 > kill -s \$SIG \`cat "$SYNC_FILE"\` |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
43 > EOF |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
44 |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
45 #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
|
46 $ 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
|
47 #endif |
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
48 |
49446
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
49 $ cat > wait-signal.sh << 'EOF' |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
50 > #!/bin/sh |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
51 > (hg wait-signal 2>&1; echo [$?]) | { |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
52 > read line |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
53 > touch "$DONE_FILE" |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
54 > echo "$line" |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
55 > cat |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
56 > } |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
57 > EOF |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
58 |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
59 #if no-windows |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
60 $ chmod +x wait-signal.sh |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
61 #endif |
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
62 |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
63 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
|
64 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
65 Set up repository |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
66 $ hg init repo |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
67 $ cd repo |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
68 $ cat >> $HGRCPATH << EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
69 > [extensions] |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
70 > 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
|
71 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
72 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
73 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
|
74 $ 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
|
75 $ sh -c "../send-signal.sh INT" & |
49446
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
76 $ ../wait-signal.sh |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
77 interrupted! |
48255
8c34edb1ad10
backout: backed out changeset 6edc8800dbc3
Raphaël Gomès <rgomes@octobus.net>
parents:
48186
diff
changeset
|
78 [255] |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
79 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
80 $ cat >> $HGRCPATH << EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
81 > [experimental] |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
82 > nointerrupt = yes |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
83 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
84 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
85 $ 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
|
86 $ sh -c "../send-signal.sh INT" & |
49446
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
87 $ ../wait-signal.sh |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
88 interrupted! |
48255
8c34edb1ad10
backout: backed out changeset 6edc8800dbc3
Raphaël Gomès <rgomes@octobus.net>
parents:
48186
diff
changeset
|
89 [255] |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
90 |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
91 $ cat >> $HGRCPATH << EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
92 > [experimental] |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
93 > nointerrupt-interactiveonly = False |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
94 > EOF |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
95 |
47762
f48a688a7044
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
47587
diff
changeset
|
96 $ 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
|
97 $ sh -c "../send-signal.sh INT" & |
49446
8c75ae3f0eea
tests: remove flakiness in test-nointerrupt.t
Arseniy Alekseyev <aalekseyev@janestreet.com>
parents:
48255
diff
changeset
|
98 $ ../wait-signal.sh |
38526
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
99 shutting down cleanly |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
100 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
|
101 end of unsafe operation |
313a940d49a3
ui: add an uninterruptable context manager that can block SIGINT
Augie Fackler <augie@google.com>
parents:
diff
changeset
|
102 interrupted! |
48255
8c34edb1ad10
backout: backed out changeset 6edc8800dbc3
Raphaël Gomès <rgomes@octobus.net>
parents:
48186
diff
changeset
|
103 [255] |