Files
seaweedfs/test/winfsp-conformance/known_failures.txt
T
Chris Lu 5a5cd15054 mount: report . and .. from windows directories (#10556)
* mount: report . and .. from windows directories

WinFsp strips the dot entries for the root itself and expects every other
directory to report them, the way a real NTFS enumeration does: its
dirctl test asserts a subdirectory's first two entries are "." and ".."
and that a hundred files enumerate as 102 entries. Dropping them
unconditionally is what fails querydir_test.

The Go test that guarded the old behaviour went with it: os.File.Readdir
filters dot entries itself, so it could never have observed either way.

* mount: give the windows dot entries their directory type

The readdir fills an attribute block only for real children, so "." and
".." arrived with a zeroed one and were reported with mode 0. Windows
refuses to enumerate a directory whose first entry is not marked as a
directory, which is the assertion querydir_test fails on with
STATUS_OBJECT_NAME_NOT_FOUND.

They now carry the type the readdir already knew. The explorer walk also
names any unexpected entry rather than only counting, so a dot entry
leaking through reads differently from a missing file.
2026-08-04 10:44:43 -07:00

92 lines
3.0 KiB
Plaintext

# Known winfsp-tests failures for the SeaweedFS Windows mount.
#
# One test name per line, as winfsp-tests reports it. A trailing * matches a
# prefix, so "stream_*" covers a whole group. Listed tests are excluded from
# the run; a failure in anything NOT listed fails CI, which is what catches a
# regression.
#
# Populated from the first real run: 20 of 50 passed. Extended attributes are
# forwarded now, so that group runs rather than being excluded. Every entry below is a
# gap in the mount rather than a quirk of the suite, and the list is meant to
# shrink. Keep a reason on each group — an entry with no reason cannot be told
# apart from one nobody has looked at.
# Cannot pass by construction
# ---------------------------
# Alternate data streams: the filer stores one byte range per entry, and the
# mount exposes no second stream.
stream_*
# Reparse points: Symlink is refused, so there is nothing to resolve.
reparse_*
# Byte-range locks live in the WinFsp driver, so they never reach the mount.
lock_*
# Security descriptors
# --------------------
# The mount carries unix mode bits and no ACL, and Chown accepts and discards,
# so a descriptor written here does not read back.
create_sd_test
getsecurity_test
# Cached and overlapped IO
# ------------------------
# The whole rdwr group fails together, so this is one defect rather than nine:
# the mount does not yet satisfy what Windows expects of cached, write-through
# and overlapped IO. The first thing worth fixing.
rdwr_cached_test
rdwr_cached_append_test
rdwr_cached_overlapped_test
rdwr_noncached_test
rdwr_noncached_overlapped_test
rdwr_writethru_test
rdwr_writethru_append_test
rdwr_writethru_overlapped_test
rdwr_mixed_test
flush_test
# Delete semantics
# ----------------
# WinFsp advertises POSIX unlink, so a file can be deleted while handles are
# still open; the mount does not implement the delete-pending state.
delete_access_test
delete_ex_test
delete_mmap_test
delete_pending_test
# Rename semantics
# ----------------
# Rename over an open file, and rename of a directory holding open handles,
# which WinFsp is stricter about than POSIX.
rename_ex_test
rename_mmap_test
rename_open_test
exec_rename_dir_test
# File information
# ----------------
# Windows attributes (hidden, system, readonly) and creation time are not
# round-tripped: attrToStat leaves Flags unset and reports ctime as birthtime.
create_fileattr_test
create_readonlydir_test
getfileinfo_test
setfileinfo_test
# Directory enumeration
# ---------------------
# querydir_namelen only: checkName caps at 255 bytes while WinFsp counts 255
# characters. The other two are expected to pass now that "." and ".." are
# reported for non-root directories, which is what WinFsp enumerates.
querydir_namelen_test
# Name length
# -----------
# checkName caps at 255 bytes while WinFsp allows 255 characters, so a CJK
# name that is legal to Windows is rejected here.
create_namelen_test
# Sharing modes
# -------------
# Windows share-access checking on create, which the mount does not enforce.
create_share_test
create_test