def test_opendir(self):
# Make a simple directory structure
self.fs.makedir('foo')
self.fs.setbytes('foo/bar', b'barbar')
self.fs.setbytes('foo/egg', b'eggegg')
# Open a sub directory
with self.fs.opendir('foo') as foo_fs:
repr(foo_fs)
text_type(foo_fs)
six.assertCountEqual(self, foo_fs.listdir('/'), ['bar', 'egg'])
self.assertTrue(foo_fs.isfile('bar'))
self.assertTrue(foo_fs.isfile('egg'))
self.assertEqual(foo_fs.getbytes('bar'), b'barbar')
self.assertEqual(foo_fs.getbytes('egg'), b'eggegg')
self.assertFalse(self.fs.isclosed())
# Attempt to open a non-existent directory
with self.assertRaises(errors.ResourceNotFound):
self.fs.opendir('egg')
# Check error when doing opendir on a non dir
with self.assertRaises(errors.DirectoryExpected):
self.fs.opendir('foo/egg')
# These should work, and will essentially return a 'clone' of sorts
self.fs.opendir('')
self.fs.opendir('/')
# Check ClosingSubFS closes 'parent'
with self.fs.opendir('foo', factory=ClosingSubFS) as foo_fs:
six.assertCountEqual(self, foo_fs.listdir('/'), ['bar', 'egg'])
self.assertTrue(foo_fs.isfile('bar'))
self.assertTrue(foo_fs.isfile('egg'))
self.assertEqual(foo_fs.getbytes('bar'), b'barbar')
self.assertEqual(foo_fs.getbytes('egg'), b'eggegg')
self.assertTrue(self.fs.isclosed())
评论列表
文章目录