[tor-commits] [stem/master] Integ test for skipping a file due to its mime type

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


commit 9f8683f182b1199ba1eb6955130e46db0bae5372
Author: Damian Johnson <atagar at torproject.org>
Date:   Sun Mar 11 15:05:54 2012 -0700

    Integ test for skipping a file due to its mime type
    
    Adding an integration test that listens for a file which is skipped due to a
    type indicating that it doesn't contain descriptor data.
---
 stem/descriptor/reader.py       |    2 +-
 test/integ/descriptor/reader.py |   38 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/stem/descriptor/reader.py b/stem/descriptor/reader.py
index 8a1be75..0dde2a9 100644
--- a/stem/descriptor/reader.py
+++ b/stem/descriptor/reader.py
@@ -338,7 +338,7 @@ class DescriptorReader(threading.Thread):
     pass # TODO: implement
   
   def _notify_skip_listeners(self, path, exception):
-    for listener in self.skip_listeners:
+    for listener in self._skip_listeners:
       listener(path, exception)
   
   def __enter__(self):
diff --git a/test/integ/descriptor/reader.py b/test/integ/descriptor/reader.py
index e8a6c20..4ef1d58 100644
--- a/test/integ/descriptor/reader.py
+++ b/test/integ/descriptor/reader.py
@@ -37,6 +37,13 @@ def _make_processed_files_listing(contents):
   
   return test_listing_path
 
+class SkipListener:
+  def __init__(self):
+    self.results = [] # (path, exception) tuples that we've received
+  
+  def listener(self, path, exception):
+    self.results.append((path, exception))
+
 class TestDescriptorReader(unittest.TestCase):
   def tearDown(self):
     # cleans up 'processed file' listings that we made
@@ -211,4 +218,35 @@ class TestDescriptorReader(unittest.TestCase):
       for descriptor in reader:
         if str(descriptor) == skip_contents:
           self.fail() # we read the file that we were trying to skip
+  
+  def test_skip_listener_unrecognized_type(self):
+    """
+    Listens for a file that's skipped because its file type isn't recognized.
+    """
+    
+    # types are solely based on file extensions so making something that looks
+    # like an png image
+    
+    test_path = os.path.join(test.runner.get_runner().get_test_dir(), "test.png")
+    
+    with open(test_path, "w") as test_file:
+      test_file.write("test data for test_skip_listener_unrecognized_type()")
+    
+    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.UnrecognizedType))
+    self.assertEqual(("image/png", None), skip_exception.mime_type)
+    
+    if os.path.exists(test_path):
+      os.remove(test_path)
 





More information about the tor-commits mailing list