use libperl_rs::{thx, Perl, PerlInterpreter};
#[thx]
fn record_call(seen: &mut Option<*mut PerlInterpreter>, sentinel: i32) -> i32 {
#[cfg(perl_useithreads)]
{
*seen = Some(my_perl);
}
#[cfg(not(perl_useithreads))]
{
let _ = seen;
}
sentinel
}
#[test]
fn thx_injects_my_perl_in_threaded_build() {
let perl = Perl::new();
let my_perl = perl.as_ptr();
let mut seen: Option<*mut PerlInterpreter> = None;
#[cfg(perl_useithreads)]
let rc = record_call(my_perl, &mut seen, 42);
#[cfg(not(perl_useithreads))]
let rc = {
let _ = my_perl; record_call(&mut seen, 42)
};
assert_eq!(rc, 42);
#[cfg(perl_useithreads)]
assert_eq!(seen, Some(my_perl), "threaded build should have captured my_perl");
#[cfg(not(perl_useithreads))]
assert!(seen.is_none(), "non-threaded build should not touch `seen`");
}