[svn] commit: r2532 - in /branches/trac284/src: bin/cmdctl/tests/cmdctl_test.py lib/config/testdata/spec28.spec lib/python/isc/config/cfgmgr.py lib/python/isc/config/module_spec.py lib/python/isc/config/tests/module_spec_test.py
BIND 10 source code commits
bind10-changes at lists.isc.org
Mon Jul 19 09:33:15 UTC 2010
Author: jelte
Date: Mon Jul 19 09:33:15 2010
New Revision: 2532
Log:
addressed comments from trac review
Added:
branches/trac284/src/lib/config/testdata/spec28.spec
Modified:
branches/trac284/src/bin/cmdctl/tests/cmdctl_test.py
branches/trac284/src/lib/python/isc/config/cfgmgr.py
branches/trac284/src/lib/python/isc/config/module_spec.py
branches/trac284/src/lib/python/isc/config/tests/module_spec_test.py
Modified: branches/trac284/src/bin/cmdctl/tests/cmdctl_test.py
==============================================================================
--- branches/trac284/src/bin/cmdctl/tests/cmdctl_test.py (original)
+++ branches/trac284/src/bin/cmdctl/tests/cmdctl_test.py Mon Jul 19 09:33:15 2010
@@ -17,6 +17,7 @@
import unittest
import socket
import tempfile
+import sys
from cmdctl import *
SPEC_FILE_PATH = '..' + os.sep
@@ -279,7 +280,6 @@
rcode, reply = self.handler._handle_post_request()
self.assertEqual(http.client.BAD_REQUEST, rcode)
-import sys
class MyCommandControl(CommandControl):
def _get_modules_specification(self):
return {}
Modified: branches/trac284/src/lib/python/isc/config/cfgmgr.py
==============================================================================
--- branches/trac284/src/lib/python/isc/config/cfgmgr.py (original)
+++ branches/trac284/src/lib/python/isc/config/cfgmgr.py Mon Jul 19 09:33:15 2010
@@ -22,7 +22,6 @@
import isc
import signal
import ast
-import pprint
import os
import copy
import tempfile
@@ -94,8 +93,6 @@
dir=self.data_path,
delete=False)
filename = file.name
- #pp = pprint.PrettyPrinter(indent=4)
- #s = pp.pformat(self.data)
file.write(json.dumps(self.data))
file.write("\n")
file.close()
Modified: branches/trac284/src/lib/python/isc/config/module_spec.py
==============================================================================
--- branches/trac284/src/lib/python/isc/config/module_spec.py (original)
+++ branches/trac284/src/lib/python/isc/config/module_spec.py Mon Jul 19 09:33:15 2010
@@ -22,6 +22,7 @@
"""
import json
+import sys
import isc.cc.data
@@ -34,27 +35,29 @@
file"""
pass
-import sys
def module_spec_from_file(spec_file, check = True):
"""Returns a ModuleSpec object defined by the file at spec_file.
If check is True, the contents are verified. If there is an error
- in those contents, a ModuleSpecError is raised."""
+ in those contents, a ModuleSpecError is raised.
+ A ModuleSpecError is also raised if the file cannot be read, or
+ if it is not valid JSON."""
module_spec = None
- if hasattr(spec_file, 'read'):
-
- json_str = spec_file.read(-1)
- module_spec = json.loads(json_str)
- elif type(spec_file) == str:
- file = open(spec_file)
- json_str = file.read(-1)
- try:
+ try:
+ if hasattr(spec_file, 'read'):
+ json_str = spec_file.read()
module_spec = json.loads(json_str)
- except Exception as err:
- module_spec = {}
-
- file.close()
- else:
- raise ModuleSpecError("spec_file not a str or file-like object")
+ elif type(spec_file) == str:
+ file = open(spec_file)
+ json_str = file.read(-1)
+ module_spec = json.loads(json_str)
+ file.close()
+ else:
+ raise ModuleSpecError("spec_file not a str or file-like object")
+ except ValueError as ve:
+ raise ModuleSpecError("JSON parse error: " + str(ve))
+ except IOError as ioe:
+ raise ModuleSpecError("JSON read error: " + str(ioe))
+
if 'module_spec' not in module_spec:
raise ModuleSpecError("Data definition has no module_spec element")
Modified: branches/trac284/src/lib/python/isc/config/tests/module_spec_test.py
==============================================================================
--- branches/trac284/src/lib/python/isc/config/tests/module_spec_test.py (original)
+++ branches/trac284/src/lib/python/isc/config/tests/module_spec_test.py Mon Jul 19 09:33:15 2010
@@ -54,6 +54,13 @@
def test_open_bad_file_obj(self):
self.assertRaises(ModuleSpecError, isc.config.module_spec_from_file, 1)
+ # contains single quotes which json parser does not accept
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec_from_file, self.spec_file("spec28.spec"), False)
+ my_spec_file = open(self.spec_file("spec28.spec"))
+ self.assertRaises(ModuleSpecError, isc.config.module_spec_from_file, my_spec_file, False)
+
+ self.assertRaises(ModuleSpecError, isc.config.module_spec_from_file, self.spec_file("does_not_exist"), False)
def test_bad_specfiles(self):
self.assertRaises(ModuleSpecError, self.read_spec_file, "spec3.spec")
More information about the bind10-changes
mailing list