]> Repositorios git - scryer-prolog.git/commitdiff
http server test, and also unignore http client test
authorDanil Platonov <[email protected]>
Sat, 11 Apr 2026 15:59:01 +0000 (08:59 -0700)
committerDanil Platonov <[email protected]>
Sat, 11 Apr 2026 15:59:01 +0000 (08:59 -0700)
tests-pl/issue-http_open-hanging.pl
tests-pl/issue-http_open-hanging_server.pl [new file with mode: 0644]
tests/scryer/issues.rs

index b26b5d06f62fee558a241e504415e94783e2c855..52018dc29baeb2b4b172755e74c5f26cdb727307 100644 (file)
@@ -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 (file)
index 0000000..826c262
--- /dev/null
@@ -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
index 73d68430059cefa033fdc7281fa1e5bb9c4c4f22..d5e98cdd75fd0bb3d78e8ea4c1dd72b2ef138103 100644 (file)
@@ -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"