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