summaryrefslogtreecommitdiff
path: root/t/porting/perlfunc.t
diff options
context:
space:
mode:
Diffstat (limited to 't/porting/perlfunc.t')
-rw-r--r--t/porting/perlfunc.t30
1 files changed, 30 insertions, 0 deletions
diff --git a/t/porting/perlfunc.t b/t/porting/perlfunc.t
new file mode 100644
index 0000000000..fb0209db18
--- /dev/null
+++ b/t/porting/perlfunc.t
@@ -0,0 +1,30 @@
+#!./perl -w
+
+# What does this test?
+# This checks that changes to pod/perlfunc.pod don't accidentally break the
+# build by causing ext/Pod-Functions/Functions_pm.PL to abort.
+#
+# Why do we test this?
+# Pod::Functions is generated from pod/perlfunc.pod by
+# ext/Pod-Functions/Functions_pm.PL
+# If it can't parse pod/perlfunc.pod, it will abort, which will cause the
+# build to break. It's really not possible for it to carry on, hence aborting
+# is the only option. However, innocent-seeming changes to documentation
+# shouldn't break the build, and we expect everyone to run (at least)
+# the porting tests, hence this test, to catch such problems before it's too
+# late. To avoid duplicating the parsing logic, we make Functions_pm.PL take
+# a --tap option, to test that all is well.
+#
+# It's broken - how do I fix it?
+# Likely it's because you changed something in pod/perlfunc.pod
+# If you added a new function, it needs to be added to one or more groups in
+# "Perl Functions by Category", and to have a one line summary for
+# Pod::Functions provided by a =for directive.
+
+BEGIN {
+ @INC = '..' if -f '../TestInit.pm';
+}
+
+use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
+
+system "$^X ext/Pod-Functions/Functions_pm.PL --tap pod/perlfunc.pod";