You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
3.5 KiB

(*
* 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]