This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
devel/mktodo: Add ability for multiple source dirs
[perl5.git] / dist / Devel-PPPort / mktests.PL
1 ################################################################################
2 #
3 #  mktests.PL -- generate test files for Devel::PPPort
4 #
5 ################################################################################
6 #
7 #  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
8 #  Version 2.x, Copyright (C) 2001, Paul Marquess.
9 #  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
10 #
11 #  This program is free software; you can redistribute it and/or
12 #  modify it under the same terms as Perl itself.
13 #
14 ################################################################################
15
16 use strict;
17 BEGIN { $^W = 1; }
18 require "./parts/ppptools.pl";
19
20 my $template = do { local $/; <DATA> };
21
22 generate_tests();
23
24 sub generate_tests
25 {
26   my @tests;
27   my $file;
28
29   for $file (all_files_in_dir('parts/inc')) {
30     my($testfile) = $file =~ /(\w+)\.?$/;  # VMS has a trailing dot
31     $testfile = "t/$testfile.t";
32
33     my $spec = parse_partspec($file);
34     my $plan = 0;
35
36     if (exists $spec->{tests}) {
37       exists $spec->{OPTIONS}{tests} &&
38       exists $spec->{OPTIONS}{tests}{plan}
39           or die "No plan for tests in $file\n";
40
41       print "generating $testfile\n";
42
43       my $tmpl = $template;
44       # ensure we get the same result on Win32
45       (my $source = $file) =~ s(\\)(/)g;
46       $tmpl =~ s/__SOURCE__/$source/mg;
47       $tmpl =~ s/__PLAN__/$spec->{OPTIONS}{tests}{plan}/mg;
48       $tmpl =~ s/^__TESTS__$/$spec->{tests}/mg;
49
50       open FH, ">$testfile" or die "$testfile: $!\n";
51       binmode FH;
52       print FH $tmpl;
53       close FH;
54
55       push @tests, $testfile;
56     }
57   }
58
59   return @tests;
60 }
61
62 __DATA__
63 ################################################################################
64 #
65 #            !!!!!   Do NOT edit this file directly!   !!!!!
66 #
67 #            Edit mktests.PL and/or __SOURCE__ instead.
68 #
69 #  This file was automatically generated from the definition files in the
70 #  parts/inc/ subdirectory by mktests.PL. To learn more about how all this
71 #  works, please read the F<HACKERS> file that came with this distribution.
72 #
73 ################################################################################
74
75 BEGIN {
76   if ($ENV{'PERL_CORE'}) {
77     chdir 't' if -d 't';
78     @INC = ('../lib', '../ext/Devel-PPPort/t') if -d '../lib' && -d '../ext';
79     require Config; import Config;
80     use vars '%Config';
81     if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
82       print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
83       exit 0;
84     }
85   }
86   else {
87     unshift @INC, 't';
88   }
89
90   sub load {
91     eval "use Test";
92     require 'testutil.pl' if $@;
93   }
94
95   if (__PLAN__) {
96     load();
97     plan(tests => __PLAN__);
98   }
99 }
100
101 use Devel::PPPort;
102 use strict;
103 BEGIN { $^W = 1; }
104
105 package Devel::PPPort;
106 use vars '@ISA';
107 require DynaLoader;
108 @ISA = qw(DynaLoader);
109 bootstrap Devel::PPPort;
110
111 package main;
112
113 __TESTS__