This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Spelling correction for consistency with pod/perldebguts.pod.
[perl5.git] / t / porting / perlfunc.t
1 #!./perl -w
2
3 # What does this test?
4 # This checks that changes to pod/perlfunc.pod don't accidentally break the
5 # build by causing ext/Pod-Functions/Functions_pm.PL to abort.
6 #
7 # Why do we test this?
8 # Pod::Functions is generated from pod/perlfunc.pod by
9 # ext/Pod-Functions/Functions_pm.PL
10 # If it can't parse pod/perlfunc.pod, it will abort, which will cause the
11 # build to break. It's really not possible for it to carry on, hence aborting
12 # is the only option. However, innocent-seeming changes to documentation
13 # shouldn't break the build, and we expect everyone to run (at least)
14 # the porting tests, hence this test, to catch such problems before it's too
15 # late. To avoid duplicating the parsing logic, we make Functions_pm.PL take
16 # a --tap option, to test that all is well.
17 #
18 # It's broken - how do I fix it?
19 # Likely it's because you changed something in pod/perlfunc.pod
20 # If you added a new function, it needs to be added to one or more groups in
21 # "Perl Functions by Category", and to have a one line summary for
22 # Pod::Functions provided by a =for directive.
23
24 BEGIN {
25     @INC = ('..', '../lib') if -f '../TestInit.pm';
26 }
27
28 use Config;
29 use TestInit qw(T A); # T is chdir to the top level, A makes paths absolute
30
31 if ( $Config{usecrosscompile} ) {
32     print "1..0 # Not all files are available during cross-compilation\n";
33     exit 0;
34 }
35
36 if ( ord("A") == 193) {
37     print "1..0 # EBCDIC sorts differenly than expected\n";
38     exit 0;
39 }
40
41 system "$^X ext/Pod-Functions/Functions_pm.PL --tap pod/perlfunc.pod";