--- a/tests/test-requires.t Sat Sep 21 21:33:29 2013 +0900
+++ b/tests/test-requires.t Sat Sep 21 21:33:29 2013 +0900
@@ -15,5 +15,55 @@
$ hg tip
abort: unknown repository format: requires features 'indoor-pool', 'outdoor-pool' (upgrade Mercurial)!
[255]
+ $ cd ..
+
+Test checking between features supported locally and ones required in
+another repository of push/pull/clone on localhost:
+
+ $ mkdir supported-locally
+ $ cd supported-locally
+
+ $ hg init supported
+ $ echo a > supported/a
+ $ hg -R supported commit -Am '#0 at supported'
+ adding a
+
+ $ echo 'featuresetup-test' >> supported/.hg/requires
+ $ cat > $TESTTMP/supported-locally/supportlocally.py <<EOF
+ > from mercurial import localrepo, extensions
+ > def featuresetup(ui, supported):
+ > for name, module in extensions.extensions(ui):
+ > if __name__ == module.__name__:
+ > # support specific feature locally
+ > supported |= set(['featuresetup-test'])
+ > return
+ > def uisetup(ui):
+ > localrepo.localrepository.featuresetupfuncs.add(featuresetup)
+ > EOF
+ $ cat > supported/.hg/hgrc <<EOF
+ > [extensions]
+ > # enable extension locally
+ > supportlocally = $TESTTMP/supported-locally/supportlocally.py
+ > EOF
+ $ hg -R supported status
+
+ $ hg init push-dst
+ $ hg -R supported push push-dst
+ pushing to push-dst
+ abort: required features are not supported in the destination: featuresetup-test
+ [255]
+
+ $ hg init pull-src
+ $ hg -R pull-src pull supported
+ pulling from supported
+ abort: required features are not supported in the destination: featuresetup-test
+ [255]
+
+ $ hg clone supported clone-dst
+ abort: unknown repository format: requires features 'featuresetup-test' (upgrade Mercurial)!
+ [255]
+ $ hg clone --pull supported clone-dst
+ abort: required features are not supported in the destination: featuresetup-test
+ [255]
$ cd ..