tests/test-extension.t
changeset 19777 6f72e7d28b35
parent 18748 6e676fb6ea44
child 19822 a194a33f8cb2
--- a/tests/test-extension.t	Mon Sep 23 11:37:06 2013 -0700
+++ b/tests/test-extension.t	Sat Sep 21 21:33:29 2013 +0900
@@ -417,6 +417,7 @@
 
 Disabled extension commands:
 
+  $ ORGHGRCPATH=$HGRCPATH
   $ HGRCPATH=
   $ export HGRCPATH
   $ hg help email
@@ -573,3 +574,134 @@
   ** Python * (glob)
   ** Mercurial Distributed SCM (*) (glob)
   ** Extensions loaded: throw
+
+Restore HGRCPATH
+
+  $ HGRCPATH=$ORGHGRCPATH
+  $ export HGRCPATH
+
+Commands handling multiple repositories at a time should invoke only
+"reposetup()" of extensions enabling in the target repository.
+
+  $ mkdir reposetup-test
+  $ cd reposetup-test
+
+  $ cat > $TESTTMP/reposetuptest.py <<EOF
+  > from mercurial import extensions
+  > def reposetup(ui, repo):
+  >     ui.write('reposetup() for %s\n' % (repo.root))
+  > EOF
+  $ hg init src
+  $ echo a > src/a
+  $ hg -R src commit -Am '#0 at src/a'
+  adding a
+  $ echo '[extensions]' >> src/.hg/hgrc
+  $ echo '# enable extension locally' >> src/.hg/hgrc
+  $ echo "reposetuptest = $TESTTMP/reposetuptest.py" >> src/.hg/hgrc
+  $ hg -R src status
+  reposetup() for $TESTTMP/reposetup-test/src
+
+  $ hg clone -U src clone-dst1
+  reposetup() for $TESTTMP/reposetup-test/src
+  $ hg init push-dst1
+  $ hg -q -R src push push-dst1
+  reposetup() for $TESTTMP/reposetup-test/src
+  $ hg init pull-src1
+  $ hg -q -R pull-src1 pull src
+  reposetup() for $TESTTMP/reposetup-test/src
+
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo '# disable extension globally and explicitly' >> $HGRCPATH
+  $ echo 'reposetuptest = !' >> $HGRCPATH
+  $ hg clone -U src clone-dst2
+  reposetup() for $TESTTMP/reposetup-test/src
+  $ hg init push-dst2
+  $ hg -q -R src push push-dst2
+  reposetup() for $TESTTMP/reposetup-test/src
+  $ hg init pull-src2
+  $ hg -q -R pull-src2 pull src
+  reposetup() for $TESTTMP/reposetup-test/src
+
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo '# enable extension globally' >> $HGRCPATH
+  $ echo "reposetuptest = $TESTTMP/reposetuptest.py" >> $HGRCPATH
+  $ hg clone -U src clone-dst3
+  reposetup() for $TESTTMP/reposetup-test/src
+  reposetup() for $TESTTMP/reposetup-test/clone-dst3
+  $ hg init push-dst3
+  reposetup() for $TESTTMP/reposetup-test/push-dst3
+  $ hg -q -R src push push-dst3
+  reposetup() for $TESTTMP/reposetup-test/src
+  reposetup() for $TESTTMP/reposetup-test/push-dst3
+  $ hg init pull-src3
+  reposetup() for $TESTTMP/reposetup-test/pull-src3
+  $ hg -q -R pull-src3 pull src
+  reposetup() for $TESTTMP/reposetup-test/pull-src3
+  reposetup() for $TESTTMP/reposetup-test/src
+
+  $ echo '[extensions]' >> src/.hg/hgrc
+  $ echo '# disable extension locally' >> src/.hg/hgrc
+  $ echo 'reposetuptest = !' >> src/.hg/hgrc
+  $ hg clone -U src clone-dst4
+  reposetup() for $TESTTMP/reposetup-test/clone-dst4
+  $ hg init push-dst4
+  reposetup() for $TESTTMP/reposetup-test/push-dst4
+  $ hg -q -R src push push-dst4
+  reposetup() for $TESTTMP/reposetup-test/push-dst4
+  $ hg init pull-src4
+  reposetup() for $TESTTMP/reposetup-test/pull-src4
+  $ hg -q -R pull-src4 pull src
+  reposetup() for $TESTTMP/reposetup-test/pull-src4
+
+disabling in command line overlays with all configuration
+  $ hg --config extensions.reposetuptest=! clone -U src clone-dst5
+  $ hg --config extensions.reposetuptest=! init push-dst5
+  $ hg --config extensions.reposetuptest=! -q -R src push push-dst5
+  $ hg --config extensions.reposetuptest=! init pull-src5
+  $ hg --config extensions.reposetuptest=! -q -R pull-src5 pull src
+
+  $ echo '[extensions]' >> $HGRCPATH
+  $ echo '# disable extension globally and explicitly' >> $HGRCPATH
+  $ echo 'reposetuptest = !' >> $HGRCPATH
+  $ hg init parent
+  $ hg init parent/sub1
+  $ echo 1 > parent/sub1/1
+  $ hg -R parent/sub1 commit -Am '#0 at parent/sub1'
+  adding 1
+  $ hg init parent/sub2
+  $ hg init parent/sub2/sub21
+  $ echo 21 > parent/sub2/sub21/21
+  $ hg -R parent/sub2/sub21 commit -Am '#0 at parent/sub2/sub21'
+  adding 21
+  $ cat > parent/sub2/.hgsub <<EOF
+  > sub21 = sub21
+  > EOF
+  $ hg -R parent/sub2 commit -Am '#0 at parent/sub2'
+  adding .hgsub
+  $ hg init parent/sub3
+  $ echo 3 > parent/sub3/3
+  $ hg -R parent/sub3 commit -Am '#0 at parent/sub3'
+  adding 3
+  $ cat > parent/.hgsub <<EOF
+  > sub1 = sub1
+  > sub2 = sub2
+  > sub3 = sub3
+  > EOF
+  $ hg -R parent commit -Am '#0 at parent'
+  adding .hgsub
+  $ echo '[extensions]' >> parent/.hg/hgrc
+  $ echo '# enable extension locally' >> parent/.hg/hgrc
+  $ echo "reposetuptest = $TESTTMP/reposetuptest.py" >> parent/.hg/hgrc
+  $ cp parent/.hg/hgrc parent/sub2/.hg/hgrc
+  $ hg -R parent status -S -A
+  reposetup() for $TESTTMP/reposetup-test/parent
+  reposetup() for $TESTTMP/reposetup-test/parent/sub2
+  C .hgsub
+  C .hgsubstate
+  C sub1/1
+  C sub2/.hgsub
+  C sub2/.hgsubstate
+  C sub2/sub21/21
+  C sub3/3
+
+  $ cd ..