configglue team mailing list archive
-
configglue team
-
Mailing list archive
-
Message #00322
[Merge] lp:~ricardokirkner/configglue/warn-if-error-while-reading into lp:configglue
Ricardo Kirkner has proposed merging lp:~ricardokirkner/configglue/warn-if-error-while-reading into lp:configglue.
Requested reviews:
Configglue developers (configglue)
For more details, see:
https://code.launchpad.net/~ricardokirkner/configglue/warn-if-error-while-reading/+merge/69728
When reading config files, log a WARNING when a file could not be read.
--
https://code.launchpad.net/~ricardokirkner/configglue/warn-if-error-while-reading/+merge/69728
Your team Configglue developers is requested to review the proposed merge of lp:~ricardokirkner/configglue/warn-if-error-while-reading into lp:configglue.
=== modified file 'configglue/parser.py'
--- configglue/parser.py 2011-07-28 01:30:57 +0000
+++ configglue/parser.py 2011-07-28 23:13:23 +0000
@@ -17,6 +17,7 @@
import codecs
import collections
import copy
+import logging
import os
import re
import string
@@ -254,6 +255,8 @@
try:
fp = codecs.open(path, 'r', CONFIG_FILE_ENCODING)
except IOError:
+ logging.warn(
+ 'File {0} could not be read. Skipping.'.format(path))
continue
self._read(fp, path, already_read=already_read)
fp.close()
=== modified file 'configglue/tests/test_parser.py'
--- configglue/tests/test_parser.py 2011-07-28 01:31:18 +0000
+++ configglue/tests/test_parser.py 2011-07-28 23:13:23 +0000
@@ -15,6 +15,7 @@
#
###############################################################################
+import logging
import os
import shutil
import tempfile
@@ -68,9 +69,16 @@
os.write(fd, '[__main__]\nfoo=bar\n')
os.close(fd)
+ # disable logging output during test
+ self.level = logging.getLogger().level
+ logging.disable('ERROR')
+
def tearDown(self):
os.remove(self.name)
+ # re-enable original logging level
+ logging.getLogger().setLevel(self.level)
+
def test_basic_include(self):
config = StringIO('[__main__]\nincludes=%s' % self.name)
parser = SchemaConfigParser(self.schema)
@@ -86,17 +94,18 @@
expected_location = self.name
self.assertEqual(expected_location, location)
- def test_read_ioerror(self):
- def mock_open(filename, mode='r', encoding='ascii'):
- raise IOError
- _open = __builtins__['open']
- __builtins__['open'] = mock_open
+ @patch('configglue.parser.logging.warn')
+ @patch('configglue.parser.codecs.open')
+ def test_read_ioerror(self, mock_open, mock_warn):
+ mock_open.side_effect = IOError
parser = SchemaConfigParser(self.schema)
read_ok = parser.read(self.name)
+
self.assertEqual(read_ok, [])
-
- __builtins__['open'] = _open
+ self.assertEqual(mock_warn.call_args_list,
+ [(("File {0} could not be read. Skipping.".format(self.name),),
+ {})])
def test_relative_include(self):
"""Test parser include files using relative paths."""
Follow ups