From: Thierry Marianne Date: Wed, 4 Mar 2026 12:57:17 +0000 (+0100) Subject: move test to tests/scryer/ffi.rs X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=16ed1040d251cfc9d0fb38baad19b579548f2787;p=scryer-prolog.git move test to tests/scryer/ffi.rs Signed-off-by: Thierry Marianne --- diff --git a/tests/scryer/ffi.rs b/tests/scryer/ffi.rs index abe5c9b7..bbc24c50 100644 --- a/tests/scryer/ffi.rs +++ b/tests/scryer/ffi.rs @@ -302,3 +302,24 @@ fn ffi_heap() { r#"133742"#, ); } + +#[test] +#[cfg_attr(miri, ignore = "ffi")] +fn ffi_utf8_panic() { + let dynlib_path = build_dynamic_library( + "ffi_utf8_panic", + r##" + #[unsafe(no_mangle)] + extern "C" fn ffi_invalid_utf8_cstr() -> *const core::ffi::c_char { + b"Invalid\xFFUTF8\x00".as_ptr() as *const _ + } + "##, + ); + + load_module_test_with_input( + "tests-pl/ffi_utf8_panic.pl", + format!("LIB={dynlib_path:?}."), + // Evaluates to: 'Invalid\xFFUTF8\n' + "[73,110,118,97,108,105,100,255,85,84,70,56]\n", + ); +} diff --git a/tests/scryer/issues.rs b/tests/scryer/issues.rs index 6bfd6871..bedaa9bf 100644 --- a/tests/scryer/issues.rs +++ b/tests/scryer/issues.rs @@ -151,49 +151,3 @@ fn http_open_hanging() { ); } -#[test] -#[cfg_attr(miri, ignore = "ffi")] -fn ffi_utf8_panic() { - let tmp_dir: &std::path::Path = env!("CARGO_TARGET_TMPDIR").as_ref(); - let name = "ffi_utf8_panic"; - let src = r##" - #[unsafe(no_mangle)] - extern "C" fn ffi_invalid_utf8_cstr() -> *const core::ffi::c_char { - c"Invalid\xFFUTF8".as_ptr() - } - "##; - - let mut child = std::process::Command::new("rustc") - .stdin(std::process::Stdio::piped()) - .args(["--edition", "2024"]) - .arg(format!("--target={}", current_platform::CURRENT_PLATFORM)) - .arg("--crate-type=dylib") - .arg(format!("--crate-name={name}")) - .arg("--out-dir") - .arg(tmp_dir) - .arg("-") - .spawn() - .unwrap(); - - use std::io::Write; - child - .stdin - .take() - .unwrap() - .write_all(src.as_bytes()) - .unwrap(); - assert!(child.wait().unwrap().success()); - - let dynlib_path = tmp_dir.join(format!( - "{}{name}{}", - std::env::consts::DLL_PREFIX, - std::env::consts::DLL_SUFFIX - )); - - crate::helper::load_module_test_with_input( - "tests-pl/ffi_utf8_panic.pl", - format!("LIB={dynlib_path:?}."), - // Evaluates to: 'Invalid\xFFUTF8\n' - "[73,110,118,97,108,105,100,255,85,84,70,56]\n", - ); -}