Mercurial > hg
view tests/test-nointerrupt.t @ 47989:87b3010c08e0
dirstate: fix restoration of "merged" state after a remove
Before this change, "merged" file that get removed and re-added later were
recorded as "from_p2" instead.
This came from 8fe74328f700, a 2014 changeset that start explicitly doing so
for reason I have not been able to fully grasp. The graft test mentioned in
the description are still happy after this changeset.
So this changeset restore what seems to be the intended behavior. Restoring
information as it was before the removal.
Differential Revision: https://phab.mercurial-scm.org/D11429
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 15 Sep 2021 11:13:46 +0200 |
parents | 8892f604e242 |
children | 6edc8800dbc3 |
line wrap: on
line source
#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]