
commit 77ac27cbe057e9411c28d0a8be814046465d335b Author: Damian Johnson <atagar@torproject.org> Date: Sun Mar 11 15:20:50 2012 -0700 Integ test for files skipped due to permissions Adding an integration test that listens for a file which is skipped because the user lacks read permissions. --- test/integ/descriptor/reader.py | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) diff --git a/test/integ/descriptor/reader.py b/test/integ/descriptor/reader.py index 7e5955d..fa2c7b5 100644 --- a/test/integ/descriptor/reader.py +++ b/test/integ/descriptor/reader.py @@ -250,6 +250,36 @@ class TestDescriptorReader(unittest.TestCase): if os.path.exists(test_path): os.remove(test_path) + def test_skip_listener_read_failure(self): + """ + Listens for a file that's skipped because we lack read permissions. + """ + + test_path = os.path.join(test.runner.get_runner().get_test_dir(), "secret_file") + + with open(test_path, "w") as test_file: + test_file.write("test data for test_skip_listener_unrecognized_type()") + + os.chmod(test_path, 0077) # remove read permissions + + skip_listener = SkipListener() + reader = stem.descriptor.reader.DescriptorReader([test_path]) + reader.register_skip_listener(skip_listener.listener) + + with reader: + for descriptor in reader: + pass + + self.assertTrue(len(skip_listener.results) == 1) + + skipped_path, skip_exception = skip_listener.results[0] + self.assertEqual(test_path, skipped_path) + self.assertTrue(isinstance(skip_exception, stem.descriptor.reader.ReadFailed)) + self.assertTrue(isinstance(skip_exception.exception, IOError)) + + if os.path.exists(test_path): + os.remove(test_path) + def test_skip_listener_file_missing(self): """ Listens for a file that's skipped because the file doesn't exist.