"""
try:
os.mkdir(self.path + folder)
+ except FileExistsError: # make it idempotent
+ pass
except Exception as e:
raise FsException(str(e), http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
:param ignore_non_exist: not raise exception if storage does not exist
:return: None
"""
-
- if isinstance(storage, str):
- f = self.path + storage
- else:
- f = self.path + "/".join(storage)
- if os.path.exists(f):
- rmtree(f)
- elif not ignore_non_exist:
- raise FsException("File {} does not exist".format(storage), http_code=HTTPStatus.NOT_FOUND)
+ try:
+ if isinstance(storage, str):
+ f = self.path + storage
+ else:
+ f = self.path + "/".join(storage)
+ if os.path.exists(f):
+ rmtree(f)
+ elif not ignore_non_exist:
+ raise FsException("File {} does not exist".format(storage), http_code=HTTPStatus.NOT_FOUND)
+ except (IOError, PermissionError) as e:
+ raise FsException("File {} cannot be deleted: {}".format(f, e), http_code=HTTPStatus.INTERNAL_SERVER_ERROR)
folder_path = valid_path() + folder_name
fs_local.mkdir(folder_name)
assert os.path.exists(folder_path)
+ # test idempotency
+ fs_local.mkdir(folder_name)
+ assert os.path.exists(folder_path)
os.rmdir(folder_path)
def test_mkdir_with_exception(fs_local):
folder_name = str(uuid.uuid4())
- folder_path = valid_path() + folder_name
- os.mkdir(folder_path)
with pytest.raises(FsException) as excinfo:
- fs_local.mkdir(folder_name)
+ fs_local.mkdir(folder_name + "/" + folder_name)
assert excinfo.value.http_code == http.HTTPStatus.INTERNAL_SERVER_ERROR
- os.rmdir(folder_path)
@pytest.mark.parametrize("storage, mode, expected", [