diff options
-rw-r--r-- | test/ocamldoc/Makefile | 40 | ||||
-rw-r--r-- | testsuite/tests/tool-ocamldoc/Makefile | 14 | ||||
-rw-r--r-- | testsuite/tests/tool-ocamldoc/odoc_test.ml | 112 | ||||
-rw-r--r-- | testsuite/tests/tool-ocamldoc/t01.ml (renamed from test/ocamldoc/t1.ml) | 6 | ||||
-rw-r--r-- | testsuite/tests/tool-ocamldoc/t01.reference | 33 |
5 files changed, 161 insertions, 44 deletions
diff --git a/test/ocamldoc/Makefile b/test/ocamldoc/Makefile deleted file mode 100644 index 6051b5312..000000000 --- a/test/ocamldoc/Makefile +++ /dev/null @@ -1,40 +0,0 @@ -######################################################################### -# # -# Objective Caml # -# # -# Maxence Guesdon, projet Cristal, INRIA Rocquencourt # -# # -# Copyright 2004 Institut National de Recherche en Informatique et # -# en Automatique. All rights reserved. This file is distributed # -# under the terms of the Q Public License version 1.0. # -# # -######################################################################### - -# $Id$ - -ROOT=../.. -include $(ROOT)/config/Makefile - -CAMLC=$(ROOT)/boot/ocamlrun $(ROOT)/ocamlc -CAMLOPT=$(ROOT)/boot/ocamlrun $(ROOT)/ocamlopt -COMPFLAGS=-nostdlib -I $(ROOT)/stdlib -I KB -I Lex -OPTFLAGS=-S -CAMLYACC=$(ROOT)/yacc/ocamlyacc -YACCFLAGS=-v -CAMLLEX=$(ROOT)/boot/ocamlrun $(ROOT)/lex/ocamllex -CAMLDEP=$(ROOT)/boot/ocamlrun $(ROOT)/tools/ocamldep -CAMLRUN=$(ROOT)/byterun/ocamlrun -OCAMLDOC=$(ROOT)/boot/ocamlrun $(ROOT)/ocamldoc/ocamldoc -OCAMLDOC_TEST=$(OCAMLDOC) -g $(ROOT)/ocamldoc/odoc_test.cmo -warn-error - - -all: - for i in *.ml; do $(MAKE) TARGET=`basename $$i .ml` test_one; done - -test_one: results/$(TARGET).txt - -results/$(TARGET).txt : $(TARGET).ml - $(OCAMLDOC_TEST) -o $@ $< 2> results/$(TARGET).stderr - -clean: - rm -f results/*.txt results/*.stderr
\ No newline at end of file diff --git a/testsuite/tests/tool-ocamldoc/Makefile b/testsuite/tests/tool-ocamldoc/Makefile new file mode 100644 index 000000000..a8afb74d5 --- /dev/null +++ b/testsuite/tests/tool-ocamldoc/Makefile @@ -0,0 +1,14 @@ +CUSTOM_MODULE=odoc_test +ADD_COMPFLAGS=-I +ocamldoc + +run: $(CUSTOM_MODULE).cmo + @for file in t*.ml; do \ + echo -n " ... testing '$$file'"; \ + $(OCAMLDOC) -g $(CUSTOM_MODULE).cmo -o `basename $$file ml`result $$file; \ + diff -q `basename $$file ml`reference `basename $$file ml`result > /dev/null && echo " => passed" || (echo " => failed" && exit 1); \ + done + +clean: defaultclean + @rm -f *.result + +include ../../makefiles/Makefile.common diff --git a/testsuite/tests/tool-ocamldoc/odoc_test.ml b/testsuite/tests/tool-ocamldoc/odoc_test.ml new file mode 100644 index 000000000..49d98e2f2 --- /dev/null +++ b/testsuite/tests/tool-ocamldoc/odoc_test.ml @@ -0,0 +1,112 @@ +(***********************************************************************) +(* OCamldoc *) +(* *) +(* Maxence Guesdon, projet Cristal, INRIA Rocquencourt *) +(* *) +(* Copyright 2004 Institut National de Recherche en Informatique et *) +(* en Automatique. All rights reserved. This file is distributed *) +(* under the terms of the Q Public License version 1.0. *) +(* *) +(***********************************************************************) + +(* $Id: odoc_test.ml 6127 2004-02-20 16:28:27Z guesdon $ *) + +(** Custom generator to perform test on ocamldoc. *) + +open Odoc_info +open Odoc_info.Module +open Odoc_info.Type + +type test_kind = + Types_display + +let p = Format.fprintf + +class string_gen = + object(self) + inherit Odoc_info.Scan.scanner + + val mutable test_kinds = [] + val mutable fmt = Format.str_formatter + + method must_display_types = List.mem Types_display test_kinds + + method set_test_kinds_from_module m = + test_kinds <- List.fold_left + (fun acc (s, _) -> + match s with + "test_types_display" -> Types_display :: acc + | _ -> acc + ) + [] + ( + match m.m_info with + None -> [] + | Some i -> i.i_custom + ) + method scan_type t = + match test_kinds with + [] -> () + | _ -> + p fmt "# type %s:\n" t.ty_name; + if self#must_display_types then + ( + p fmt "# manifest (Odoc_info.string_of_type_expr):\n<[%s]>\n" + (match t.ty_manifest with + None -> "None" + | Some e -> Odoc_info.string_of_type_expr e + ); + ); + + + method scan_module_pre m = + p fmt "#\n# module %s:\n" m.m_name ; + if self#must_display_types then + ( + p fmt "# Odoc_info.string_of_module_type:\n<[%s]>\n" + (Odoc_info.string_of_module_type m.m_type); + p fmt "# Odoc_info.string_of_module_type ~complete: true :\n<[%s]>\n" + (Odoc_info.string_of_module_type ~complete: true m.m_type); + ); + true + + method scan_module_type_pre m = + p fmt "#\n# module type %s:\n" m.mt_name ; + if self#must_display_types then + ( + p fmt "# Odoc_info.string_of_module_type:\n<[%s]>\n" + (match m.mt_type with + None -> "None" + | Some t -> Odoc_info.string_of_module_type t + ); + p fmt "# Odoc_info.string_of_module_type ~complete: true :\n<[%s]>\n" + (match m.mt_type with + None -> "None" + | Some t -> Odoc_info.string_of_module_type ~complete: true t + ); + ); + true + + method generate (module_list: Odoc_info.Module.t_module list) = + let oc = open_out !Odoc_info.Args.out_file in + fmt <- Format.formatter_of_out_channel oc; + ( + try + List.iter + (fun m -> + self#set_test_kinds_from_module m; + self#scan_module_list [m]; + ) + module_list + with + e -> + prerr_endline (Printexc.to_string e) + ); + Format.pp_print_flush fmt (); + close_out oc + end + + +let my_generator = new string_gen +let _ = Odoc_info.Args.set_doc_generator + (Some (my_generator :> Odoc_info.Args.doc_generator)) diff --git a/test/ocamldoc/t1.ml b/testsuite/tests/tool-ocamldoc/t01.ml index 95882948c..6caf3d7af 100644 --- a/test/ocamldoc/t1.ml +++ b/testsuite/tests/tool-ocamldoc/t01.ml @@ -1,7 +1,5 @@ (** Testing display of types. - - {{!M}lien vers le module [M]} - - {{!type:MT.t}lien vers le type [MT.t]} - {!M} + @test_types_display *) @@ -9,7 +7,7 @@ let x = 1 module M = struct - let y = 2 + let y = 2 end diff --git a/testsuite/tests/tool-ocamldoc/t01.reference b/testsuite/tests/tool-ocamldoc/t01.reference new file mode 100644 index 000000000..72345ffec --- /dev/null +++ b/testsuite/tests/tool-ocamldoc/t01.reference @@ -0,0 +1,33 @@ +# +# module T01: +# Odoc_info.string_of_module_type: +<[sig end]> +# Odoc_info.string_of_module_type ~complete: true : +<[sig end]> +# +# module T01.M: +# Odoc_info.string_of_module_type: +<[sig end]> +# Odoc_info.string_of_module_type ~complete: true : +<[sig val y : int end]> +# +# module type T01.MT: +# Odoc_info.string_of_module_type: +<[sig end]> +# Odoc_info.string_of_module_type ~complete: true : +<[sig + type t = + string -> + int -> + string -> + string * string * string -> + string * string * string -> string * string * string -> unit + val y : int +end]> +# type T01.MT.t: +# manifest (Odoc_info.string_of_type_expr): +<[string -> + int -> + string -> + string * string * string -> + string * string * string -> string * string * string -> unit]> |