diff options
author | John Szakmeister <john@szakmeister.net> | 2015-11-28 05:15:12 -0500 |
---|---|---|
committer | John Szakmeister <john@szakmeister.net> | 2015-11-28 05:15:12 -0500 |
commit | 05882fa39ec2f61582768a7df922e88ed5451c6f (patch) | |
tree | 2f449135afad18091671131a9a821b207fd656ca | |
parent | c303c5ddf7f443576018c6369ef7e14e6bd96399 (diff) | |
parent | 16df8f4901b3328691263573eae1f1f94874f19b (diff) | |
download | nose-05882fa39ec2f61582768a7df922e88ed5451c6f.tar.gz |
Merge an amended version of #876.
Ensure idfile is closed if an error occurs.
-rw-r--r-- | nose/plugins/testid.py | 52 |
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) |