Skip to content

Commit 735846d

Browse files
committed
Fix errno tests
1 parent 772b192 commit 735846d

9 files changed

Lines changed: 37 additions & 29 deletions

File tree

CodeHawk/CHT/CHC_tests/cchanalyze_tests/tcchanalyze/tCHCchanalyzeUtils.ml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,16 @@ let unpack_tar_gz (predicate: string) (filename: string) =
6060

6161

6262
let analysis_setup
63-
?(domains=default_domains) (predicate: string) (filename: string) =
63+
?(domains=default_domains) ?(summaries_jar=None) (predicate: string) (filename: string) =
6464
begin
6565
unpack_tar_gz predicate filename;
6666
system_settings#set_projectname filename;
6767
system_settings#set_cfilename filename;
68-
CCHFunctionSummary.function_summary_library#add_summary_jar "testinputs/PErrnoWritten/cchsummaries.jar";
69-
CCHProofScaffolding.proof_scaffolding#reset;
68+
begin match summaries_jar with
69+
| Some s -> CCHFunctionSummary.function_summary_library#add_summary_jar s
70+
| _ -> ()
71+
end;
72+
CCHFileContract.file_contract#reset;
7073

7174
(if system_settings#is_output_parameter_analysis then
7275
CHTraceResult.tget_ok

CodeHawk/CHT/CHC_tests/cchanalyze_tests/tcchanalyze/tCHCchanalyzeUtils.mli

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@
7777
obligation present.
7878
*)
7979
val analysis_setup:
80-
?domains:string list -> string -> string -> unit CHTraceResult.traceresult
80+
?domains:string list -> ?summaries_jar:string option -> string -> string -> unit CHTraceResult.traceresult
8181

8282

8383
(** [analysis_take_down filename] removes the directory [filename.cch] from

CodeHawk/CHT/CHC_tests/cchanalyze_tests/txcchanalyze/cCHPOCheckErrnoWrittenTest.ml

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,42 +44,45 @@ let po_filter (po: proof_obligation_int): proof_obligation_int option =
4444
| PErrnoWritten -> Some po
4545
| _ -> None
4646

47+
let summaries_jar = Some "testinputs/PErrnoWritten/cchsummaries.jar"
4748

4849
(* See CHT/CHC_tests/cchanalyze_tests/tcchanalyze/tCHCchanalyzeUtils.mli
4950
for a description and example of how to specify the tests.
5051
*)
5152
let check_safe () =
5253
let tests = [
5354
("strtoul_errno",
54-
"errno_written_strtoul", "main",
55+
"errno_written_strtoul", "main_strtoul",
5556
[], -1, -1,
5657
None, "");
5758

5859
("fopen_errno",
59-
"errno_written_fopen", "main",
60+
"errno_written_fopen", "main_fopen",
6061
[], -1, -1,
6162
None, "");
6263

63-
(* ("fclose_errno",
64-
"errno_written_fclose", "foo",
64+
("fclose_errno",
65+
"errno_written_fclose", "main_fclose",
6566
[], -1, -1,
66-
None, ""); *)
67-
(* ("fseek_errno",
68-
"errno_written_fseek", "main",
67+
None, "");
68+
69+
("fseek_errno",
70+
"errno_written_fseek", "main_fseek",
6971
[], -1, -1,
70-
None, ""); *)
72+
None, "");
7173
] in
7274
begin
7375
TS.new_testsuite (testname ^ "_check_safe") lastupdated;
7476
CHTiming.disable_timing ();
77+
CHLogger.activate_diagnostics();
7578

7679
List.iter
7780
(fun (title, filename, funname, reqargs, line, byte, xdetail, expl) ->
7881
TS.add_simple_test
7982
~title
8083
(fun () ->
8184
let _ = CCHSettings.system_settings#set_errno_written_analysis in
82-
let _ = CU.analysis_setup "PErrnoWritten" filename in
85+
let _ = CU.analysis_setup ~summaries_jar "PErrnoWritten" filename in
8386
let po_s = proof_scaffolding#get_proof_obligations funname in
8487
let po_s = List.filter_map po_filter po_s in
8588
let tgtpo_o = CU.select_target_po ~reqargs ~line ~byte po_s in
@@ -102,34 +105,33 @@ let check_safe () =
102105
end
103106

104107

105-
(* See CHT/CHC_tests/cchanalyze_tests/tcchanalyze/tCHCchanalyzeUtils.mli
106-
for a description and example of how to specify the tests.
107-
*)
108-
let _check_open () =
108+
let check_not_safe () =
109109
let tests = [
110110
("not_proveable",
111-
"errno_written_foo", "main",
112-
[], -1, -1,
113-
None, "");
111+
"errno_written_unsafe", "main_unsafe",
112+
[], -1, -1)
114113
] in
115114
begin
116115
TS.new_testsuite (testname ^ "_check_open") lastupdated;
117116
CHTiming.disable_timing ();
118117

119118
List.iter
120-
(fun (title, filename, funname, reqargs, line, byte, xdetail, expl) ->
119+
(fun (title, filename, funname, reqargs, line, byte) ->
121120
TS.add_simple_test
122121
~title
123122
(fun () ->
124123
let _ = CCHSettings.system_settings#set_errno_written_analysis in
125-
let _ = CU.analysis_setup "PErrnoWritten" filename in
124+
let _ = CU.analysis_setup ~summaries_jar "PErrnoWritten" filename in
126125
let po_s = proof_scaffolding#get_proof_obligations funname in
127126
let po_s = List.filter_map po_filter po_s in
128127
let tgtpo_o = CU.select_target_po ~reqargs ~line ~byte po_s in
129128
begin
130129
CU.analysis_take_down filename;
131130
match tgtpo_o with
132-
| Some po -> CA.expect_violation_detail ~po ~xdetail ~expl ()
131+
| Some po when po#get_status <> Green -> ()
132+
| Some po ->
133+
A.fail_msg ("Expected proof obligation should not valid, but got "
134+
^ (CCHPreSumTypeSerializer.po_status_mfts#ts po#get_status))
133135
| _ ->
134136
let s_po_s = List.map CU.located_po_to_string po_s in
135137
A.fail_msg
@@ -146,8 +148,11 @@ let _check_open () =
146148

147149
let () =
148150
begin
149-
TS.new_testfile testname lastupdated;
151+
CHLogger.activate_diagnostics();
152+
TS.new_testfile (testname ^ "0") lastupdated;
150153
check_safe ();
154+
check_not_safe ();
155+
TS.exit_file ();
156+
()
151157
(* check_open (); *)
152-
TS.exit_file ()
153158
end

CodeHawk/CHT/CHC_tests/cchanalyze_tests/txcchanalyze/dune

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
(tests
22
(names
3-
;; cCHPOCheckInitializedTest
4-
;; cCHPOCheckLocallyInitializedTest
5-
;; cCHPOCheckOutputParameterInitializedTest
3+
cCHPOCheckInitializedTest
4+
cCHPOCheckLocallyInitializedTest
5+
cCHPOCheckOutputParameterInitializedTest
66
cCHPOCheckErrnoWrittenTest
77
)
88
(deps
@@ -22,7 +22,7 @@
2222
testinputs/PLocallyInitialized/locally_initialized_rl_memlval_002.cch.tar.gz
2323
testinputs/POutputParameterInitialized/output_parameter_initialized_rl_inv_xpr_001.cch.tar.gz
2424
testinputs/PErrnoWritten/errno_written_fclose.cch.tar.gz
25-
testinputs/PErrnoWritten/errno_written_foo.cch.tar.gz
25+
testinputs/PErrnoWritten/errno_written_unsafe.cch.tar.gz
2626
testinputs/PErrnoWritten/errno_written_fopen.cch.tar.gz
2727
testinputs/PErrnoWritten/errno_written_fseek.cch.tar.gz
2828
testinputs/PErrnoWritten/errno_written_strtoul.cch.tar.gz

0 commit comments

Comments
 (0)