MAKEFLAGS := --no-builtin-rules
+DIR_TEST_CASES := ./testcases
+
EXE_TYPE := native # byte | native
EXECUTABLES := tigerc tigert
OCAMLBUILD_FLAGS_PKGS := -pkg unix
all \
build \
clean \
+ test_all \
+ test_book \
+ test_micro \
test
all: clean
@$(OCAMLBUILD) -clean
@rm -rf ./bin
-test: build
- @./bin/exe/tigert
+test: test_all
+
+test_all: build
+ @./bin/exe/tigert all -dir $(DIR_TEST_CASES)
+
+test_book: build
+ @./bin/exe/tigert book -dir $(DIR_TEST_CASES)
+
+test_micro: build
+ @./bin/exe/tigert micro
+type suite =
+ | All of {dir : string}
+ | Book of {dir : string}
+ | Micro
+
let () =
- let dir = ref "testcases" in
- Arg.parse [("-dir", Arg.String (fun s -> dir := s), "")] (fun _ -> ()) "";
- let dir = !dir in
- Tiger.Test.run (Tiger.Test_cases.all ~dir)
+ let suite = ref Micro in
+ let spec = ref [] in
+ Arg.parse_dynamic
+ spec
+ (function
+ | "micro" ->
+ spec := []
+ | "book" ->
+ spec := [("-dir", Arg.String (fun dir -> suite := Book {dir}), "")]
+ | "all" ->
+ spec := [("-dir", Arg.String (fun dir -> suite := All {dir}), "")]
+ | _ -> ()
+ )
+ "";
+ let suite =
+ match !suite with
+ | All {dir} -> Tiger.Test_cases.all ~dir
+ | Book {dir} -> Tiger.Test_cases.book ~dir
+ | Micro -> Tiger.Test_cases.micro
+ in
+ Tiger.Test.run suite