From f5d10369d7900ccef753ad44280560d906080bf3 Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Mon, 13 Jul 2015 09:59:07 +1200 Subject: Closes #1409936: Wrong exception on read errors. Patch from Matthew Treinish, adapted by me. --- NEWS | 3 +++ testrepository/repository/file.py | 1 + testrepository/tests/repository/test_file.py | 8 ++++++++ 3 files changed, 12 insertions(+) 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') -- cgit v1.2.1