From 081f3c0827c551e2665c99e458e3392d1a016974 Mon Sep 17 00:00:00 2001 From: Danil Platonov Date: Sat, 11 Apr 2026 08:59:01 -0700 Subject: [PATCH] http server test, and also unignore http client test --- tests-pl/issue-http_open-hanging.pl | 37 ++++++++++++++++++---- tests-pl/issue-http_open-hanging_server.pl | 8 +++++ tests/scryer/issues.rs | 4 ++- 3 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 tests-pl/issue-http_open-hanging_server.pl diff --git a/tests-pl/issue-http_open-hanging.pl b/tests-pl/issue-http_open-hanging.pl index b26b5d06..52018dc2 100644 --- a/tests-pl/issue-http_open-hanging.pl +++ b/tests-pl/issue-http_open-hanging.pl @@ -1,5 +1,21 @@ -:- module(http_open_hanging, [submit_request/0]). +% Server +:- use_module(library(process)). +:- use_module(library(iso_ext)). +:- use_module(library(os)). +server_start([Process,Out]) :- + getenv("PROLOG", Prolog), + process_create(Prolog, + ["tests-pl/issue-http_open-hanging_server", "-t", "server"], + [process(Process), stdout(pipe(Out))]). + +server_wait_start([_Process, Out]) :- + get_char(Out, _C). + +server_stop([Process,_Out]) :- + process_kill(Process). + +% Client :- use_module(library(charsio)). :- use_module(library(http/http_open)). @@ -10,14 +26,21 @@ send_request :- request_headers([]), headers(_) ], - http_open("https://scryer.pl", _Stream, Options), + http_open("http://localhost:8472", _Stream, Options), write_term('received response with status code':StatusCode, []), nl. main :- - send_request, - send_request, - send_request, - send_request, - send_request. + setup_call_cleanup( + server_start(Server), + ( + server_wait_start(Server), + send_request, + send_request, + send_request, + send_request, + send_request + ), + server_stop(Server) + ). :- initialization(main). \ No newline at end of file diff --git a/tests-pl/issue-http_open-hanging_server.pl b/tests-pl/issue-http_open-hanging_server.pl new file mode 100644 index 00000000..826c2627 --- /dev/null +++ b/tests-pl/issue-http_open-hanging_server.pl @@ -0,0 +1,8 @@ +:- use_module(library(process)). +:- use_module(library(http/http_server)). + +server :- + http_listen(8472, [get(/, hello)]). + +hello(_Req, Res) :- + http_body(Res, text("Ok")). \ No newline at end of file diff --git a/tests/scryer/issues.rs b/tests/scryer/issues.rs index 73d68430..d5e98cdd 100644 --- a/tests/scryer/issues.rs +++ b/tests/scryer/issues.rs @@ -155,12 +155,14 @@ fn issue_rename_file() { 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")] -#[cfg_attr(not(miri), ignore = "flaky due to network requests")] fn http_open_hanging() { + std::env::set_var("PROLOG", env!("CARGO_BIN_EXE_scryer-prolog")); + load_module_test_with_tokio_runtime( "tests-pl/issue-http_open-hanging.pl", "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" -- 2.54.0