def test_insufficient_disk_space(self):
        tempdir = tempfile.mkdtemp()
        self.addCleanup(os.removedirs, tempdir)
        system = System()
        free_space = psutil.disk_usage(tempdir).free

        with self.assertRaises(InsufficientSpaceError):
            system._ensure_free_space_in_temp_dir(tempdir, free_space * 2)
    def test_cleans_up_disk_space(self):
        tempdir = tempfile.mkdtemp()
        self.addCleanup(shutil.rmtree, tempdir)
        system = System()
        paths = [
            join(tempdir, "a.dat"), join(tempdir, "b.dat"),
            join(tempdir, "c.dat"), join(tempdir, "d.dat")
        ]

        # Create 5MB files on disk in the above directories
        size_per_file = 5242880
        for path in paths:
            with open(path, "wb") as output:
                output.write("0" * size_per_file)

        free_space = psutil.disk_usage(tempdir).free
        space_to_free = free_space + (size_per_file * len(paths) / 2)
        system._ensure_free_space_in_temp_dir(tempdir, space_to_free)
        self.assertLessEqual(len(os.listdir(tempdir)), 2)
 def test_has_enough_free_space(self):
     tempdir = tempfile.mkdtemp()
     self.addCleanup(os.removedirs, tempdir)
     system = System()
     free_space = psutil.disk_usage(tempdir).free
     system._ensure_free_space_in_temp_dir(tempdir, free_space - 2048)