Crates.io | rb-sys-test-helpers |
lib.rs | rb-sys-test-helpers |
version | 0.2.1 |
source | src |
created_at | 2023-04-14 13:25:42.013164 |
updated_at | 2024-11-20 17:28:54.746416 |
description | Helpers for testing Ruby extensions from Rust |
homepage | https://github.com/oxidize-rb/rb-sys |
repository | https://github.com/oxidize-rb/rb-sys |
max_upload_size | |
id | 839169 |
size | 36,017 |
rb-sys-test-helpers
Helpers for testing Ruby extensions from Rust
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));
}
}
Licensed under either of
at your option.
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.