File: 11_env_config.t

package info (click to toggle)
libcpan-reporter-perl 1.2020-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,752 kB
  • sloc: perl: 5,440; makefile: 2
file content (131 lines) | stat: -rw-r--r-- 3,132 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!perl
use strict;
BEGIN{ if (not $] < 5.006) { require warnings; warnings->import } }

select(STDERR); $|=1;
select(STDOUT); $|=1;

use Test::More;
use lib 't/lib';
use MockCPANDist;
use Helper;
use Frontend;
use Config;

# protect CPAN::Reporter from itself
local %ENV = %ENV;
delete $ENV{PERL5OPT};

# Entries bracketed with "/" are taken to be a regex; otherwise literal
my @env_vars= qw(
    /PERL/
    /LC_/
    LANG
    LANGUAGE
    PATH
    SHELL
    COMSPEC
    TERM
    AUTOMATED_TESTING
    AUTHOR_TESTING
    INCLUDE
    LIB
    LD_LIBRARY_PATH
    PROCESSOR_IDENTIFIER
    NUMBER_OF_PROCESSORS
);

my @env_vars_found;

for my $var ( @env_vars ) {
    if ( $var =~ m{^/(.+)/$} ) {
        push @env_vars_found, grep { /$1/ } keys %ENV; 
    }
    else {
        push @env_vars_found, $var if exists $ENV{$var};
    }
}

my %special_vars = (
    '$^X' => $^X,
    '$UID/$EUID' => "$< / $>",
    '$GID' => "$(",
    '$EGID' => "$)",
);

if ( $^O eq 'MSWin32' && eval "require Win32" ) {
    my @getosversion = Win32::GetOSVersion();
    my $getosversion = join(", ", @getosversion);
    $special_vars{"Win32::GetOSName"} = Win32::GetOSName();
    $special_vars{"Win32::GetOSVersion"} = $getosversion;
    $special_vars{"Win32::IsAdminUser"} = Win32::IsAdminUser();
}

my @toolchain_modules = qw(
    CPAN
    Module::Build
    ExtUtils::MakeMaker
    version
);

# paths
#    * cwd
#    * compiler
#    * $Config{make}

# special handling
#    * umask
#    * locale -- how do I determine this?
#    * compiler tools versions

plan tests => 1 + test_fake_config_plan()
                + 2 * @env_vars_found
                + 2* keys %special_vars;

#--------------------------------------------------------------------------#
# Fixtures
#--------------------------------------------------------------------------#

my ($got, $expect);

#--------------------------------------------------------------------------#
# Begin tests
#--------------------------------------------------------------------------#

require_ok('CPAN::Reporter');

test_fake_config();

#--------------------------------------------------------------------------#
# ENV testing
#--------------------------------------------------------------------------#

$got = CPAN::Reporter::_env_report();
{
  for my $var ( sort @env_vars_found ) {
      my ($name, $value) = ( $got =~ m{^ +(\Q$var\E) = ([^\n]*?)$}ms );
      is( $name, $var,
          "found \$ENV{$var}"
      );
      is( defined $value ? $value : '', defined $ENV{$var} ? $ENV{$var} : '',
          "value of \$ENV{$var} is correct"
      );
  }
}

#--------------------------------------------------------------------------#
# Special Vars
#--------------------------------------------------------------------------#

$got = CPAN::Reporter::_special_vars_report();

for my $var ( sort keys %special_vars ) {
    my ($name, $value) = ( $got =~ m{ +(\Q$var\E) += +([^\n]*?)$}ms );
    is( $name, $var,
        "found special variable $var"
    );
    is( defined $value ? $value : '', 
        defined $special_vars{$var} ? $special_vars{$var} : '',
        "value of $var is correct"
    );
}