[tor-commits] [stem/master] Integration tests for save_processed_files()
atagar at torproject.org
atagar at torproject.org
Mon Mar 26 00:10:01 UTC 2012
commit 86b90e84e26ac91e1f876ec96df4d983c5ab384f
Author: Damian Johnson <atagar at torproject.org>
Date: Thu Mar 8 09:04:47 2012 -0800
Integration tests for save_processed_files()
Basic integ tests for the save function, checking that we can load persisted
files and that it has some basic input validation.
---
stem/descriptor/reader.py | 5 ++++-
test/integ/descriptor/reader.py | 30 ++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 1 deletions(-)
diff --git a/stem/descriptor/reader.py b/stem/descriptor/reader.py
index ec6a2b2..a3ad418 100644
--- a/stem/descriptor/reader.py
+++ b/stem/descriptor/reader.py
@@ -81,7 +81,10 @@ def save_processed_files(processed_files, path):
with open(path, "w") as output_file:
for path, timestamp in processed_files.items():
- output_file.write("%s %i" % (path, timestamp))
+ if not os.path.isabs(path):
+ raise TypeError("Only absolute paths are acceptable: %s" % path)
+
+ output_file.write("%s %i\n" % (path, timestamp))
class DescriptorReader(threading.Thread):
"""
diff --git a/test/integ/descriptor/reader.py b/test/integ/descriptor/reader.py
index c8b93b0..6341153 100644
--- a/test/integ/descriptor/reader.py
+++ b/test/integ/descriptor/reader.py
@@ -71,4 +71,34 @@ class TestDescriptorReader(unittest.TestCase):
test_listing_path = _make_processed_files_listing(BASIC_LISTING)
os.chmod(test_listing_path, 0077) # remove read permissions
self.assertRaises(IOError, stem.descriptor.reader.load_processed_files, test_listing_path)
+
+ def test_save_processed_files(self):
+ """
+ Basic sanity test for persisting files listings to disk.
+ """
+
+ initial_listing = {
+ "/tmp": 123,
+ "/bin/grep": 4567,
+ "/file with spaces/and \\ stuff": 890,
+ }
+
+ # saves the initial_listing to a file then reloads it
+ test_listing_path = _get_processed_files_path()
+ stem.descriptor.reader.save_processed_files(initial_listing, test_listing_path)
+ loaded_listing = stem.descriptor.reader.load_processed_files(test_listing_path)
+
+ self.assertEquals(initial_listing, loaded_listing)
+
+ def test_save_processed_files_malformed(self):
+ """
+ Tests the save_processed_files() function with malformed data.
+ """
+
+ missing_filename = {"": 123}
+ relative_filename = {"foobar": 123}
+ string_timestamp = {"/tmp": "123a"}
+
+ for listing in (missing_filename, relative_filename, string_timestamp):
+ self.assertRaises(TypeError, stem.descriptor.reader.save_processed_files, listing, "/tmp/foo")
More information about the tor-commits
mailing list