This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix O_CREAT without O_TRUNC in cpan/autodie/t/utf8_open.t
[perl5.git] / t / porting / copyright.t
1 #!perl
2
3 =head1 NAME
4
5 copyright.t
6
7 =head1 DESCRIPTION
8
9 Tests that the latest copyright years in the top-level README file and the
10 C<perl -v> output match each other.
11
12 If the test fails, update at least one of README and perl.c so that they match
13 reality.
14
15 Optionally you can pass the C<--now> option to check they are at the current
16 year. This isn't checked by default, so that it doesn't fail for people
17 working on older releases. It should be run before making a new release.
18
19 =cut
20
21
22 use TestInit;
23 use strict;
24 BEGIN { require 'test.pl' }
25
26
27 my ($opt) = @ARGV;
28
29 my $readme_year = readme_year();
30 my $v_year = v_year();
31
32 # Check that both copyright dates are up-to-date, but only if requested, so
33 # that tests still pass for people intentionally working on older versions:
34 if ($opt eq '--now')
35 {
36   my $current_year = (gmtime)[5] + 1900;
37   is $v_year, $current_year, 'perl -v copyright includes current year';
38   is $readme_year, $current_year, 'README copyright includes current year';
39 }
40
41 # Otherwise simply check that the two copyright dates match each other:
42 else
43 {
44   is $readme_year, $v_year, 'README and perl -v copyright dates match';
45 }
46
47 done_testing;
48
49
50 sub readme_year
51 # returns the latest copyright year from the top-level README file
52 {
53
54   open my $readme, '<', '../README' or die "Opening README failed: $!";
55
56   # The copyright message is the first paragraph:
57   local $/ = '';
58   my $copyright_msg = <$readme>;
59
60   my ($year) = $copyright_msg =~ /.*\b(\d{4,})/s
61       or die "Year not found in README copyright message '$copyright_msg'";
62
63   $year;
64 }
65
66
67 sub v_year
68 # returns the latest copyright year shown in perl -v
69 {
70
71   my $output = runperl switches => ['-v'];
72   my ($year) = $output =~ /copyright 1987.*\b(\d{4,})/i
73       or die "Copyright statement not found in perl -v output '$output'";
74
75   $year;
76 }