summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xrun_tests.sh2
-rw-r--r--src/Tamasheq.ml16
-rw-r--r--tests/AssertFalse.expected1
-rw-r--r--tests/AssertFalse.ml1
4 files changed, 16 insertions, 4 deletions
diff --git a/run_tests.sh b/run_tests.sh
index 8d6e75b..e828c67 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -10,7 +10,7 @@ for input in *.ml; do
name="${input%\.ml}"
output="$tmp/${input/ml/output}"
- if ../tamasheq -denv -o "$tmp" "$input" > "$output" 2>&1; then
+ if ../tamasheq -denv -o "$tmp" "$input" -t > "$output" 2>&1; then
if cmp -s "$expected" "$output"; then
printf "%-20s\tSUCCESS\n" "$name" >&2
rm "$tmp/$name"*
diff --git a/src/Tamasheq.ml b/src/Tamasheq.ml
index d5e17b0..22f9d8f 100644
--- a/src/Tamasheq.ml
+++ b/src/Tamasheq.ml
@@ -27,6 +27,7 @@ let files = Queue.create ()
let hooks = Queue.create ()
let intfs = Queue.create ()
let outdir = ref "."
+let test = ref false
let load_mli filename outdir =
let open Pparse in
@@ -108,6 +109,7 @@ let () =
"-dlam", Unit (fun () -> denv := not (!dlam)), " Print the Lambda AST";
"-h" , String (fun s -> Queue.add s hooks) , "<hook> Run <hook>";
"-o" , String (fun s -> outdir := s) , "<dir> Output files in <dir>";
+ "-t" , Unit (fun s -> test := not (!test)), " Always exit successfully";
"--" , Rest (fun s -> Queue.add s argsk) , " (undocumented)";
]
in
@@ -144,8 +146,16 @@ let () =
List.iter (Printlambda.lambda pp >> Format.print_newline) lambda
;
- List.iter (fun l -> ignore @$ eval env [] l) lambda;
+ try
+ begin
+ List.iter (fun l -> ignore @$ eval env [] l) lambda;
- if !denv then
- Environment.dump env stderr
+ if !denv then
+ Environment.dump env stderr
+ end
+ with exn ->
+ if !test then
+ prerr_endline @$ Printexc.to_string exn
+ else
+ raise exn
end
diff --git a/tests/AssertFalse.expected b/tests/AssertFalse.expected
new file mode 100644
index 0000000..1b12ae5
--- /dev/null
+++ b/tests/AssertFalse.expected
@@ -0,0 +1 @@
+File "AssertFalse.ml", line 1, characters 8-14: Assertion failed
diff --git a/tests/AssertFalse.ml b/tests/AssertFalse.ml
new file mode 100644
index 0000000..ff92592
--- /dev/null
+++ b/tests/AssertFalse.ml
@@ -0,0 +1 @@
+let x = assert false