Mercurial > hg
comparison tests/test-extension.t @ 33939:9d5d040160e6
tests: move baduisetup test inside "#if demandimport"
The test case depends on the failure happening not at import time, but
at uisetup() time, so it doesn't make sense when demandimport is
disabled.
There was already a section for testing demandimport stuff, so I moved
it inside that existing section. As part of the move, I enabled the
extension using '--config' so subsequent tests don't get the bad
extension enabled.
Differential Revision: https://phab.mercurial-scm.org/D526
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Sat, 26 Aug 2017 16:00:07 -0700 |
parents | 86aca74a063b |
children | 0e0ac8f09048 |
comparison
equal
deleted
inserted
replaced
33938:9180f8f593f3 | 33939:9d5d040160e6 |
---|---|
508 > pass # intentional failure | 508 > pass # intentional failure |
509 > EOF | 509 > EOF |
510 | 510 |
511 $ (PYTHONPATH=${PYTHONPATH}${PATHSEP}${TESTTMP}; hg --config extensions.checkrelativity=$TESTTMP/checkrelativity.py checkrelativity) | 511 $ (PYTHONPATH=${PYTHONPATH}${PATHSEP}${TESTTMP}; hg --config extensions.checkrelativity=$TESTTMP/checkrelativity.py checkrelativity) |
512 | 512 |
513 Make sure a broken uisetup doesn't globally break hg: | |
514 $ cat > $TESTTMP/baduisetup.py <<EOF | |
515 > from mercurial import ( | |
516 > bdiff, | |
517 > extensions, | |
518 > ) | |
519 > | |
520 > def blockswrapper(orig, *args, **kwargs): | |
521 > return orig(*args, **kwargs) | |
522 > | |
523 > def uisetup(ui): | |
524 > extensions.wrapfunction(bdiff, 'blocks', blockswrapper) | |
525 > EOF | |
526 | |
527 Even though the extension fails during uisetup, hg is still basically usable: | |
528 $ hg --config extensions.baduisetup=$TESTTMP/baduisetup.py version | |
529 \*\*\* failed to set up extension baduisetup: No module named (mercurial\.)?bdiff (re) | |
530 Mercurial Distributed SCM (version *) (glob) | |
531 (see https://mercurial-scm.org for more information) | |
532 | |
533 Copyright (C) 2005-2017 Matt Mackall and others | |
534 This is free software; see the source for copying conditions. There is NO | |
535 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
536 | |
537 $ hg --config extensions.baduisetup=$TESTTMP/baduisetup.py version --traceback | |
538 Traceback (most recent call last): | |
539 File "*/mercurial/extensions.py", line *, in _runuisetup (glob) | |
540 uisetup(ui) | |
541 File "$TESTTMP/baduisetup.py", line 10, in uisetup | |
542 extensions.wrapfunction(bdiff, 'blocks', blockswrapper) | |
543 File "*/mercurial/extensions.py", line *, in wrapfunction (glob) | |
544 origfn = getattr(container, funcname) | |
545 File "*/hgdemandimport/demandimportpy2.py", line *, in __getattr__ (glob) | |
546 self._load() | |
547 File "*/hgdemandimport/demandimportpy2.py", line *, in _load (glob) | |
548 mod = _hgextimport(_origimport, head, globals, locals, None, level) | |
549 File "*/hgdemandimport/demandimportpy2.py", line *, in _hgextimport (glob) | |
550 return importfunc(name, globals, *args, **kwargs) | |
551 ImportError: No module named (mercurial\.)?bdiff (re) | |
552 \*\*\* failed to set up extension baduisetup: No module named (mercurial\.)?bdiff (re) | |
553 Mercurial Distributed SCM (version *) (glob) | |
554 (see https://mercurial-scm.org for more information) | |
555 | |
556 Copyright (C) 2005-2017 Matt Mackall and others | |
557 This is free software; see the source for copying conditions. There is NO | |
558 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
559 | |
513 #endif | 560 #endif |
514 | 561 |
515 $ cd .. | 562 $ cd .. |
516 | 563 |
517 hide outer repo | 564 hide outer repo |
1660 > EOF | 1707 > EOF |
1661 | 1708 |
1662 $ hg --config extensions.nonregistrar=`pwd`/nonregistrar.py version > /dev/null | 1709 $ hg --config extensions.nonregistrar=`pwd`/nonregistrar.py version > /dev/null |
1663 devel-warn: cmdutil.command is deprecated, use registrar.command to register 'foo' | 1710 devel-warn: cmdutil.command is deprecated, use registrar.command to register 'foo' |
1664 (compatibility will be dropped after Mercurial-4.6, update your code.) * (glob) | 1711 (compatibility will be dropped after Mercurial-4.6, update your code.) * (glob) |
1665 | |
1666 Make sure a broken uisetup doesn't globally break hg: | |
1667 $ cat > $TESTTMP/baduisetup.py <<EOF | |
1668 > from mercurial import ( | |
1669 > bdiff, | |
1670 > extensions, | |
1671 > ) | |
1672 > | |
1673 > def blockswrapper(orig, *args, **kwargs): | |
1674 > return orig(*args, **kwargs) | |
1675 > | |
1676 > def uisetup(ui): | |
1677 > extensions.wrapfunction(bdiff, 'blocks', blockswrapper) | |
1678 > EOF | |
1679 $ cat >> $HGRCPATH <<EOF | |
1680 > [extensions] | |
1681 > baduisetup = $TESTTMP/baduisetup.py | |
1682 > EOF | |
1683 | |
1684 Even though the extension fails during uisetup, hg is still basically usable: | |
1685 $ hg version | |
1686 \*\*\* failed to set up extension baduisetup: No module named (mercurial\.)?bdiff (re) | |
1687 Mercurial Distributed SCM (version *) (glob) | |
1688 (see https://mercurial-scm.org for more information) | |
1689 | |
1690 Copyright (C) 2005-2017 Matt Mackall and others | |
1691 This is free software; see the source for copying conditions. There is NO | |
1692 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | |
1693 | |
1694 $ hg version --traceback | |
1695 Traceback (most recent call last): | |
1696 File "*/mercurial/extensions.py", line *, in _runuisetup (glob) | |
1697 uisetup(ui) | |
1698 File "$TESTTMP/baduisetup.py", line 10, in uisetup | |
1699 extensions.wrapfunction(bdiff, 'blocks', blockswrapper) | |
1700 File "*/mercurial/extensions.py", line *, in wrapfunction (glob) | |
1701 origfn = getattr(container, funcname) | |
1702 File "*/hgdemandimport/demandimportpy2.py", line *, in __getattr__ (glob) | |
1703 self._load() | |
1704 File "*/hgdemandimport/demandimportpy2.py", line *, in _load (glob) | |
1705 mod = _hgextimport(_origimport, head, globals, locals, None, level) | |
1706 File "*/hgdemandimport/demandimportpy2.py", line *, in _hgextimport (glob) | |
1707 return importfunc(name, globals, *args, **kwargs) | |
1708 ImportError: No module named (mercurial\.)?bdiff (re) | |
1709 \*\*\* failed to set up extension baduisetup: No module named (mercurial\.)?bdiff (re) | |
1710 Mercurial Distributed SCM (version *) (glob) | |
1711 (see https://mercurial-scm.org for more information) | |
1712 | |
1713 Copyright (C) 2005-2017 Matt Mackall and others | |
1714 This is free software; see the source for copying conditions. There is NO | |
1715 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |