summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Szakmeister <john@szakmeister.net>2015-11-28 05:15:12 -0500
committerJohn Szakmeister <john@szakmeister.net>2015-11-28 05:15:12 -0500
commit05882fa39ec2f61582768a7df922e88ed5451c6f (patch)
tree2f449135afad18091671131a9a821b207fd656ca
parentc303c5ddf7f443576018c6369ef7e14e6bd96399 (diff)
parent16df8f4901b3328691263573eae1f1f94874f19b (diff)
downloadnose-05882fa39ec2f61582768a7df922e88ed5451c6f.tar.gz
Merge an amended version of #876.
Ensure idfile is closed if an error occurs.
-rw-r--r--nose/plugins/testid.py52
1 files changed, 27 insertions, 25 deletions
diff --git a/nose/plugins/testid.py b/nose/plugins/testid.py
index ae8119b..894608d 100644
--- a/nose/plugins/testid.py
+++ b/nose/plugins/testid.py
@@ -178,31 +178,33 @@ class TestId(Plugin):
log.debug('ltfn %s %s', names, module)
try:
fh = open(self.idfile, 'rb')
- data = load(fh)
- if 'ids' in data:
- self.ids = data['ids']
- self.failed = data['failed']
- self.source_names = data['source_names']
- else:
- # old ids field
- self.ids = data
- self.failed = []
- self.source_names = names
- if self.ids:
- self.id = max(self.ids) + 1
- self.tests = dict(list(zip(list(self.ids.values()), list(self.ids.keys()))))
- else:
- self.id = 1
- log.debug(
- 'Loaded test ids %s tests %s failed %s sources %s from %s',
- self.ids, self.tests, self.failed, self.source_names,
- self.idfile)
- fh.close()
- except ValueError, e:
- # load() may throw a ValueError when reading the ids file, if it
- # was generated with a newer version of Python than we are currently
- # running.
- log.debug('Error loading %s : %s', self.idfile, str(e))
+ try:
+ data = load(fh)
+ if 'ids' in data:
+ self.ids = data['ids']
+ self.failed = data['failed']
+ self.source_names = data['source_names']
+ else:
+ # old ids field
+ self.ids = data
+ self.failed = []
+ self.source_names = names
+ if self.ids:
+ self.id = max(self.ids) + 1
+ self.tests = dict(list(zip(list(self.ids.values()), list(self.ids.keys()))))
+ else:
+ self.id = 1
+ log.debug(
+ 'Loaded test ids %s tests %s failed %s sources %s from %s',
+ self.ids, self.tests, self.failed, self.source_names,
+ self.idfile)
+ except ValueError, e:
+ # load() may throw a ValueError when reading the ids file, if it
+ # was generated with a newer version of Python than we are currently
+ # running.
+ log.debug('Error loading %s : %s', self.idfile, str(e))
+ finally:
+ fh.close()
except IOError:
log.debug('IO error reading %s', self.idfile)