xref: /openbsd-src/gnu/usr.bin/perl/cpan/podlators/t/man/devise-date.t (revision e068048151d29f2562a32185e21a8ba885482260)
1b8851fccSafresh1#!/usr/bin/perl
2b8851fccSafresh1#
3b8851fccSafresh1# In order for MakeMaker to build in the core, nothing can use Fcntl which
4b8851fccSafresh1# includes POSIX.  devise_date()'s use of strftime() was replaced.  This tests
5b8851fccSafresh1# that it's identical.  It also tests special handling of the POD_MAN_DATE
656d68f1eSafresh1# and SOURCE_DATE_EPOCH environment variables.
7b8851fccSafresh1#
8*e0680481Safresh1# Copyright 2009, 2014-2015, 2018-2019, 2022 Russ Allbery <rra@cpan.org>
9b8851fccSafresh1#
10b8851fccSafresh1# This program is free software; you may redistribute it and/or modify it
11b8851fccSafresh1# under the same terms as Perl itself.
12f3efcd01Safresh1#
13f3efcd01Safresh1# SPDX-License-Identifier: GPL-1.0-or-later OR Artistic-1.0-Perl
14b8851fccSafresh1
1556d68f1eSafresh1use 5.008;
16b8851fccSafresh1use strict;
17b8851fccSafresh1use warnings;
18b8851fccSafresh1
19b8851fccSafresh1use Pod::Man;
20b8851fccSafresh1use POSIX qw(strftime);
21b8851fccSafresh1
22b8851fccSafresh1use Test::More tests => 6;
23b8851fccSafresh1
24b8851fccSafresh1# Start with environment variables affecting the date stripped.
25*e0680481Safresh1local $ENV{SOURCE_DATE_EPOCH} = undef;
26*e0680481Safresh1local $ENV{POD_MAN_DATE} = undef;
27b8851fccSafresh1
28b8851fccSafresh1# Check that the results of device_date matches strftime.  There is no input
29b8851fccSafresh1# file name, so this will use the current time.
30b8851fccSafresh1my $parser = Pod::Man->new;
31b8851fccSafresh1is(
32b8851fccSafresh1    $parser->devise_date,
33b8851fccSafresh1    strftime('%Y-%m-%d', gmtime()),
34*e0680481Safresh1    'devise_date matches strftime',
35b8851fccSafresh1);
36b8851fccSafresh1
37b8851fccSafresh1# Set the override environment variable and ensure that it's honored.
38b8851fccSafresh1local $ENV{POD_MAN_DATE} = '2014-01-01';
39b8851fccSafresh1is($parser->devise_date, '2014-01-01', 'devise_date honors POD_MAN_DATE');
40b8851fccSafresh1
41b8851fccSafresh1# Check that an empty environment variable is honored.
42b8851fccSafresh1local $ENV{POD_MAN_DATE} = q{};
43b8851fccSafresh1is($parser->devise_date, q{}, 'devise_date honors empty POD_MAN_DATE');
44b8851fccSafresh1
45b8851fccSafresh1# Set another environment variable and ensure that it's honored.
46*e0680481Safresh1local $ENV{POD_MAN_DATE} = undef;
47b8851fccSafresh1local $ENV{SOURCE_DATE_EPOCH} = 1439390140;
48b8851fccSafresh1is($parser->devise_date, '2015-08-12', 'devise_date honors SOURCE_DATE_EPOCH');
49b8851fccSafresh1
50b8851fccSafresh1# Check that POD_MAN_DATE overrides SOURCE_DATE_EPOCH
51b8851fccSafresh1local $ENV{POD_MAN_DATE} = '2013-01-01';
52b8851fccSafresh1local $ENV{SOURCE_DATE_EPOCH} = 1482676620;
53*e0680481Safresh1is(
54*e0680481Safresh1    $parser->devise_date, '2013-01-01',
55*e0680481Safresh1    'devise_date honors POD_MAN_DATE over SOURCE_DATE_EPOCH',
56*e0680481Safresh1);
57b8851fccSafresh1
58b8851fccSafresh1# Check that an invalid SOURCE_DATE_EPOCH is not accepted
59*e0680481Safresh1local $ENV{POD_MAN_DATE} = undef;
60b8851fccSafresh1local $ENV{SOURCE_DATE_EPOCH} = '1482676620B';
61b8851fccSafresh1is(
62b8851fccSafresh1    $parser->devise_date,
63b8851fccSafresh1    strftime('%Y-%m-%d', gmtime()),
64*e0680481Safresh1    'devise_date ignores invalid SOURCE_DATE_EPOCH',
65b8851fccSafresh1);
66