summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Collins <robertc@robertcollins.net>2015-07-13 09:59:07 +1200
committerRobert Collins <robertc@robertcollins.net>2015-07-13 09:59:07 +1200
commit594f3d2986af203691a83cb22f14d67c2dc34fd6 (patch)
tree96753cc409dad4fe69e74972a64425acd976a8f4
parentd30ab4028b50467cf435f66e555bf77f07be91b0 (diff)
downloadtestrepository-594f3d2986af203691a83cb22f14d67c2dc34fd6.tar.gz
Closes #1409936: Wrong exception on read errors.
Patch from Matthew Treinish, adapted by me.
-rw-r--r--NEWS3
-rw-r--r--testrepository/repository/file.py1
-rw-r--r--testrepository/tests/repository/test_file.py8
3 files changed, 12 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index d366398..4d86f71 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,9 @@ CHANGES
* pbr is now used to manage build and release tooling.
(Monty Taylor, Robert Collins)
+* Unexpected errors reading streams from a file repository now propogate the
+ correct exception. (Matthew Treinish, Robert Collins)
+
0.0.20
++++++
diff --git a/testrepository/repository/file.py b/testrepository/repository/file.py
index 1ab3a87..02fcf05 100644
--- a/testrepository/repository/file.py
+++ b/testrepository/repository/file.py
@@ -133,6 +133,7 @@ class Repository(AbstractRepository):
except IOError as e:
if e.errno == errno.ENOENT:
raise KeyError("No such run.")
+ raise
return _DiskRun(run_id, run_subunit_content)
def _get_inserter(self, partial):
diff --git a/testrepository/tests/repository/test_file.py b/testrepository/tests/repository/test_file.py
index eb16764..2409e53 100644
--- a/testrepository/tests/repository/test_file.py
+++ b/testrepository/tests/repository/test_file.py
@@ -100,3 +100,11 @@ class TestFileRepository(ResourcedTestCase):
open(os.path.join(repo.base, 'next-stream'), 'wb').close()
self.assertThat(repo.count, Raises(
MatchesException(ValueError("Corrupt next-stream file: ''"))))
+
+ def test_get_test_run_unexpected_ioerror_errno(self):
+ repo = self.useFixture(FileRepositoryFixture(self)).repo
+ inserter = repo.get_inserter()
+ inserter.startTestRun()
+ inserter.stopTestRun()
+ os.chmod(os.path.join(repo.base, '0'), 0000)
+ self.assertRaises(IOError, repo.get_test_run, '0')