This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
5637eaf7240fd57a462fa96c8e6dff88f4d3eec3
[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       my $canonfile = $file;
45       $canonfile =~ tr!\\!/!; # MSWin32 use backslashes
46       $tmpl =~ s/__SOURCE__/$canonfile/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 use FindBin ();
76
77 BEGIN {
78   if ($ENV{'PERL_CORE'}) {
79     chdir 't' if -d 't';
80     unshift @INC, '../lib' if -d '../lib' && -d '../ext';
81     require Config; Config->import;
82     use vars '%Config';
83     if (" $Config{'extensions'} " !~ m[ Devel/PPPort ]) {
84       print "1..0 # Skip -- Perl configured without Devel::PPPort module\n";
85       exit 0;
86     }
87   }
88
89   use lib "$FindBin::Bin";
90   use lib "$FindBin::Bin/../parts/inc";
91
92   die qq[Cannot find "$FindBin::Bin/../parts/inc"] unless -d "$FindBin::Bin/../parts/inc";
93
94   sub load {
95     require 'testutil.pl';
96     require 'inctools';
97   }
98
99   if (__PLAN__) {
100     load();
101     plan(tests => __PLAN__);
102   }
103 }
104
105 use Devel::PPPort;
106 use strict;
107 BEGIN { $^W = 1; }
108
109 package Devel::PPPort;
110 use vars '@ISA';
111 require DynaLoader;
112 @ISA = qw(DynaLoader);
113 Devel::PPPort->bootstrap;
114
115 package main;
116
117 __TESTS__