X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_test.ml;h=fdab310e23eb122cf1b91246cb272fba9ad83678;hb=0f031bf216b72b6d6bbc3941f4244c898f134ce4;hp=89e317f3c3731c257f0730a380fc5998247667ec;hpb=5da420a8c9d88111ef4ccabd6b0a0c65cddb73af;p=tiger.ml.git diff --git a/compiler/src/lib/tiger/tiger_test.ml b/compiler/src/lib/tiger/tiger_test.ml index 89e317f..fdab310 100644 --- a/compiler/src/lib/tiger/tiger_test.ml +++ b/compiler/src/lib/tiger/tiger_test.ml @@ -135,7 +135,7 @@ let p_ln = print_newline let p_indent n = p "%s" (indent n) let run tests = - let error_count = ref 0 in + let failure_count = ref 0 in let run_pass ~f ~input ~expect_output ~is_error_expected = let output_status = "n/a" in let output_value = None in @@ -146,10 +146,10 @@ let run tests = | Tiger_error.T e when is_error_expected e -> status_pass () ~info:(Tiger_error.to_string e) | Tiger_error.T e -> - incr error_count; + incr failure_count; status_fail () ~info:(Tiger_error.to_string e) | e -> - incr error_count; + incr failure_count; status_fail () ~info:(Printexc.to_string e) ) in @@ -158,7 +158,7 @@ let run tests = , output_value ) | Error info -> - incr error_count; + incr failure_count; ( status_fail ~info () , output_status , output_value @@ -174,12 +174,13 @@ let run tests = | Some true -> status_pass () | Some false -> - incr error_count; + incr failure_count; status_fail () in let output_value = Some produced in (execution_status, output_status, output_value) in + let test_case_count = ref 0 in List.iter tests ~f:( fun { name @@ -189,6 +190,7 @@ let run tests = ; is_error_expected_semant } -> + incr test_case_count; let (stat_lex_exe, stat_lex_out_cmp, _) = run_pass ~f:pass_lexing @@ -223,8 +225,14 @@ let run tests = p_indent 2; p "out: %s" stat_semant_out_cmp; p_ln (); ); p "%s" bar_end; p_ln (); - let failures = !error_count in - let clr = (if failures = 0 then Green else Red) in - p "Failures: %s" (color clr (string_of_int failures)); p_ln (); + p "%s" + ( let info = + s "%d failures in %d test cases" !failure_count !test_case_count + in + match !failure_count with + | 0 -> status_pass () ~info + | _ -> status_fail () ~info + ); + p_ln (); p "%s" bar_end; p_ln (); - exit failures + exit !failure_count