[Zope-Checkins] CVS: Packages/ZConfig - loader.py:1.15
Fred L. Drake, Jr.
fred@zope.com
Wed, 15 Jan 2003 14:18:13 -0500
Update of /cvs-repository/Packages/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv21083
Modified Files:
loader.py
Log Message:
Make sure opening a resource that does not exist consistently raises the
same exception. Includes test.
=== Packages/ZConfig/loader.py 1.14 => 1.15 ===
--- Packages/ZConfig/loader.py:1.14 Tue Jan 14 10:16:55 2003
+++ Packages/ZConfig/loader.py Wed Jan 15 14:17:41 2003
@@ -78,11 +78,19 @@
# change and provide the cached resource when the remote
# resource is not accessible.
url = str(url)
- file = urllib2.urlopen(url)
+ try:
+ file = urllib2.urlopen(url)
+ except (IOError, OSError), e:
+ # Python 2.1 raises a different error from Python 2.2+,
+ # so we catch both to make sure we detect the situation.
+ error = ZConfig.ConfigurationError("error opening resource %s: %s"
+ % (url, str(e)))
+ error.url = url
+ raise error
return self.createResource(file, url)
def normalizeURL(self, url):
- if os.path.exists(url):
+ if os.path.exists(url) or ":" not in url:
url = "file://" + urllib.pathname2url(os.path.abspath(url))
url, fragment = ZConfig.url.urldefrag(url)
if fragment:
@@ -186,6 +194,7 @@
parent.addSection(type, name, sectvalue)
def includeConfiguration(self, section, url, defines):
+ url = self.normalizeURL(url)
r = self.openResource(url)
self._parse_resource(section, r, defines)