File: inline_tests_sample_client.ml

package info (click to toggle)
ppx-inline-test 0.17.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 364 kB
  • sloc: ml: 1,367; makefile: 15; javascript: 3; ansic: 2; sh: 2
file content (45 lines) | stat: -rw-r--r-- 1,555 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
open! Base

let show_init_result init_result =
  match init_result with
  | Error err -> Printf.sprintf "<Error>\n%s" err |> Stdio.print_endline
  | Ok init_result ->
    (match init_result with
     | None -> Stdio.print_endline "<OK>"
     | Some help -> Printf.sprintf "<Help>\n%s" help |> Stdio.print_endline)
;;

let show_using_color () =
  Stdio.print_endline "Checking whether the inline tests should [use_color]";
  match Ppx_inline_test_lib.use_color () with
  | use_color -> Printf.sprintf "<OK>\n[use_color] is %b" use_color |> Stdio.print_endline
  | exception exn ->
    Printf.sprintf "<Error>\n%s" (Exn.to_string exn) |> Stdio.print_endline
;;

let rec extract_flag args ~flag =
  match args with
  | [] | [ _ ] -> args, None
  | flag' :: arg :: args ->
    if String.equal flag' flag
    then args, Some arg
    else (
      let tl, res = extract_flag (arg :: args) ~flag in
      flag' :: tl, res)
;;

let () =
  let args = Array.to_list (Sys.get_argv ()) in
  let args, show_using_color_flag = extract_flag args ~flag:"-show-using-color" in
  match show_using_color_flag with
  | Some "before" -> show_using_color ()
  | _ ->
    Stdio.print_endline "(About to call [init] the first time)";
    args |> Ppx_inline_test_lib.init |> show_init_result;
    (match show_using_color_flag with
     | Some "after" -> show_using_color ()
     | _ ->
       Stdio.print_endline "(About to call [init] the second time)";
       args |> Ppx_inline_test_lib.init |> show_init_result;
       Stdio.print_endline "(Was able to call [init] twice)")
;;