Improve FileMetadata & tests.
This commit is contained in:
@@ -23,7 +23,7 @@ from pathlib import Path, PurePosixPath
|
||||
|
||||
import pytest
|
||||
|
||||
from bsv.vfs import FsError, Permissions, VirtualFileSystem
|
||||
from bsv.vfs import FileMetadata, FsError, Permissions, VirtualFileSystem
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -53,6 +53,158 @@ def test_permissions():
|
||||
assert str(perm1) == "rwxr-x-w-"
|
||||
|
||||
|
||||
########################################################################################
|
||||
# FileMetadata
|
||||
|
||||
|
||||
def test_file_metadata():
|
||||
path = PurePosixPath("/some_dir/some_file")
|
||||
permissions = Permissions(0o1234)
|
||||
mod_time = datetime(2025, 7, 12, 12, 34, 56, tzinfo=UTC)
|
||||
|
||||
file_md = FileMetadata(
|
||||
path,
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
|
||||
assert file_md.path == path
|
||||
assert file_md.type == "file"
|
||||
assert file_md.permissions == permissions
|
||||
assert file_md.modification_time == mod_time
|
||||
assert file_md.byte_size == 123
|
||||
assert file_md.unix_mode == "--w--wxr-T"
|
||||
assert not file_md.is_hidden
|
||||
assert file_md.is_file
|
||||
assert not file_md.is_dir
|
||||
assert not file_md.is_symlink
|
||||
assert not file_md.is_other
|
||||
|
||||
dir_md = FileMetadata(
|
||||
path,
|
||||
type="dir",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
assert dir_md.type == "dir"
|
||||
assert not dir_md.is_file
|
||||
assert dir_md.is_dir
|
||||
assert not dir_md.is_symlink
|
||||
assert not dir_md.is_other
|
||||
|
||||
symlink_md = FileMetadata(
|
||||
path,
|
||||
type="symlink",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
assert symlink_md.type == "symlink"
|
||||
assert not symlink_md.is_file
|
||||
assert not symlink_md.is_dir
|
||||
assert symlink_md.is_symlink
|
||||
assert not symlink_md.is_other
|
||||
|
||||
other_md = FileMetadata(
|
||||
path,
|
||||
type="other",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
assert other_md.type == "other"
|
||||
assert not other_md.is_file
|
||||
assert not other_md.is_dir
|
||||
assert not other_md.is_symlink
|
||||
assert other_md.is_other
|
||||
|
||||
assert FileMetadata(
|
||||
PurePosixPath("/some_dir/.some_file"),
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
).is_hidden
|
||||
|
||||
|
||||
def test_file_metadata_eq():
|
||||
path = PurePosixPath("/some_dir/some_file")
|
||||
permissions = Permissions(0o1234)
|
||||
mod_time = datetime(2025, 7, 12, 12, 34, 56, tzinfo=UTC)
|
||||
|
||||
md = FileMetadata(
|
||||
path,
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
|
||||
assert (
|
||||
FileMetadata(
|
||||
path,
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
== md
|
||||
)
|
||||
assert (
|
||||
FileMetadata(
|
||||
PurePosixPath("/some_dir/some_other_file"),
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
!= md
|
||||
)
|
||||
assert (
|
||||
FileMetadata(
|
||||
path,
|
||||
type="dir",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
!= md
|
||||
)
|
||||
assert (
|
||||
FileMetadata(
|
||||
path,
|
||||
type="file",
|
||||
permissions=Permissions(0o0752),
|
||||
modification_time=mod_time,
|
||||
byte_size=123,
|
||||
)
|
||||
!= md
|
||||
)
|
||||
assert (
|
||||
FileMetadata(
|
||||
path,
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=datetime(2025, 1, 2, 3, 4, 5),
|
||||
byte_size=123,
|
||||
)
|
||||
!= md
|
||||
)
|
||||
assert (
|
||||
FileMetadata(
|
||||
path,
|
||||
type="file",
|
||||
permissions=permissions,
|
||||
modification_time=mod_time,
|
||||
byte_size=124,
|
||||
)
|
||||
!= md
|
||||
)
|
||||
|
||||
|
||||
########################################################################################
|
||||
# mkdir
|
||||
|
||||
@@ -175,13 +327,9 @@ def test_metadata(fs: VirtualFileSystem):
|
||||
assert md.path == PurePosixPath("/test_file")
|
||||
assert md.permissions == file_permissions
|
||||
assert md.type == "file"
|
||||
assert md.is_file
|
||||
assert not md.is_dir
|
||||
assert not md.is_symlink
|
||||
assert not md.is_other
|
||||
assert md.modification_time == file_time
|
||||
assert md.byte_size == len(file_content)
|
||||
assert not md.is_hidden_files
|
||||
assert not md.is_hidden
|
||||
assert fs.metadata("/test_file") == md
|
||||
assert fs.is_file("/test_file")
|
||||
assert not fs.is_dir("/test_file")
|
||||
@@ -194,11 +342,7 @@ def test_metadata(fs: VirtualFileSystem):
|
||||
fs.mkdir("/.test_dir")
|
||||
md = fs.metadata("/.test_dir")
|
||||
assert md.type == "dir"
|
||||
assert not md.is_file
|
||||
assert md.is_dir
|
||||
assert not md.is_symlink
|
||||
assert not md.is_other
|
||||
assert fs.metadata("/.test_dir").is_hidden_files
|
||||
assert fs.metadata("/.test_dir").is_hidden
|
||||
assert not fs.is_file("/.test_dir")
|
||||
assert fs.is_dir("/.test_dir")
|
||||
assert not fs.is_symlink("/.test_dir")
|
||||
@@ -207,10 +351,6 @@ def test_metadata(fs: VirtualFileSystem):
|
||||
fs.make_link("/test_link", "/link_target")
|
||||
md = fs.metadata("/test_link")
|
||||
assert md.type == "symlink"
|
||||
assert not md.is_file
|
||||
assert not md.is_dir
|
||||
assert md.is_symlink
|
||||
assert not md.is_other
|
||||
assert not fs.is_file("/test_link")
|
||||
assert not fs.is_dir("/test_link")
|
||||
assert fs.is_symlink("/test_link")
|
||||
|
||||
Reference in New Issue
Block a user