Merge lp:~ricardokirkner/configglue/warn-if-error-while-reading into lp:configglue

Proposed by Ricardo Kirkner
Status: Merged
Approved by: Ricardo Kirkner
Approved revision: 82
Merged at revision: 82
Proposed branch: lp:~ricardokirkner/configglue/warn-if-error-while-reading
Merge into: lp:configglue
Diff against target: 75 lines (+19/-7)
2 files modified
configglue/parser.py (+3/-0)
configglue/tests/test_parser.py (+16/-7)
To merge this branch: bzr merge lp:~ricardokirkner/configglue/warn-if-error-while-reading
Reviewer Review Type Date Requested Status
Ricardo Kirkner Approve
Review via email: mp+69728@code.launchpad.net

Commit message

log a WARNING when a file could not be read

Description of the change

When reading config files, log a WARNING when a file could not be read.

To post a comment you must log in.
Revision history for this message
Ricardo Kirkner (ricardokirkner) wrote :

Make tarmac happy.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'configglue/parser.py'
2--- configglue/parser.py 2011-07-28 01:30:57 +0000
3+++ configglue/parser.py 2011-07-28 23:13:23 +0000
4@@ -17,6 +17,7 @@
5 import codecs
6 import collections
7 import copy
8+import logging
9 import os
10 import re
11 import string
12@@ -254,6 +255,8 @@
13 try:
14 fp = codecs.open(path, 'r', CONFIG_FILE_ENCODING)
15 except IOError:
16+ logging.warn(
17+ 'File {0} could not be read. Skipping.'.format(path))
18 continue
19 self._read(fp, path, already_read=already_read)
20 fp.close()
21
22=== modified file 'configglue/tests/test_parser.py'
23--- configglue/tests/test_parser.py 2011-07-28 01:31:18 +0000
24+++ configglue/tests/test_parser.py 2011-07-28 23:13:23 +0000
25@@ -15,6 +15,7 @@
26 #
27 ###############################################################################
28
29+import logging
30 import os
31 import shutil
32 import tempfile
33@@ -68,9 +69,16 @@
34 os.write(fd, '[__main__]\nfoo=bar\n')
35 os.close(fd)
36
37+ # disable logging output during test
38+ self.level = logging.getLogger().level
39+ logging.disable('ERROR')
40+
41 def tearDown(self):
42 os.remove(self.name)
43
44+ # re-enable original logging level
45+ logging.getLogger().setLevel(self.level)
46+
47 def test_basic_include(self):
48 config = StringIO('[__main__]\nincludes=%s' % self.name)
49 parser = SchemaConfigParser(self.schema)
50@@ -86,17 +94,18 @@
51 expected_location = self.name
52 self.assertEqual(expected_location, location)
53
54- def test_read_ioerror(self):
55- def mock_open(filename, mode='r', encoding='ascii'):
56- raise IOError
57- _open = __builtins__['open']
58- __builtins__['open'] = mock_open
59+ @patch('configglue.parser.logging.warn')
60+ @patch('configglue.parser.codecs.open')
61+ def test_read_ioerror(self, mock_open, mock_warn):
62+ mock_open.side_effect = IOError
63
64 parser = SchemaConfigParser(self.schema)
65 read_ok = parser.read(self.name)
66+
67 self.assertEqual(read_ok, [])
68-
69- __builtins__['open'] = _open
70+ self.assertEqual(mock_warn.call_args_list,
71+ [(("File {0} could not be read. Skipping.".format(self.name),),
72+ {})])
73
74 def test_relative_include(self):
75 """Test parser include files using relative paths."""

Subscribers

People subscribed via source and target branches