diff --git a/shoebox/shoebox.py b/shoebox/shoebox.py index 13fbb73..c3316c1 100644 --- a/shoebox/shoebox.py +++ b/shoebox/shoebox.py @@ -90,8 +90,8 @@ class RollManager(object): self.active_archive = None def _make_filename(self): - now = now() - return now.strftime(self.filename_template) + f = now().strftime(self.filename_template) + return f.replace(" ", "_") def get_active_archive(self): if not self.active_archive: @@ -110,9 +110,9 @@ class RollManager(object): class ReadingRollManager(RollManager): - def __init__(self, filename_template, roll_checker): + def __init__(self, filename_template, roll_checker, directory="."): super(ReadingRollManager, self).__init__(filename_template, - roll_checker) + roll_checker, directory) self.archive_class = ArchiveReader def read_block(self): @@ -126,9 +126,9 @@ class ReadingRollManager(RollManager): class WritingRollManager(RollManager): - def __init__(self, filename_template, roll_checker): - super(ReadingRollManager, self).__init__(filename_template, - roll_checker) + def __init__(self, filename_template, roll_checker, directory="."): + super(WritingRollManager, self).__init__(filename_template, + roll_checker, directory) self.archive_class = ArchiveWriter def write(self, payload): @@ -139,18 +139,19 @@ class WritingRollManager(RollManager): class Archive(object): - def __init__(self): + def __init__(self, filename): self._handle = None + self.filename = filename def get_file_handle(self): return self._handle -class ArchiveWriter(object): +class ArchiveWriter(Archive): """The active Archive for appending. """ def __init__(self, filename): - super(ArchiveWriter, self).__init__(self) + super(ArchiveWriter, self).__init__(filename) self._handle = open(filename, "wb+") def write(self, payload): @@ -158,11 +159,11 @@ class ArchiveWriter(object): -class ArchiveReader(object): +class ArchiveReader(Archive): """The active Archive for consuming. """ def __init__(self, filename): - pass + super(ArchiveReader, self).__init__(filename) def read_block(self): pass diff --git a/test/test_shoebox.py b/test/test_shoebox.py index cd0f808..a2ed1f7 100644 --- a/test/test_shoebox.py +++ b/test/test_shoebox.py @@ -50,4 +50,22 @@ class TestRollChecker(unittest.TestCase): class TestRollManager(unittest.TestCase): - pass # Next ... + def test_make_filename(self): + filename_template = "filename_%c" + now = datetime.datetime(day=1, month=2, year=2014, + hour=10, minute=11, second=12) + x = shoebox.RollManager("filename_%c.dat", None) + + with mock.patch.object(shoebox, "now") as dt: + dt.return_value = now + filename = x._make_filename() + self.assertEqual(filename, "filename_Sat_Feb__1_10:11:12_2014.dat") + +class TestWritingRollManager(unittest.TestCase): + def test_get_active_archive(self): + roll_checker = mock.Mock() + filename_template = "filename_%c.dat" + x = shoebox.WritingRollManager(filename_template, roll_checker) + archive = x.get_active_archive() + self.assertTrue(isinstance(archive, shoebox.ArchiveWriter)) + self.assertTrue(roll_checker.start.called) \ No newline at end of file