fslite-conformance 0.1.0

A transport-independent, async virtual filesystem with a SQLite-backed persistent backend, HTTP adapter, and CLI.
Documentation
use fslite_core::{MutationOptions, RequestContext, VirtualPath};

use crate::ConformanceFactory;

pub(crate) async fn run(factory: &dyn ConformanceFactory) {
    set_and_remove_attribute_round_trip(factory).await;
}

async fn set_and_remove_attribute_round_trip(factory: &dyn ConformanceFactory) {
    let fs = factory.fresh().await;
    let workspace_id = factory.workspace(&*fs).await;
    let ctx = RequestContext::trusted(workspace_id);
    let path = VirtualPath::parse("/f").unwrap();

    fs.mkdir(&ctx, &path, Default::default()).await.unwrap();
    let node = fs
        .set_attribute(&ctx, &path, "color", b"blue", MutationOptions::default())
        .await
        .unwrap();
    assert!(node.attributes.contains_key("color"));

    let node = fs
        .remove_attribute(&ctx, &path, "color", MutationOptions::default())
        .await
        .unwrap();
    assert!(!node.attributes.contains_key("color"));
}