tests/test-extension-isolation.t
branchstable
changeset 4479 2db0aca03a88
child 4643 77f3699e711e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/test-extension-isolation.t	Tue Apr 09 20:45:36 2019 +0200
@@ -0,0 +1,171 @@
+============================
+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