##// END OF EJS Templates
compare-disco: support for `file` nodes specification...
compare-disco: support for `file` nodes specification This leverage the `nodefromfile` feature in core. This make it possible for callers to no longer pay the subset computation cost (and to make sure the subset is the right one, even when the base repository is different)

File last commit:

r50341:8c75ae3f stable
r50358:5acbc550 default
Show More
test-nointerrupt.t
94 lines | 2.3 KiB | text/troff | Tads3Lexer
#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.
Dummy extension simulating unsafe long running command
$ SYNC_FILE="$TESTTMP/sync-file"
$ export SYNC_FILE
$ DONE_FILE="$TESTTMP/done-file"
$ export DONE_FILE
$
$ cat > wait_ext.py <<EOF
> import os
> import time
>
> from mercurial.i18n import _
> from mercurial import registrar
> from mercurial import testing
>
> cmdtable = {}
> command = registrar.command(cmdtable)
>
> @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()
> with ui.uninterruptible():
> testing.write_file(sync_file, b'%d' % os.getpid())
> testing.wait_file(done_file)
> # make sure we get rescheduled and the signal get a chance to be handled
> time.sleep(0.1)
> ui.warn(b"end of unsafe operation\n")
> ui.warn(b"%d second(s) passed\n" % int(time.time() - start))
> EOF
$ 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"\`
> sleep 1
> touch "$DONE_FILE"
> EOF
#if no-windows
$ chmod +x send-signal.sh
#endif
Kludge to emulate timeout(1) which is not generally available.
Set up repository
$ hg init repo
$ cd repo
$ cat >> $HGRCPATH << EOF
> [extensions]
> wait_ext = $TESTTMP/wait_ext.py
> EOF
Test ctrl-c
$ rm -f $SYNC_FILE $DONE_FILE
$ sh -c "../send-signal.sh INT" &
$ hg wait-signal
interrupted!
[255]
$ cat >> $HGRCPATH << EOF
> [experimental]
> nointerrupt = yes
> EOF
$ rm -f $SYNC_FILE $DONE_FILE
$ sh -c "../send-signal.sh INT" &
$ hg wait-signal
interrupted!
[255]
$ cat >> $HGRCPATH << EOF
> [experimental]
> nointerrupt-interactiveonly = False
> EOF
$ rm -f $SYNC_FILE $DONE_FILE
$ sh -c "../send-signal.sh INT" &
$ hg wait-signal
shutting down cleanly
press ^C again to terminate immediately (dangerous)
end of unsafe operation
interrupted!
[255]