summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Clerc <xavier.clerc@inria.fr>2010-01-25 14:21:37 +0000
committerXavier Clerc <xavier.clerc@inria.fr>2010-01-25 14:21:37 +0000
commit1c8ffcff228613bb08378d255c281e3a5575fd71 (patch)
tree586d7c4aaff1b858a93cd000782ce531c98270fc
parent9fda155c66603f97a13fd2d591fc28fb301df1fe (diff)
downloadocaml-1c8ffcff228613bb08378d255c281e3a5575fd71.tar.gz
Tests moved to 'tool-ocamldoc'
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@9578 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
-rw-r--r--test/ocamldoc/Makefile40
-rw-r--r--testsuite/tests/tool-ocamldoc/Makefile14
-rw-r--r--testsuite/tests/tool-ocamldoc/odoc_test.ml112
-rw-r--r--testsuite/tests/tool-ocamldoc/t01.ml (renamed from test/ocamldoc/t1.ml)6
-rw-r--r--testsuite/tests/tool-ocamldoc/t01.reference33
5 files changed, 161 insertions, 44 deletions
diff --git a/test/ocamldoc/Makefile b/test/ocamldoc/Makefile
deleted file mode 100644
index 6051b53129..0000000000
--- 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 0000000000..a8afb74d59
--- /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 0000000000..49d98e2f2c
--- /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 95882948ce..6caf3d7afc 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 0000000000..72345ffecd
--- /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]>