mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 09:17:30 +03:00
73eea7f6a4
Summary: `timeout` is not available in OSX. Use `gtimeout` instead. `gtimeout` can usually be installed using `brew install coreutils`. Test Plan: Run `arc unit`. Reviewers: simonfar, #sourcecontrol, quark Reviewed By: quark Subscribers: quark, mjpieters Differential Revision: https://phabricator.intern.facebook.com/D4029462 Tasks: 13945749 Signature: t1:4029462:1476784209:5a5d87a2b82314da1c1a0d189dd71d36e16d8c49
81 lines
1.7 KiB
Perl
81 lines
1.7 KiB
Perl
Dummy extension simulating long running command
|
|
$ cat > sleepext.py <<EOF
|
|
> import time
|
|
> import itertools
|
|
>
|
|
> from mercurial import cmdutil
|
|
> from mercurial.i18n import _
|
|
>
|
|
> cmdtable = {}
|
|
> command = cmdutil.command(cmdtable)
|
|
>
|
|
> @command('sleep', [], _('TIME'), norepo=True)
|
|
> def sleep(ui, sleeptime="1", **opts):
|
|
>
|
|
> for _i in itertools.repeat(None, int(sleeptime)):
|
|
> time.sleep(1)
|
|
>
|
|
> ui.warn("%s second(s) passed\n" % sleeptime)
|
|
> EOF
|
|
|
|
Set up repository
|
|
$ hg init repo
|
|
$ cd repo
|
|
$ cat >> $HGRCPATH << EOF
|
|
> [extensions]
|
|
> sleepext = ../sleepext.py
|
|
> EOF
|
|
|
|
#if osx
|
|
$ TIMEOUT=gtimeout
|
|
#else
|
|
$ TIMEOUT=timeout
|
|
#endif
|
|
|
|
$ hash $TIMEOUT 2>/dev/null
|
|
> HASHSTATUS=$?
|
|
> if [ $HASHSTATUS -ne 0 ] ; then
|
|
> echo "skipped: missing feature: $TIMEOUT"
|
|
> exit 80
|
|
> fi
|
|
|
|
Test ctrl-c
|
|
$ $TIMEOUT -s 2 1 hg sleep 2
|
|
interrupted!
|
|
[124]
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> nointerrupt = $TESTDIR/../hgext3rd/nointerrupt.py
|
|
> [alias]
|
|
> slumber = sleep
|
|
> [nointerrupt]
|
|
> attend-sleep = True
|
|
> attend-update = True
|
|
> EOF
|
|
|
|
$ $TIMEOUT -s 2 1 hg sleep 2
|
|
interrupted!
|
|
[124]
|
|
|
|
$ cat >> $HGRCPATH << EOF
|
|
> interactiveonly = False
|
|
> EOF
|
|
|
|
$ $TIMEOUT -s 2 1 hg sleep 2
|
|
==========================
|
|
Interrupting Mercurial may leave your repo in a bad state.
|
|
If you really want to interrupt your current command, press
|
|
CTRL-C again.
|
|
==========================
|
|
2 second(s) passed
|
|
[124]
|
|
|
|
$ $TIMEOUT -s 2 1 hg slum 2
|
|
==========================
|
|
Interrupting Mercurial may leave your repo in a bad state.
|
|
If you really want to interrupt your current command, press
|
|
CTRL-C again.
|
|
==========================
|
|
2 second(s) passed
|
|
[124]
|