# HG changeset patch # User Martin Geisler # Date 2009-12-12 15:46:16 # Node ID 7cdd2a7db2c2a9499c8e58926a0ebcb2b500ba15 # Parent fb45c1e4396f277e3f1be487a3e813fd12bcae90 config: raise ConfigError on non-existing include files Before, an %include directive for a non-existing file resulted in an IOError and a traceback. diff --git a/mercurial/config.py b/mercurial/config.py --- a/mercurial/config.py +++ b/mercurial/config.py @@ -100,7 +100,13 @@ class config(object): base = os.path.dirname(src) inc = os.path.normpath(os.path.join(base, inc)) if include: - include(inc, remap=remap, sections=sections) + try: + include(inc, remap=remap, sections=sections) + except IOError, inst: + msg = _("config error at %s:%d: " + "cannot include %s (%s)") \ + % (src, line, inc, inst.strerror) + raise error.ConfigError(msg) continue if emptyre.match(l): continue diff --git a/tests/test-hgrc b/tests/test-hgrc --- a/tests/test-hgrc +++ b/tests/test-hgrc @@ -22,3 +22,6 @@ cd .. echo '[foo]' >> $HGRCPATH echo ' x = y' >> $HGRCPATH hg version 2>&1 | sed -e "s|$HGRCPATH|\$HGRCPATH|" + +echo '%include /no-such-file' > $HGRCPATH +hg version 2>&1 | sed -e "s|$HGRCPATH|\$HGRCPATH|" diff --git a/tests/test-hgrc.out b/tests/test-hgrc.out --- a/tests/test-hgrc.out +++ b/tests/test-hgrc.out @@ -11,3 +11,4 @@ defaults.tag=-d "0 0" paths.default=.../foo%bar ui.slash=True hg: config error at $HGRCPATH:8: ' x = y' +hg: config error at $HGRCPATH:1: cannot include /no-such-file (No such file or directory)