pass scryer path through stream instead of env var

This commit is contained in:
Danil Platonov
2026-04-12 19:29:39 -07:00
parent 081f3c0827
commit 8e2dcd905b
3 changed files with 28 additions and 6 deletions

View File

@@ -3,8 +3,13 @@
:- use_module(library(iso_ext)). :- use_module(library(iso_ext)).
:- use_module(library(os)). :- use_module(library(os)).
prolog_path(Prolog) :-
read(Body),
term_variables(Body, [Prolog]),
Body.
server_start([Process,Out]) :- server_start([Process,Out]) :-
getenv("PROLOG", Prolog), prolog_path(Prolog),
process_create(Prolog, process_create(Prolog,
["tests-pl/issue-http_open-hanging_server", "-t", "server"], ["tests-pl/issue-http_open-hanging_server", "-t", "server"],
[process(Process), stdout(pipe(Out))]). [process(Process), stdout(pipe(Out))]).

View File

@@ -52,6 +52,25 @@ pub(crate) fn load_module_test_with_tokio_runtime<T: Expectable>(file: &str, exp
}); });
} }
#[cfg(not(target_arch = "wasm32"))]
pub(crate) fn load_module_test_with_tokio_runtime_and_input<T: Expectable>(
file: &str,
input: impl Into<Cow<'static, str>>,
expected: T
) {
let runtime = tokio::runtime::Builder::new_multi_thread()
.enable_all()
.build()
.unwrap();
runtime.block_on(async move {
let mut wam = MachineBuilder::default()
.with_streams(StreamConfig::in_memory().with_user_input(InputStreamConfig::string(input)))
.build();
expected.assert_eq(wam.test_load_file(file).as_slice())
});
}
pub(crate) fn load_module_test_with_input<T: Expectable>( pub(crate) fn load_module_test_with_input<T: Expectable>(
file: &str, file: &str,
input: impl Into<Cow<'static, str>>, input: impl Into<Cow<'static, str>>,

View File

@@ -1,6 +1,6 @@
use crate::helper::load_module_test; use crate::helper::load_module_test;
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
use crate::helper::load_module_test_with_tokio_runtime; use crate::helper::load_module_test_with_tokio_runtime_and_input;
use serial_test::serial; use serial_test::serial;
// issue #831 // issue #831
@@ -155,16 +155,14 @@ fn issue_rename_file() {
load_module_test("tests-pl/issue_rename_file.pl", "file_renamed"); load_module_test("tests-pl/issue_rename_file.pl", "file_renamed");
} }
#[serial]
#[test] #[test]
#[cfg(feature = "http")] #[cfg(feature = "http")]
#[cfg(not(target_arch = "wasm32"))] #[cfg(not(target_arch = "wasm32"))]
#[cfg_attr(miri, ignore = "it takes too long to run")] #[cfg_attr(miri, ignore = "it takes too long to run")]
fn http_open_hanging() { fn http_open_hanging() {
std::env::set_var("PROLOG", env!("CARGO_BIN_EXE_scryer-prolog")); load_module_test_with_tokio_runtime_and_input(
load_module_test_with_tokio_runtime(
"tests-pl/issue-http_open-hanging.pl", "tests-pl/issue-http_open-hanging.pl",
format!("PROLOG={:?}.", env!("CARGO_BIN_EXE_scryer-prolog")),
"received response with status code:200\nreceived response with status code:200\nreceived response with status code:200\nreceived response with status code:200\nreceived response with status code:200\n" "received response with status code:200\nreceived response with status code:200\nreceived response with status code:200\nreceived response with status code:200\nreceived response with status code:200\n"
); );
} }