(* * Copyright (c) 2016 - present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. *) open !Utils module F = Format let tests = let open OUnit2 in let empty_string_test = let empty_string_test_ _ = assert_raises (Failure "Empty stack trace") (fun () -> Stacktrace.of_string "") in "empty_string">::empty_string_test_ in let empty_trace_test = let empty_stack_trace_s = "Exception in thread \"main\" java.lang.NullPointerException" in let trace = Stacktrace.of_string empty_stack_trace_s in let empty_trace_test_ _ = assert_equal trace.frames [] in "empty_trace">::empty_trace_test_ in let one_frame_trace_test = let one_frame_trace_test_s = "Exception in thread \"main\" java.lang.NullPointerException\n" ^ "\tat endtoend.java.checkers.crashcontext.MinimalCrashTest.main" ^ "(MinimalCrashTest.java:16)" in let trace = Stacktrace.of_string one_frame_trace_test_s in let expected = Stacktrace.make "java.lang.NullPointerException" [Stacktrace.make_frame "endtoend.java.checkers.crashcontext.MinimalCrashTest" "main" "MinimalCrashTest.java" (Some 16)] in let one_frame_trace_test_ _ = assert_equal trace expected in "one_frame_trace">::one_frame_trace_test_ in let multi_frame_trace_test = let multi_frame_trace_test_s = "Exception in thread \"main\" java.lang.NullPointerException\n\t" ^ "at endtoend.java.checkers.crashcontext.MultiStackFrameCrashTest.bar" ^ "(MultiStackFrameCrashTest.java:16)\n" ^ "\tat endtoend.java.checkers.crashcontext.MultiStackFrameCrashTest.foo" ^ "(MultiStackFrameCrashTest.java:20)\n" ^ "\tat endtoend.java.checkers.crashcontext.MultiStackFrameCrashTest.main" ^ "(MultiStackFrameCrashTest.java:24)" in let trace = Stacktrace.of_string multi_frame_trace_test_s in let class_name = "endtoend.java.checkers.crashcontext.MultiStackFrameCrashTest" in let file_name = "MultiStackFrameCrashTest.java" in let expected = Stacktrace.make "java.lang.NullPointerException" [Stacktrace.make_frame class_name "bar" file_name (Some 16); Stacktrace.make_frame class_name "foo" file_name (Some 20); Stacktrace.make_frame class_name "main" file_name (Some 24)] in let multi_frame_trace_test_ _ = assert_equal trace expected in "multi_frame_trace_test">::multi_frame_trace_test_ in let missing_line_info_test = let missing_line_info_test_s = "Exception in thread \"main\" java.lang.NullPointerException\n" ^ "\tat endtoend.java.checkers.crashcontext.MinimalCrashTest.main" ^ "(MinimalCrashTest.java)" in let trace = Stacktrace.of_string missing_line_info_test_s in let expected = Stacktrace.make "java.lang.NullPointerException" [Stacktrace.make_frame "endtoend.java.checkers.crashcontext.MinimalCrashTest" "main" "MinimalCrashTest.java" None] in let missing_line_info_test_ _ = assert_equal trace expected in "missing_line_info_test">::missing_line_info_test_ in "all_tests_suite">:::[empty_string_test; empty_trace_test; one_frame_trace_test; multi_frame_trace_test; missing_line_info_test]