:- use_module(library(iso_ext)).
:- use_module(library(os)).
+prolog_path(Prolog) :-
+ read(Body),
+ term_variables(Body, [Prolog]),
+ Body.
+
server_start([Process,Out]) :-
- getenv("PROLOG", Prolog),
+ prolog_path(Prolog),
process_create(Prolog,
["tests-pl/issue-http_open-hanging_server", "-t", "server"],
[process(Process), stdout(pipe(Out))]).
});
}
+#[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>(
file: &str,
input: impl Into<Cow<'static, str>>,
use crate::helper::load_module_test;
#[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;
// issue #831
load_module_test("tests-pl/issue_rename_file.pl", "file_renamed");
}
-#[serial]
#[test]
#[cfg(feature = "http")]
#[cfg(not(target_arch = "wasm32"))]
#[cfg_attr(miri, ignore = "it takes too long to run")]
fn http_open_hanging() {
- std::env::set_var("PROLOG", env!("CARGO_BIN_EXE_scryer-prolog"));
-
- load_module_test_with_tokio_runtime(
+ load_module_test_with_tokio_runtime_and_input(
"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"
);
}