Пример #1
0
 def test_safety_wrapper(self):
     rawfs = MemoryFS()
     safefs = dokan.Win32SafetyFS(rawfs)
     rawfs.setcontents("autoRun.inf", b("evilcodeevilcode"))
     self.assertTrue(safefs.exists("_autoRun.inf"))
     self.assertTrue("autoRun.inf" not in safefs.listdir("/"))
     safefs.setcontents("file:stream",b("test"))
     self.assertFalse(rawfs.exists("file:stream"))
     self.assertTrue(rawfs.exists("file__colon__stream"))
     self.assertTrue("file:stream" in safefs.listdir("/"))
Пример #2
0
 def test_safety_wrapper(self):
     rawfs = MemoryFS()
     safefs = dokan.Win32SafetyFS(rawfs)
     rawfs.setcontents("autoRun.inf", b("evilcodeevilcode"))
     self.assertTrue(safefs.exists("_autoRun.inf"))
     self.assertTrue("autoRun.inf" not in safefs.listdir("/"))
     safefs.setcontents("file:stream", "test")
     self.assertFalse(rawfs.exists("file:stream"))
     self.assertTrue(rawfs.exists("file__colon__stream"))
     self.assertTrue("file:stream" in safefs.listdir("/"))
Пример #3
0
    def test_mountfile(self):
        """Test mounting a file"""
        quote = b"""If you wish to make an apple pie from scratch, you must first invent the universe."""
        mem_fs = MemoryFS()
        mem_fs.makedir('foo')
        mem_fs.setcontents('foo/bar.txt', quote)
        foo_dir = mem_fs.opendir('foo')

        mount_fs = MountFS()
        mount_fs.mountfile('bar.txt', foo_dir.open, foo_dir.getinfo)

        self.assert_(mount_fs.isdir('/'))
        self.assert_(mount_fs.isdir('./'))
        self.assert_(mount_fs.isdir(''))

        # Check we can see the mounted file in the dir list
        self.assertEqual(mount_fs.listdir(), ["bar.txt"])
        self.assert_(not mount_fs.exists('nobodyhere.txt'))
        self.assert_(mount_fs.exists('bar.txt'))
        self.assert_(mount_fs.isfile('bar.txt'))
        self.assert_(not mount_fs.isdir('bar.txt'))

        # Check open and getinfo callables
        self.assertEqual(mount_fs.getcontents('bar.txt'), quote)
        self.assertEqual(mount_fs.getsize('bar.txt'), len(quote))

        # Check changes are written back
        mem_fs.setcontents('foo/bar.txt', 'baz')
        self.assertEqual(mount_fs.getcontents('bar.txt'), b'baz')
        self.assertEqual(mount_fs.getsize('bar.txt'), len('baz'))

        # Check changes are written to the original fs
        self.assertEqual(mem_fs.getcontents('foo/bar.txt'), b'baz')
        self.assertEqual(mem_fs.getsize('foo/bar.txt'), len('baz'))

        # Check unmount
        self.assert_(mount_fs.unmount("bar.txt"))
        self.assertEqual(mount_fs.listdir(), [])
        self.assert_(not mount_fs.exists('bar.txt'))

        # Check unount a second time is a null op, and returns False
        self.assertFalse(mount_fs.unmount("bar.txt"))
    def test_mountfile(self):
        """Test mounting a file"""
        quote = b"""If you wish to make an apple pie from scratch, you must first invent the universe."""
        mem_fs = MemoryFS()
        mem_fs.makedir('foo')
        mem_fs.setcontents('foo/bar.txt', quote)
        foo_dir = mem_fs.opendir('foo')

        mount_fs = MountFS()
        mount_fs.mountfile('bar.txt', foo_dir.open, foo_dir.getinfo)

        self.assert_(mount_fs.isdir('/'))
        self.assert_(mount_fs.isdir('./'))
        self.assert_(mount_fs.isdir(''))

        # Check we can see the mounted file in the dir list
        self.assertEqual(mount_fs.listdir(), ["bar.txt"])
        self.assert_(not mount_fs.exists('nobodyhere.txt'))
        self.assert_(mount_fs.exists('bar.txt'))
        self.assert_(mount_fs.isfile('bar.txt'))
        self.assert_(not mount_fs.isdir('bar.txt'))

        # Check open and getinfo callables
        self.assertEqual(mount_fs.getcontents('bar.txt'), quote)
        self.assertEqual(mount_fs.getsize('bar.txt'), len(quote))

        # Check changes are written back
        mem_fs.setcontents('foo/bar.txt', 'baz')
        self.assertEqual(mount_fs.getcontents('bar.txt'), b'baz')
        self.assertEqual(mount_fs.getsize('bar.txt'), len('baz'))

        # Check changes are written to the original fs
        self.assertEqual(mem_fs.getcontents('foo/bar.txt'), b'baz')
        self.assertEqual(mem_fs.getsize('foo/bar.txt'), len('baz'))

        # Check unmount
        self.assert_(mount_fs.unmount("bar.txt"))
        self.assertEqual(mount_fs.listdir(), [])
        self.assert_(not mount_fs.exists('bar.txt'))

        # Check unount a second time is a null op, and returns False
        self.assertFalse(mount_fs.unmount("bar.txt"))
Пример #5
0
class TestWalk(unittest.TestCase):
    
    def setUp(self):
        self.fs = MemoryFS()
        self.fs.setcontents('a.txt', 'hello')
        self.fs.setcontents('b.txt', 'world')
        self.fs.makeopendir('foo').setcontents('c', '123')
        self.fs.makeopendir('.svn').setcontents('ignored', '')
    
    def test_wildcard(self):
        for dir_path, paths in self.fs.walk(wildcard='*.txt'):
            for path in paths:
                self.assert_(path.endswith('.txt'))
        for dir_path, paths in self.fs.walk(wildcard=lambda fn:fn.endswith('.txt')):
            for path in paths:
                self.assert_(path.endswith('.txt'))
    
    def test_dir_wildcard(self):
        
        for dir_path, paths in self.fs.walk(dir_wildcard=lambda fn:not fn.endswith('.svn')):            
            for path in paths:                
                self.assert_('.svn' not in path)
Пример #6
0
 def test_priority(self):
     """Test priority order is working"""
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", "m1")
     m2.setcontents("name", "m2")
     m3.setcontents("name", "m3")
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1)
     multi_fs.addfs("m2", m2)
     multi_fs.addfs("m3", m3)
     self.assert_(multi_fs.getcontents("name") == "m3")
     
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", "m1")
     m2.setcontents("name", "m2")
     m3.setcontents("name", "m3")
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1)
     multi_fs.addfs("m2", m2, priority=10)
     multi_fs.addfs("m3", m3)
     self.assert_(multi_fs.getcontents("name") == "m2")        
     
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", "m1")
     m2.setcontents("name", "m2")
     m3.setcontents("name", "m3")
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1)
     multi_fs.addfs("m2", m2, priority=10)
     multi_fs.addfs("m3", m3, priority=10)
     self.assert_(multi_fs.getcontents("name") == "m3")
     
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", "m1")
     m2.setcontents("name", "m2")
     m3.setcontents("name", "m3")
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1, priority=11)
     multi_fs.addfs("m2", m2, priority=10)
     multi_fs.addfs("m3", m3, priority=10)
     self.assert_(multi_fs.getcontents("name") == "m1")
     
Пример #7
0
 def test_priority(self):
     """Test priority order is working"""
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", b("m1"))
     m2.setcontents("name", b("m2"))
     m3.setcontents("name", b("m3"))
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1)
     multi_fs.addfs("m2", m2)
     multi_fs.addfs("m3", m3)
     self.assert_(multi_fs.getcontents("name") == b("m3"))
     
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", b("m1"))
     m2.setcontents("name", b("m2"))
     m3.setcontents("name", b("m3"))
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1)
     multi_fs.addfs("m2", m2, priority=10)
     multi_fs.addfs("m3", m3)
     self.assert_(multi_fs.getcontents("name") == b("m2"))        
     
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", b("m1"))
     m2.setcontents("name", b("m2"))
     m3.setcontents("name", b("m3"))
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1)
     multi_fs.addfs("m2", m2, priority=10)
     multi_fs.addfs("m3", m3, priority=10)
     self.assert_(multi_fs.getcontents("name") == b("m3"))
     
     m1 = MemoryFS()
     m2 = MemoryFS()
     m3 = MemoryFS()
     m1.setcontents("name", b("m1"))
     m2.setcontents("name", b("m2"))
     m3.setcontents("name", b("m3"))
     multi_fs = MultiFS(auto_close=False)
     multi_fs.addfs("m1", m1, priority=11)
     multi_fs.addfs("m2", m2, priority=10)
     multi_fs.addfs("m3", m3, priority=10)
     self.assert_(multi_fs.getcontents("name") == b("m1"))
Пример #8
0
from fs.memoryfs import MemoryFS
from fs.expose import fuse
fs = MemoryFS()  # create an in memory file system
fs.createfile('filename.txt')  # creating an empty file
fs.setcontents('filename.txt',
               'contents of file')  # putting content into the file.
from fs.osfs import OSFS
home_fs = OSFS('/')  #
home_fs.makedir(
    '/home/dave/scratch/ramdrive', allow_recreate=True
)  # have to make a directory for us to mount our memory file system on.
mp = fuse.mount(
    fs, '/home/dave/scratch/ramdrive'
)  # exposes fs to everything else on machine. (ie: other system calls can see these files)
mp.path  # in case you need the path to the files created.
mp.unmount()  # files are no longer being exposed via fuse
home_fs.removedir('/home/dave/scratch/ramdrive/'
                  )  #remove the real file system directory when done.

fs.remove('filename.txt')

home_fs.close()
fs.close()

# creating a ramdrive like this wont work for my desired task, as other external applications cannot write to the directory. They only have read access.