Skip to content

Testing

The default test path checks the Rust workspace and ABI-facing behavior without requiring a mounted FUSE filesystem.

cargo check --workspace --locked
cargo test --workspace --locked

Backend Build Checks

The daemon can be compiled against either libfuse backend:

cargo check -p fuse-promise-daemon --features fuse-mount-fuse --locked
cargo check -p fuse-promise-daemon --features fuse-mount-fuse3 --locked

Use these checks to verify that a FUSE2 build does not require the FUSE3 daemon feature, and that a FUSE3 build does not require the FUSE2 daemon feature.

Mounted Smoke Tests

Mounted tests require Linux FUSE support, /dev/fuse, the matching fusermount helper, and the matching libfuse development metadata.

Debian and Ubuntu setup:

sudo apt-get install build-essential pkg-config libfuse-dev libfuse3-dev fuse3

Minimal provider smoke tests:

FUSE_PROMISE_FUSE_BACKEND=fuse3 tests/minimal-provider-smoke.sh
FUSE_PROMISE_FUSE_BACKEND=fuse tests/minimal-provider-smoke.sh

The minimal provider test builds examples/minimal_provider.c, starts fuse-promised, commits a Promise tree with directory and file metadata, reads provider-backed file bytes through the mount, and materializes the promised file into local storage with fpctl.

Stable Release Gate

The release gate checks formatting, build metadata, ABI hardening, security behavior, and mounted FUSE behavior where available:

BUILD_PROFILE=release SONAME_MAJOR=1 tests/stable-release-gates.sh

GitHub-hosted runners may not expose /dev/fuse. The repository keeps mounted FUSE gates separate so they can run on a self-hosted Linux runner with FUSE enabled.