mirror of
https://github.com/trapexit/mergerfs.git
synced 2026-10-25 18:40:18 -04:00
- Make the test runner fail on failed tests and report explicit skips - Strengthen assertions for O_DIRECT, LUP policy, EXDEV fallback, and xattrs - Fix cleanup and file descriptor handling across test scripts |
||
|---|---|---|
| .. | ||
| OPTIONS_TEST_PLAN.md | ||
| posix_parity.py | ||
| README.md | ||
| run-tests | ||
| TEST_api_xattr | ||
| TEST_cfg_link_rename_exdev | ||
| TEST_cfg_statfs_ignore | ||
| TEST_cfg_xattr_modes | ||
| TEST_io_passthrough_create_open | ||
| TEST_io_passthrough_open_race | ||
| TEST_mount_lifecycle | ||
| TEST_movefile_enospc | ||
| TEST_no_fuse_hidden | ||
| TEST_o_direct | ||
| TEST_open_after_unlink | ||
| TEST_policy_lup | ||
| TEST_posix_access | ||
| TEST_posix_bmap | ||
| TEST_posix_chmod | ||
| TEST_posix_chown | ||
| TEST_posix_copy_file_range | ||
| TEST_posix_create_mknod | ||
| TEST_posix_fsync_flush | ||
| TEST_posix_getattr_fgetattr | ||
| TEST_posix_ioctl | ||
| TEST_posix_link_symlink | ||
| TEST_posix_locking | ||
| TEST_posix_mkdir_rmdir | ||
| TEST_posix_open_read_write | ||
| TEST_posix_poll | ||
| TEST_posix_readdir | ||
| TEST_posix_readdir_plus | ||
| TEST_posix_release | ||
| TEST_posix_releasedir | ||
| TEST_posix_statfs | ||
| TEST_posix_statx | ||
| TEST_posix_syncfs | ||
| TEST_posix_tmpfile | ||
| TEST_posix_truncate_ftruncate | ||
| TEST_posix_unlink_rename | ||
| TEST_posix_utimens | ||
| TEST_posix_xattr | ||
| TEST_posix_xattr_matrix | ||
| TEST_readlink_semantics | ||
| TEST_rmdir_enotempty_priority | ||
| TEST_unlink_rename | ||
| TEST_use_fallocate_after_unlink | ||
| TEST_use_fchmod_after_unlink | ||
| TEST_use_fchown_after_unlink | ||
| TEST_use_fstat_after_unlink | ||
| TEST_use_ftruncate_after_unlink | ||
| TEST_use_futimens_after_unlink | ||
| tests.cpp | ||
POSIX Soft Conformance Suite
This directory contains integration tests that exercise mergerfs FUSE operations and compare behavior against equivalent native syscalls on a local filesystem.
The suite is "soft POSIX": it focuses on practical parity for return values,
errno, and key side effects, including common error paths.
Run with:
python3 tests/run-tests /mnt/mergerfs/
Coverage Matrix
access->TEST_posix_accesschmod/fchmod->TEST_posix_chmod,TEST_use_fchmod_after_unlinkchown/fchown->TEST_posix_chown,TEST_use_fchown_after_unlinkcreate/mknod->TEST_posix_create_mknodgetattr/fgetattr->TEST_posix_getattr_fgetattr,TEST_use_fstat_after_unlinkopen/read/write->TEST_posix_open_read_write,TEST_o_directflush/release/fsync/fsyncdir->TEST_posix_fsync_flushreleaseclose semantics ->TEST_posix_releasereleasedirclose semantics ->TEST_posix_releasedirtruncate/ftruncate->TEST_posix_truncate_ftruncate,TEST_use_ftruncate_after_unlinkutimens/futimens->TEST_posix_utimens,TEST_use_futimens_after_unlinkfallocate->TEST_use_fallocate_after_unlinkcopy_file_range->TEST_posix_copy_file_rangeioctl->TEST_posix_ioctlpoll->TEST_posix_polltmpfile(O_TMPFILE) ->TEST_posix_tmpfilebmap(viaFIBMAPioctl parity) ->TEST_posix_bmapreadlink->TEST_readlink_semanticslink/symlink->TEST_posix_link_symlinkmkdir/rmdir->TEST_posix_mkdir_rmdirunlink/rename->TEST_posix_unlink_rename,TEST_unlink_renamestatfs->TEST_posix_statfsstatx->TEST_posix_statxsyncfs->TEST_posix_syncfsflock/lock->TEST_posix_lockingsetxattr/getxattr/listxattr/removexattr->TEST_posix_xattr- xattr object/flag matrix (
file,dir, symlinkl*, create/replace) ->TEST_posix_xattr_matrix - xattr mode runtime toggles (
passthrough/noattr/nosys) ->TEST_cfg_xattr_modes - statfs mode and statfs-ignore runtime toggles ->
TEST_cfg_statfs_ignore - EXDEV fallback runtime toggles for link/rename ->
TEST_cfg_link_rename_exdev readdir(+ seek/tell behavior) ->TEST_posix_readdirreaddir_plussemantic parity (list+stat and readdir policy toggles) ->TEST_posix_readdir_plus- lifecycle (
init/destroy) harness check ->TEST_mount_lifecycle - hidden temp exposure checks ->
TEST_no_fuse_hidden
Error Conditions Emphasized
Across tests, parity checks include combinations of:
ENOENTENOTDIREEXISTENOTEMPTYEISDIREBADF- privilege-sensitive outcomes (for example
EPERM) where applicable
Notes
- Some behavior is runtime/environment dependent (kernel, mount options, uid/gid, capabilities). Tests compare mergerfs to native behavior in the same runtime to keep assertions robust.
- Tests that cannot exercise a behavior in the current environment may exit 77
and are reported as
SKIPbytests/run-tests. - The xattr test uses a
user.*key and assumes user xattrs are enabled.