8 releases

0.2.2 Jan 11, 2025
0.2.1 Nov 20, 2024
0.2.0 Aug 3, 2023
0.1.4 May 24, 2023
0.1.1 Apr 25, 2023

#366 in Testing

Download history 17/week @ 2024-12-16 6/week @ 2024-12-23 3/week @ 2024-12-30 454/week @ 2025-01-06 246/week @ 2025-01-13 108/week @ 2025-01-20 83/week @ 2025-01-27 187/week @ 2025-02-03 103/week @ 2025-02-10 149/week @ 2025-02-17 301/week @ 2025-02-24 152/week @ 2025-03-03 96/week @ 2025-03-10 155/week @ 2025-03-17 137/week @ 2025-03-24 28/week @ 2025-03-31

416 downloads per month

MIT/Apache

155KB
3.5K SLoC

rb-sys-test-helpers

Helpers for testing Ruby extensions from Rust

Usage

Add this to your Cargo.toml:

[dev-dependencies]
rb-sys-env = { version = "0.1" }
rb-sys-test-helpers = { version = "0.2" }

Then, in your crate's build.rs:

pub fn main() -> Result<(), Box<dyn std::error::Error>> {
    let _ = rb_sys_env::activate()?;

    Ok(())
}

Then, you can use the with_ruby_vm function in your tests:

#[cfg(test)]
mod tests {
    use rb_sys_test_helpers::ruby_test;
    use rb_sys::{rb_num2fix, rb_int2big, FIXNUM_P};

    #[ruby_test]
    fn test_something() {
        // Your test code here will have a valid Ruby VM (hint: this works with
        // the `magnus` crate, too!)
        //
        // ...

        let int = unsafe { rb_num2fix(1) };
        let big = unsafe { rb_int2big(9999999) };

        assert!(FIXNUM_P(int));
        assert!(!FIXNUM_P(big));
    }
}

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~0.2–2.9MB
~51K SLoC