From 2033ef4e300fff571f13af677608c075386de783 Mon Sep 17 00:00:00 2001 From: Julien Sagot Date: Thu, 29 Aug 2024 15:56:38 +0200 Subject: [PATCH 1/2] Tezt/Curl: factorize code --- tezt/lib_tezos/curl.ml | 37 ++++++++++++------------------------- 1 file changed, 12 insertions(+), 25 deletions(-) diff --git a/tezt/lib_tezos/curl.ml b/tezt/lib_tezos/curl.ml index cb7f59fc0932..aabfeebf4939 100644 --- a/tezt/lib_tezos/curl.ml +++ b/tezt/lib_tezos/curl.ml @@ -28,34 +28,16 @@ let parse url process = let* output = Process.check_and_read_stdout process in return (JSON.parse ~origin:url output) -let get ?runner ?(args = []) url = +let get0 ?runner ?(args = []) url format = let process = Process.spawn ?runner "curl" (args @ ["-s"; url]) in - Runnable.{value = process; run = parse url} + Runnable.{value = process; run = format} -let get_raw ?runner ?(args = []) url = - let process = Process.spawn ?runner "curl" (args @ ["-s"; url]) in - Runnable.{value = process; run = Process.check_and_read_stdout} +let get ?runner ?args url = get0 ?runner ?args url (parse url) -let post ?runner ?(args = []) url data = - let process = - Process.spawn - ?runner - "curl" - (args - @ [ - "-X"; - "POST"; - "-H"; - "Content-Type: application/json"; - "-s"; - url; - "-d"; - JSON.encode data; - ]) - in - Runnable.{value = process; run = parse url} +let get_raw ?runner ?args url = + get0 ?runner ?args url Process.check_and_read_stdout -let post_raw ?runner ?(args = []) url data = +let post0 ?runner ?(args = []) url data format = let process = Process.spawn ?runner @@ -72,4 +54,9 @@ let post_raw ?runner ?(args = []) url data = JSON.encode data; ]) in - Runnable.{value = process; run = Process.check_and_read_stdout} + Runnable.{value = process; run = format} + +let post ?runner ?args url data = post0 ?runner ?args url data (parse url) + +let post_raw ?runner ?args url data = + post0 ?runner ?args url data Process.check_and_read_stdout -- GitLab From f5664cdc733a7379a7d155db4b750d13c80cd644 Mon Sep 17 00:00:00 2001 From: Julien Sagot Date: Thu, 29 Aug 2024 16:01:36 +0200 Subject: [PATCH 2/2] Tezt/Curl: add PUT method helpers --- tezt/lib_tezos/curl.ml | 15 +++++++++++---- tezt/lib_tezos/curl.mli | 30 ++++++++++++++++++++++++------ 2 files changed, 35 insertions(+), 10 deletions(-) diff --git a/tezt/lib_tezos/curl.ml b/tezt/lib_tezos/curl.ml index aabfeebf4939..f3118a6c1b92 100644 --- a/tezt/lib_tezos/curl.ml +++ b/tezt/lib_tezos/curl.ml @@ -37,7 +37,7 @@ let get ?runner ?args url = get0 ?runner ?args url (parse url) let get_raw ?runner ?args url = get0 ?runner ?args url Process.check_and_read_stdout -let post0 ?runner ?(args = []) url data format = +let post_put meth ?runner ?(args = []) url data format = let process = Process.spawn ?runner @@ -45,7 +45,7 @@ let post0 ?runner ?(args = []) url data format = (args @ [ "-X"; - "POST"; + meth; "-H"; "Content-Type: application/json"; "-s"; @@ -56,7 +56,14 @@ let post0 ?runner ?(args = []) url data format = in Runnable.{value = process; run = format} -let post ?runner ?args url data = post0 ?runner ?args url data (parse url) +let post ?runner ?args url data = + post_put "POST" ?runner ?args url data (parse url) let post_raw ?runner ?args url data = - post0 ?runner ?args url data Process.check_and_read_stdout + post_put "POST" ?runner ?args url data Process.check_and_read_stdout + +let put ?runner ?args url data = + post_put "PUT" ?runner ?args url data (parse url) + +let put_raw ?runner ?args url data = + post_put "PUT" ?runner ?args url data Process.check_and_read_stdout diff --git a/tezt/lib_tezos/curl.mli b/tezt/lib_tezos/curl.mli index 1d3928d77c8f..a10aaba38c35 100644 --- a/tezt/lib_tezos/curl.mli +++ b/tezt/lib_tezos/curl.mli @@ -26,9 +26,8 @@ (** [get url] returns a runnable requesting [url] with curl. - The response is parsed and returned as JSON. - - Fails if [curl] is not found in path. + The response is parsed and returned as JSON. + Fails if [curl] is not found in path. *) val get : ?runner:Runner.t -> ?args:string list -> string -> JSON.t Runnable.process @@ -39,9 +38,8 @@ val get_raw : (** [post url data] returns a runnable posting [data] to [url] with curl. - The response is parsed and returned as JSON. - - Fails if [curl] is not found in path. *) + The response is parsed and returned as JSON. + Fails if [curl] is not found in path. *) val post : ?runner:Runner.t -> ?args:string list -> @@ -49,9 +47,29 @@ val post : JSON.t -> JSON.t Runnable.process +(** Same as [post] but does not parse the returned value *) val post_raw : ?runner:Runner.t -> ?args:string list -> string -> JSON.t -> string Runnable.process + +(** [put url data] returns a runnable putting [data] to [url] with curl. + + The response is parsed and returned as JSON. + Fails if [curl] is not found in path. *) +val put : + ?runner:Runner.t -> + ?args:string list -> + string -> + JSON.t -> + JSON.t Runnable.process + +(** Same as [put] but does not parse the returned value *) +val put_raw : + ?runner:Runner.t -> + ?args:string list -> + string -> + JSON.t -> + string Runnable.process -- GitLab