lightning/tests/tests_app/storage/test_mount.py

43 lines
1.5 KiB
Python

import pytest
from lightning_app.storage.mount import Mount
def test_create_s3_mount_successfully():
mount = Mount(source="s3://foo/bar/", mount_path="/foo")
assert mount.source == "s3://foo/bar/"
assert mount.mount_path == "/foo"
assert mount.protocol == "s3://"
def test_create_non_s3_mount_fails():
with pytest.raises(ValueError, match="Unknown protocol for the mount 'source' argument"):
Mount(source="foo/bar/", mount_path="/foo")
with pytest.raises(ValueError, match="Unknown protocol for the mount 'source' argument"):
Mount(source="gcs://foo/bar/", mount_path="/foo")
with pytest.raises(ValueError, match="Unknown protocol for the mount 'source' argument"):
Mount(source="3://foo/bar/", mount_path="/foo")
def test_create_s3_mount_without_directory_prefix_fails():
with pytest.raises(ValueError, match="S3 mounts must end in a trailing slash"):
Mount(source="s3://foo/bar", mount_path="/foo")
with pytest.raises(ValueError, match="S3 mounts must end in a trailing slash"):
Mount(source="s3://foo", mount_path="/foo")
def test_create_mount_without_mount_path_argument():
m = Mount(source="s3://foo/")
assert m.mount_path == "/data/foo"
m = Mount(source="s3://foo/bar/")
assert m.mount_path == "/data/bar"
def test_create_mount_path_with_relative_path_errors():
with pytest.raises(ValueError, match="mount_path argument must be an absolute path"):
Mount(source="s3://foo/", mount_path="./doesnotwork")