evolve: compat patch for recordfilter change in mercurial
This patch fix the broken things because of upstream changes in
recordfilter() which is being used to select the hunks interactively.
It fixes the test-uncommit-interactive.t by adding the compat layer.
But for test-split.t I had to fix the tests manually. To make it more
clear: splitting broke at evolve side because after that upstream change
now interactive mode doesn't prompt "examine change to foo" if foo is
mentioned explicitly using cli; and directly jumps to hunks selection
prompt (well, only if there is any changes at hunks level)
And the main issue is when file which is explicitly mentioned has no changes
at hunk level (for e.g copy, rename, mode change, empty new file), because in
that case you don't have any control on selection of that file and it would
be included automatically in first cycle of interactive selection.
And this "no changes at hunks level" was the reason for test-split.t breakage
as now it didn't prompt for those files which are passed on cli.
To fix this I have included some content in those files to make sure that
tests still demonstrate the same behaviour as they were doing before breakage.
Also, I replaced some "n" with "s" as it make more sense to skip all the
changes to that file in one go instead of hitting "n" multiple times
(if there were multiple hunks)
============================
Testing extensions isolation
============================
In this test case, we check that a repository using the extensions can co-exist
with a repository not using the extension.
$ . $TESTDIR/testlib/common.sh
Setup
=====
Create repo
$ hg init repo-evo
$ cat > repo-evo/.hg/hgrc << EOF
> [extensions]
> evolve=
> EOF
$ hg init repo-topic
$ cat > repo-topic/.hg/hgrc << EOF
> [extensions]
> topic=
> EOF
$ hg init repo-both
$ cat > repo-both/.hg/hgrc << EOF
> [extensions]
> evolve=
> topic=
> EOF
$ hg init repo-no-ext
check setup
$ hg -R repo-evo help -e evolve | head -n 1
warning: --repository ignored
evolve extension - extends Mercurial feature related to Changeset Evolution
$ hg -R repo-both help -e evolve | head -n 1
warning: --repository ignored
evolve extension - extends Mercurial feature related to Changeset Evolution
$ hg -R repo-no-ext help -e evolve
warning: --repository ignored
abort: no such help topic: evolve
(try 'hg help --keyword evolve')
[255]
$ hg -R repo-no-ext help -e topic
warning: --repository ignored
abort: no such help topic: topic
(try 'hg help --keyword topic')
[255]
start hgweb dir for all repo
$ cat > hgweb.conf << EOF
> [paths]
> / = *
> EOF
$ hg serve -p $HGPORT -d --pid-file=hg.pid --web-conf hgweb.conf -A access.log -E error.log
$ cat hg.pid >> $DAEMON_PIDS
Test isolation
--------------
As of 4.9 (and previous version). It seems like extensions are displayed as
enabled even for repository where they are not supposed to be. See the output
tagged `no-false`.
(however, topic and evolve are not supposed to affect other repository as shown
in the rest of this test).
$ get-with-headers.py $LOCALIP:$HGPORT 'repo-no-ext/help/extensions' | grep 'enabled extensions' -A 7
[1]
$ get-with-headers.py $LOCALIP:$HGPORT 'repo-evo/help/extensions' | grep 'enabled extensions' -A 7
enabled extensions:
</p>
<dl>
<dt>evolve
<dd>extends Mercurial feature related to Changeset Evolution
</dl>
<p>
disabled extensions:
$ get-with-headers.py $LOCALIP:$HGPORT 'repo-topic/help/extensions' | grep 'enabled extensions' -A 7
enabled extensions:
</p>
<dl>
<dt>evolve (no-false !)
<dd>extends Mercurial feature related to Changeset Evolution (no-false !)
<dt>topic
<dd>support for topic branches
</dl>
$ get-with-headers.py $LOCALIP:$HGPORT 'repo-both/help/extensions' | grep 'enabled extensions' -A 9
enabled extensions:
</p>
<dl>
<dt>evolve
<dd>extends Mercurial feature related to Changeset Evolution
<dt>topic
<dd>support for topic branches
</dl>
<p>
disabled extensions:
$ get-with-headers.py $LOCALIP:$HGPORT 'repo-no-ext/help/extensions' | grep 'enabled extensions' -A 9
enabled extensions: (no-false !)
</p> (no-false !)
<dl> (no-false !)
<dt>evolve (no-false !)
<dd>extends Mercurial feature related to Changeset Evolution (no-false !)
<dt>topic (no-false !)
<dd>support for topic branches (no-false !)
</dl> (no-false !)
<p> (no-false !)
disabled extensions: (no-false !)
make sure repos don't affect each other (and check both ways)
Check evolve isolation
-----------------------
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-evo | egrep 'topics|evoext'
_evoext_getbundle_obscommon
_evoext_obshash_0
_evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
Check topic isolation
---------------------
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-topic | egrep 'topics|evoext'
topics
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
Check coupled isolation
-----------------------
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-both | egrep 'topics|evoext'
_evoext_getbundle_obscommon
_evoext_obshash_0
_evoext_obshash_1
_evoext_obshashrange_v1
topics
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-evo | egrep 'topics|evoext'
_evoext_getbundle_obscommon
_evoext_obshash_0
_evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-topic | egrep 'topics|evoext'
topics
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-evo | egrep 'topics|evoext'
_evoext_getbundle_obscommon
_evoext_obshash_0
_evoext_obshash_1
_evoext_obshashrange_v1
$ hg debugcapabilities http://$LOCALIP:$HGPORT/repo-no-ext | egrep 'topics|evoext'
[1]
Final cleanup
-------------
$ cat error.log
$ $RUNTESTDIR/killdaemons.py $DAEMON_PIDS