def test_create(self): # Make a new directory if it doesn't exist os.rmdir(self.outputdir) storage = NestedFileStorage(outputdir=self.outputdir, renderer=self.renderer) self.assertEqual(storage.outputdir, self.outputdir) self.assertTrue(os.path.isdir(self.outputdir)) # Make a duplicate directory NestedFileStorage(outputdir=self.outputdir, renderer=self.renderer) self.assertTrue(os.path.isdir(self.outputdir))
def setUp(self): self.tempdir = NamedTemporaryDir() self.outputdir = self.tempdir.__enter__() self.renderer = TouchRenderer(suffix='.png') self.storage = NestedFileStorage(outputdir=self.outputdir, renderer=self.renderer)
class TestNestedFileStorage(unittest.TestCase): def setUp(self): self.tempdir = NamedTemporaryDir() self.outputdir = self.tempdir.__enter__() self.renderer = TouchRenderer(suffix='.png') self.storage = NestedFileStorage(outputdir=self.outputdir, renderer=self.renderer) def tearDown(self): self.tempdir.__exit__(None, None, None) def test_create(self): # Make a new directory if it doesn't exist os.rmdir(self.outputdir) storage = NestedFileStorage(outputdir=self.outputdir, renderer=self.renderer) self.assertEqual(storage.outputdir, self.outputdir) self.assertTrue(os.path.isdir(self.outputdir)) # Make a duplicate directory NestedFileStorage(outputdir=self.outputdir, renderer=self.renderer) self.assertTrue(os.path.isdir(self.outputdir)) def test_filepath(self): self.assertEqual(self.storage.filepath(x=0, y=1, z=2, hashed=0xdeadbeef), '2/0/1' + self.renderer.suffix) def test_makedirs(self): # Cache should be empty self.assertFalse(self.storage.madedirs) self.storage.makedirs(x=0, y=1, z=2) self.assertEqual(set(recursive_listdir(self.outputdir)), set(['2/', '2/0/'])) # Is cache populated? self.assertTrue(self.storage.madedirs[2][0]) # Delete and readd without clearing cache rmtree(os.path.join(self.outputdir, '2')) self.assertEqual(os.listdir(self.outputdir), []) self.storage.makedirs(x=0, y=1, z=2) self.assertEqual(os.listdir(self.outputdir), []) def test_save(self): image = VImage.new_rgba(width=1, height=1, ink=rgba(r=0, g=0, b=0, a=0)) self.storage.save(x=0, y=1, z=2, image=image) self.storage.save(x=1, y=0, z=2, image=image) self.storage.save(x=1, y=0, z=3, image=image) self.storage.waitall() self.assertEqual(set(recursive_listdir(self.outputdir)), set(['2/', '2/0/', '2/0/1.png', '2/1/', '2/1/0.png', '3/', '3/1/', '3/1/0.png'])) # Is this a real file? self.assertFalse( os.path.islink(os.path.join(self.outputdir, '2', '0', '1.png')) ) # Does the symlinking work? self.assertEqual( os.readlink(os.path.join(self.outputdir, '2', '1', '0.png')), os.path.join(os.path.pardir, '0', '1.png') ) self.assertEqual( os.readlink(os.path.join(self.outputdir, '3', '1', '0.png')), os.path.join(os.path.pardir, os.path.pardir, '2', '0', '1.png') ) def test_save_border(self): # Western hemisphere is border self.storage.save_border(x=0, y=0, z=1) self.storage.save_border(x=0, y=1, z=1) self.storage.save_border(x=0, y=1, z=2) self.storage.waitall() self.assertEqual(set(recursive_listdir(self.outputdir)), set([ '1/', '1/0/', '1/0/0.png', '1/0/1.png', '2/', '2/0/', '2/0/1.png', ])) # Is this a real file? self.assertFalse( os.path.islink(os.path.join( self.outputdir, '1/0/0.png' )) ) # Does the symlinking work? self.assertEqual( os.readlink(os.path.join( self.outputdir, '1/0/1.png' )), '0.png' ) self.assertEqual( os.readlink(os.path.join( self.outputdir, '2/0/1.png' )), os.path.join(os.path.pardir, os.path.pardir, '1', '0', '0.png') )