#macro #test-macro #filesystem #temp-dir #testing

macro rfs_test_macro

This package provides macro to simplify usage of rfs_tester crate

2 stable releases

1.1.0 Jan 21, 2025
1.0.0 Jan 19, 2025

#2139 in Procedural macros

Download history 147/week @ 2025-01-15 73/week @ 2025-01-22

220 downloads per month
Used in rfs_tester

MIT/Apache

8KB
62 lines

rfs_test_macro

Crates.io License

rfs_test_macro is a attribute macro designed to simplify the configuration of test units for the rfs_tester crate since v0.3.1. It provides an easy-to-use interface for setting up and managing filesystem tests.

Overview

The rfs_tester crate creates a temporary directory for running filesystem tests and automatically cleans it up after the tests are completed. The rfs_test_macro crate provides a macro that simplifies the process of configuring and running these tests.

Usage

Add rfs_test_macro to your Cargo.toml:

[dependencies]
rfs_test_macro = "1.0"

Then, use the macro in your test files:

const CONFIG: &str = r#"---
    - !directory
        name: test
            content:
                - !link
                    name: file_link.txt
                    target: LICENSE-MIT
"#;

#[rfs_test(config = CONFIG, start_point = ".")]
fn link_creation_test(dirname: &str) -> std::io::Result<()> {
    let link_path = format!("{dirname}/file_link.txt");
    let meta = fs::metadata(link_path)?;
    assert!(meta.is_symlink());
    Ok(())
}

You can specify config inline:

#[rfs_test(
    config = r#"---
    - !directory
        name: test
        content:
          - !file
              name: test.txt
              content:
                !inline_text "Hello, world!"
    "#,
    start_point = "."
)]
fn file_creation_test_with_macro(dirname: &str) -> std::io::Result<()> {
    let file_path = format!("{}/test.txt", dirname);
    let content = std::fs::read_to_string(file_path)?;
    assert_eq!(content, "Hello, world!");
    Ok(())
}

The macro will handle the setup and teardown of the temporary directory, allowing you to focus on writing your test logic.

Features

  • Easy Configuration: Simplifies the setup of filesystem tests.

  • Automatic Cleanup: Ensures that temporary directories are removed after tests complete.

  • Seamless Integration: Works seamlessly with the rfs_tester crate.

License

This project is licensed under either of the following licenses:

  • MIT License (LICENSE-MIT)

  • Apache License, Version 2.0 (LICENSE-APACHE)

at your option.

Contributing

Contributions are welcome! If you'd like to contribute, please open an issue or submit a pull request.

Dependencies

~230–680KB
~16K SLoC