##// END OF EJS Templates
dirstate-v2: preserve the fallback values on disk...
dirstate-v2: preserve the fallback values on disk When the fallback values are set, they are now read and written to disk. See format documentation for details. Differential Revision: https://phab.mercurial-scm.org/D11688

File last commit:

r49000:6edc8800 default
r49070:b874e8d8 default
Show More
test-nointerrupt.t
94 lines | 2.3 KiB | text/troff | Tads3Lexer
/ tests / test-nointerrupt.t
tests: blacklist a handful of test with `rhg` or `chg`...
r48387 #require no-windows no-rhg
XXX-RHG this test hangs if `hg` is really `rhg`. This was hidden by the use of
`alias hg=rhg` by run-tests.py. With such alias removed, this test is revealed
buggy. This need to be resolved sooner than later.
Matt Harbison
tests: disable test-nointerrupt on Windows...
r39515
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 Dummy extension simulating unsafe long running command
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 $ SYNC_FILE="$TESTTMP/sync-file"
$ export SYNC_FILE
$ DONE_FILE="$TESTTMP/done-file"
$ export DONE_FILE
$
$ cat > wait_ext.py <<EOF
> import os
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 > import time
>
Augie Fackler
tests: properly sort imports in test-nointerrupt.t...
r38678 > from mercurial.i18n import _
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 > from mercurial import registrar
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 > from mercurial import testing
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 >
> cmdtable = {}
> command = registrar.command(cmdtable)
>
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 > @command(b'wait-signal', [], _(b'SYNC_FILE DONE_FILE'), norepo=True)
> def sleep(ui, sync_file=b"$SYNC_FILE", done_file=b"$DONE_FILE", **opts):
> start = time.time()
Kyle Lippincott
procutil: correct spelling of uninterruptable -> uninterruptible...
r41106 > with ui.uninterruptible():
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 > testing.write_file(sync_file, b'%d' % os.getpid())
> testing.wait_file(done_file)
test-nointerrupt: make "sure" the handler "might" trigger (issue6558)...
r48605 > # make sure we get rescheduled and the signal get a chance to be handled
> time.sleep(0.1)
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 > ui.warn(b"end of unsafe operation\n")
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 > ui.warn(b"%d second(s) passed\n" % int(time.time() - start))
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 > EOF
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 $ cat > send-signal.sh << EOF
> #!/bin/sh
> SIG=\$1
> if [ -z "\$SIG" ]; then
> echo "send-signal.sh requires one argument" >&2
> exit 1
> fi
> "$RUNTESTDIR/testlib/wait-on-file" 10 "$SYNC_FILE" || exit 2
> kill -s \$SIG \`cat "$SYNC_FILE"\`
test-nointerrupt: make "sure" the handler "might" trigger (issue6558)...
r48605 > sleep 1
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 > touch "$DONE_FILE"
> EOF
#if no-windows
$ chmod +x send-signal.sh
#endif
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 Kludge to emulate timeout(1) which is not generally available.
Set up repository
$ hg init repo
$ cd repo
$ cat >> $HGRCPATH << EOF
> [extensions]
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 > wait_ext = $TESTTMP/wait_ext.py
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 > EOF
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 Test ctrl-c
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 $ rm -f $SYNC_FILE $DONE_FILE
$ sh -c "../send-signal.sh INT" &
$ hg wait-signal
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 interrupted!
Martin von Zweigbergk
dispatch: use detailed exit code 250 for keyboard interrupt...
r49000 [250]
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545
$ cat >> $HGRCPATH << EOF
> [experimental]
> nointerrupt = yes
> EOF
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 $ rm -f $SYNC_FILE $DONE_FILE
$ sh -c "../send-signal.sh INT" &
$ hg wait-signal
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 interrupted!
Martin von Zweigbergk
dispatch: use detailed exit code 250 for keyboard interrupt...
r49000 [250]
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545
$ cat >> $HGRCPATH << EOF
> [experimental]
> nointerrupt-interactiveonly = False
> EOF
test: remove `sleep` usage in `test-nointerrupt.t` (issue6271)...
r48562 $ rm -f $SYNC_FILE $DONE_FILE
$ sh -c "../send-signal.sh INT" &
$ hg wait-signal
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 shutting down cleanly
press ^C again to terminate immediately (dangerous)
end of unsafe operation
interrupted!
Martin von Zweigbergk
dispatch: use detailed exit code 250 for keyboard interrupt...
r49000 [250]