[tor-commits] [stem/master] Integ test for files skipped due to permissions

atagar at torproject.org atagar at torproject.org
Mon Mar 26 00:10:01 UTC 2012


commit 77ac27cbe057e9411c28d0a8be814046465d335b
Author: Damian Johnson <atagar at 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.





More information about the tor-commits mailing list