Exemple #1
0
class MemoryPathTestCase(AbstractFilePathTestCase):

    def subdir(self, *dirname):
        for head in heads(dirname):
            self.fs._dirs.add(head)
        self.fs._dirs.add(dirname)

    def subfile(self, *dirname):
        for head in heads(dirname):
            self.fs._dirs.add(head)
        return self.fs.open(dirname)

    def setUp(self):
        self.fs = MemoryFS()

        AbstractFilePathTestCase.setUp(self)

        self.path = MemoryPath(fs=self.fs)
        self.root = self.path
        self.all = self.fs._dirs | set(self.fs._store.keys())
        self.all = set(format_memory_path(p, "/") for p in self.all)

    def test_removeDirectory(self):
        """
        L{MemoryPath.remove} on a L{MemoryPath} that refers to a
        directory will recursively delete its contents.
        """
        self.assertTrue(self.path.isdir())
        self.assertTrue(self.path.exists())

        foo = self.path.child("foo")
        foo.setContent("Hi!")
        baz = self.path.descendant(["bar", "baz"])
        baz.setContent("Bye!")

        self.path.remove()
        self.assertFalse(self.path.exists())
        self.assertFalse(foo.exists())
        self.assertFalse(baz.exists())

    def test_removeFile(self):
        """
        L{MemoryPath.remove} on a L{MemoryPath} that refers to a
        file simply deletes the file.
        """
        path = self.path.child("file")
        path.setContent("Hello!")
        self.assertTrue(path.isfile())
        self.assertTrue(path.exists())

        path.remove()
        self.assertFalse(path.exists())

    def test_removeNonExistant(self):
        """
        L{MemoryPath.remove} on a L{MemoryPath} that does not exist
        raises an error.
        """
        path = self.path.child("file")
        self.assertFalse(path.exists())

        with self.assertRaises(PathError) as e:
            path.remove()
        self.assertEqual(e.exception.errno, errno.ENOENT)