Mercurial > hg
view tests/test-mq-qnew @ 12039:18e1e7520b67 stable
alias: make shadowing behavior more consistent (issue2054)
Currently, given an alias like the following:
[alias]
summary = summary --remote
The alias might be executed - or it might not - depending on the order
of the cmdtable dict.
This happens because cmdalias gets assigned back to the cmdtable like so:
cmdtable['summary'] = ...
Yet '^summary|sum' is still in the table, so which one cmdutil.findcmd()
chooses isn't deterministic.
This patch makes cmdalias assign back to '^summary|sum'. It uses the same
cmdtable key lookup that extensions.wrapcommand() does.
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Sat, 21 Aug 2010 22:48:14 -0400 |
parents | 0c944b7af564 |
children | a5903e612f07 |
line wrap: on
line source
#!/bin/sh catpatch() { cat $1 | sed -e "s/^\(# Parent \).*/\1/" } echo "[extensions]" >> $HGRCPATH echo "mq=" >> $HGRCPATH runtest() { hg init mq cd mq echo a > a hg ci -Ama echo '% qnew should refuse bad patch names' hg qnew series hg qnew status hg qnew guards hg qnew .hgignore hg qnew .mqfoo hg qnew 'foo#bar' hg qnew 'foo:bar' hg qinit -c echo '% qnew with name containing slash' hg qnew foo/bar.patch hg qseries hg qpop hg qdelete foo/bar.patch echo '% qnew with uncommitted changes' echo a > somefile hg add somefile hg qnew uncommitted.patch hg st hg qseries echo '% qnew implies add' hg -R .hg/patches st echo '% qnew missing' hg qnew missing.patch missing echo '% qnew -m' hg qnew -m 'foo bar' mtest.patch catpatch .hg/patches/mtest.patch echo '% qnew twice' hg qnew first.patch hg qnew first.patch touch ../first.patch hg qimport ../first.patch echo '% qnew -f from a subdirectory' hg qpop -a mkdir d cd d echo b > b hg ci -Am t echo b >> b hg st hg qnew -g -f p catpatch ../.hg/patches/p echo '% qnew -u with no username configured' HGUSER= hg qnew -u blue red catpatch ../.hg/patches/red echo '% fail when trying to import a merge' hg init merge cd merge touch a hg ci -Am null echo a >> a hg ci -m a hg up -r 0 echo b >> a hg ci -m b hg merge -f 1 hg resolve --mark a hg qnew -f merge cd ../../.. rm -r mq } echo '%%% plain headers' echo "[mq]" >> $HGRCPATH echo "plain=true" >> $HGRCPATH mkdir sandbox (cd sandbox ; runtest) rm -r sandbox echo '%%% hg headers' echo "plain=false" >> $HGRCPATH mkdir sandbox (cd sandbox ; runtest) rm -r sandbox exit 0