# New Ticket Created by  Joshua Hoblitt 
# Please include the string:  [perl #37100]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=37100 >


This patch adds a new test, t/docs/pod.t, that scans through the parrot
tree and checks the Pod syntax of all files identified by Pod::Find as
containing Pod markup.  This is invoked by a new test target named
"doc_tests" which has been added to the "fulltest" target.  This patch
also fixes all of the syntax errors currently found by the new test.  

 MANIFEST                      |    1 +
 charset/gen_tables.pl         |    4 ++++
 config/gen/makefiles/root.in  |    7 ++++++-
 docs/pdds/pdd04_datatypes.pod |    4 ----
 docs/pdds/pdd09_gc.pod        |    4 ++--
 lib/Test/More.pm              |    3 +++
 ops/pic.ops                   |    4 ++--
 t/doc/pod.t                   |   29 +++++++++++++++++++++++++++++
 8 files changed, 47 insertions(+), 9 deletions(-)
Index: docs/pdds/pdd04_datatypes.pod
===================================================================
--- docs/pdds/pdd04_datatypes.pod       (revision 9152)
+++ docs/pdds/pdd04_datatypes.pod       (working copy)
@@ -32,16 +32,12 @@
 typedefs C<INTVAL> and C<UINTVAL> get you a platform-native signed and unsigned
 integer respectively.
 
-=back
-
 =head2 Floating point data types
 
 Floating point data types are generically referred to as C<NUM>s.  These are
 whatever size float was chosen when parrot was configured. The C level typedef
 C<FLOATVAL> will get you one of these.
 
-=back
-
 =head2 String data types
 
 Parrot has a single internal string form:
Index: docs/pdds/pdd09_gc.pod
===================================================================
--- docs/pdds/pdd09_gc.pod      (revision 9152)
+++ docs/pdds/pdd09_gc.pod      (working copy)
@@ -205,13 +205,13 @@
 
 which might do nothing if the object is already marked live.
 
-=back
-
 =item C<void (*init_pool) (Interp*, struct Small_Object_Pool *)>
 
 A function to initialize the given pool. This function should set
 the following object allocation functions for the given pool.
 
+=back
+
 =head2 Object allocation
 
 Each header pool provides one function pointer to get a new object
Index: charset/gen_tables.pl
===================================================================
--- charset/gen_tables.pl       (revision 9152)
+++ charset/gen_tables.pl       (working copy)
@@ -33,6 +33,8 @@
  */
 HEADER
 
+=over
+
 =item B<classify>( $chr )
 
 Character classification
@@ -66,6 +68,8 @@
 
 Create a whole character table
 
+=back
+
 =cut
 
 sub create_table {
Index: ops/pic.ops
===================================================================
--- ops/pic.ops (revision 9152)
+++ ops/pic.ops (working copy)
@@ -26,12 +26,12 @@
 
 These operations take an infix operation number and PMC arguments.
 
-=over 4
-
 ########################################
 
 =cut
 
+=over 4
+
 =item B<pic_infix__>(inconst INT, in PMC, in PMC)
 
 One for fun and MOPS.
Index: lib/Test/More.pm
===================================================================
--- lib/Test/More.pm    (revision 9152)
+++ lib/Test/More.pm    (working copy)
@@ -999,6 +999,8 @@
 Test::Differences and Test::Deep provide more in-depth functionality
 along these lines.
 
+=back
+
 =cut
 
 use vars qw(@Data_Stack %Refs_Seen);
@@ -1115,6 +1117,7 @@
 
 They may be deprecated in future versions.
 
+=over
 
 =item B<eq_array>
 
Index: MANIFEST
===================================================================
--- MANIFEST    (revision 9152)
+++ MANIFEST    (working copy)
@@ -1778,6 +1778,7 @@
 src/vtables.c                                     []
 src/warnings.c                                    []
 t/benchmarks.t                                    []
+t/doc/pod.t                                       [] 
 t/dynclass/foo.t                                  []
 t/dynclass/gdbmhash.t                             []
 t/dynclass/pybuiltin.t                            []
Index: t/doc/pod.t
===================================================================
--- t/doc/pod.t (revision 0)
+++ t/doc/pod.t (revision 0)
@@ -0,0 +1,29 @@
+#! perl -w
+# Copyright: 2005 The Perl Foundation.  All Rights Reserved.
+# $Id$
+
+use strict;
+
+use vars qw( %docs $n_docs );
+
+BEGIN {
+    eval "use Pod::Find";
+    if ($@) {
+        print "1..1\nok 1 # skip Pod::Find not installed\n";
+        exit;
+    }
+    %docs = Pod::Find::pod_find(
+        { -verbose => 0, -inc => 0 },
+        qw( . ) # search path(s)
+    );
+
+    $n_docs = scalar keys %docs;
+}
+
+use Test::More tests => $n_docs;
+
+eval "use Test::Pod 0.95";
+SKIP: {
+    skip "Test::Pod 0.95 not installed.", $n_docs if $@;
+    Test::Pod::pod_file_ok( $_ ) foreach keys %docs;
+}
Index: config/gen/makefiles/root.in
===================================================================
--- config/gen/makefiles/root.in        (revision 9152)
+++ config/gen/makefiles/root.in        (working copy)
@@ -1218,7 +1218,8 @@
     run_tests \
     src_tests \
     perl_tests \
-    testbench
+    testbench \
+    doc_tests
 
 # bounds checking, slow core
 testb : test_prep
@@ -1269,6 +1270,10 @@
 testbench: test_prep
        $(PERL) t/harness t/benchmarks.t
 
+# doc tests
+doc_tests :
+       $(PERL) t/harness t/doc/pod.t
+
 # Running a benchmark
 mopsbench : test_prep
        $(PARROT) $(PARROT_ARGS) examples/assembly/mops.pasm

Reply via email to