##// END OF EJS Templates
phabricator: make user searches case-insensitive...
phabricator: make user searches case-insensitive User names in conduit are case insensitive, but when looking for "FOO" it would return "foo" instead and we'd think the user didn't exist. So lower case both the query and the response when comparing them. Differential Revision: https://phab.mercurial-scm.org/D5934

File last commit:

r41106:8ecb17b7 default
r41854:570e62f1 default
Show More
test-nointerrupt.t
85 lines | 2.0 KiB | text/troff | Tads3Lexer
/ tests / test-nointerrupt.t
Matt Harbison
tests: disable test-nointerrupt on Windows...
r39515 #require no-windows
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 Dummy extension simulating unsafe long running command
$ cat > sleepext.py <<EOF
Augie Fackler
tests: properly sort imports in test-nointerrupt.t...
r38678 > import itertools
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
>
> cmdtable = {}
> command = registrar.command(cmdtable)
>
> @command(b'sleep', [], _(b'TIME'), norepo=True)
> def sleep(ui, sleeptime=b"1", **opts):
Kyle Lippincott
procutil: correct spelling of uninterruptable -> uninterruptible...
r41106 > with ui.uninterruptible():
Augie Fackler
ui: add an uninterruptable context manager that can block SIGINT...
r38545 > for _i in itertools.repeat(None, int(sleeptime)):
> time.sleep(1)
> ui.warn(b"end of unsafe operation\n")
> ui.warn(b"%s second(s) passed\n" % sleeptime)
> EOF
Kludge to emulate timeout(1) which is not generally available.
$ cat > timeout.py <<EOF
> from __future__ import print_function
> import argparse
> import signal
> import subprocess
> import sys
> import time
>
> ap = argparse.ArgumentParser()
> ap.add_argument('-s', nargs=1, default='SIGTERM')
> ap.add_argument('duration', nargs=1, type=int)
> ap.add_argument('argv', nargs='*')
> opts = ap.parse_args()
> try:
> sig = int(opts.s[0])
> except ValueError:
> sname = opts.s[0]
> if not sname.startswith('SIG'):
> sname = 'SIG' + sname
> sig = getattr(signal, sname)
> proc = subprocess.Popen(opts.argv)
> time.sleep(opts.duration[0])
> proc.poll()
> if proc.returncode is None:
> proc.send_signal(sig)
> proc.wait()
> sys.exit(124)
> EOF
Set up repository
$ hg init repo
$ cd repo
$ cat >> $HGRCPATH << EOF
> [extensions]
> sleepext = ../sleepext.py
> EOF
Test ctrl-c
$ python $TESTTMP/timeout.py -s INT 1 hg sleep 2
interrupted!
[124]
$ cat >> $HGRCPATH << EOF
> [experimental]
> nointerrupt = yes
> EOF
$ python $TESTTMP/timeout.py -s INT 1 hg sleep 2
interrupted!
[124]
$ cat >> $HGRCPATH << EOF
> [experimental]
> nointerrupt-interactiveonly = False
> EOF
$ python $TESTTMP/timeout.py -s INT 1 hg sleep 2
shutting down cleanly
press ^C again to terminate immediately (dangerous)
end of unsafe operation
interrupted!
[124]