# HG changeset patch
# User Augie Fackler <au...@google.com>
# Date 1496757796 14400
#      Tue Jun 06 10:03:16 2017 -0400
# Node ID bf999f47f7deff5a53e4eea18c22465ec738dd31
# Parent  04c19c8082410049465e2cdc510e24801530c94b
tests: add test demonstrating how broken third-party extensions can get

I intend to fix this, but will do the fix as a separate change to make
the behavior change obvious. This was inspired by some users having
the patience diff extension, which broke when we moved bdiff.so so
thoroughly the users can't even run 'hg debuginstall'.

diff --git a/tests/test-extension.t b/tests/test-extension.t
--- a/tests/test-extension.t
+++ b/tests/test-extension.t
@@ -1606,3 +1606,28 @@ Show deprecation warning for the use of 
   $ hg --config extensions.nonregistrar=`pwd`/nonregistrar.py version > 
/dev/null
   devel-warn: cmdutil.command is deprecated, use registrar.command to register 
'foo'
   (compatibility will be dropped after Mercurial-4.6, update your code.) * 
(glob)
+
+Make sure a broken uisetup doesn't globally break hg:
+  $ cat > baduisetup.py <<EOF
+  > from mercurial import (
+  >     bdiff,
+  >     extensions,
+  > )
+  > 
+  > def blockswrapper(orig, *args, **kwargs):
+  >     return orig(*args, **kwargs)
+  > 
+  > def uisetup(ui):
+  >     extensions.wrapfunction(bdiff, 'blocks', blockswrapper)
+  > EOF
+  $ cat >> $HGRCPATH <<EOF
+  > [extensions]
+  > baduisetup = $PWD/baduisetup.py
+  > EOF
+
+Broken: an extension that triggers the import of bdiff during uisetup
+can't be easily debugged:
+  $ hg version
+  abort: No module named bdiff!
+  (did you forget to compile extensions?)
+  [255]
_______________________________________________
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel

Reply via email to