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
|
#!perl
## no critic [ValuesAndExpressions::ProhibitConstantPragma]
use strict;
use warnings;
use Test2::V0;
use Env::Assert qw( assert );
use constant {
ENV_ASSERT_MISSING_FROM_ENVIRONMENT => 1,
ENV_ASSERT_INVALID_CONTENT_IN_VARIABLE => 2,
ENV_ASSERT_MISSING_FROM_DEFINITION => 3,
};
subtest 'Externals' => sub {
{
my %env = ( USER => 'random_user', );
my %want = (
options => {
exact => 1,
},
variables => {},
);
my %opts = ();
my $r = assert( \%env, \%want, \%opts );
is( $r->{'success'}, 0, 'assert not success' );
is( keys %{ $r->{'errors'} }, 1, 'has errors' );
is( $r->{'errors'}->{'variables'}->{'USER'}->{'type'}, ENV_ASSERT_MISSING_FROM_DEFINITION, 'var missing from def' );
}
{
my %env = ( USER => 'random_user', );
my %want = (
options => {
exact => 1,
},
variables => {
USER => { regexp => '^[[:word:]]{1}$', required => 1 },
},
);
my %opts = ();
my $r = assert( \%env, \%want, \%opts );
is( $r->{'success'}, 0, 'assert not success' );
is( keys %{ $r->{'errors'} }, 1, 'has errors' );
is( $r->{'errors'}->{'variables'}->{'USER'}->{'type'}, ENV_ASSERT_INVALID_CONTENT_IN_VARIABLE, 'invalid content in var' );
}
{
my %env = ( USER => 'random_user', );
my %want = (
options => {
exact => 1,
},
variables => {
NOUSER => { regexp => '^[[:word:]]{1}$', required => 1 },
},
);
my %opts = ();
my $r = assert( \%env, \%want, \%opts );
is( $r->{'success'}, 0, 'assert not success' );
is( keys %{ $r->{'errors'} }, 1, 'has errors' );
is( $r->{'errors'}->{'variables'}->{'NOUSER'}->{'type'}, ENV_ASSERT_MISSING_FROM_ENVIRONMENT, 'var missing from env' );
}
{
my %env = ( USER => 'random_user', );
my %want = (
options => { exact => 0, },
variables => {
NOUSER => { regexp => '^[[:word:]]{1}$', required => 1 },
NOPATH => { regexp => '^[[:word:]]{1}$', required => 1 },
},
);
my %opts = ( break_at_first_error => 0, );
my $r = assert( \%env, \%want, \%opts );
is( $r->{'success'}, 0, 'assert not success' );
is( scalar keys %{ $r->{'errors'}->{'variables'} }, 2, 'has errors' );
is( $r->{'errors'}->{'variables'}->{'NOUSER'}->{'type'}, ENV_ASSERT_MISSING_FROM_ENVIRONMENT, 'var missing from env' );
is( $r->{'errors'}->{'variables'}->{'NOPATH'}->{'type'}, ENV_ASSERT_MISSING_FROM_ENVIRONMENT, 'var missing from env' );
}
{
my %env = (
USER => 'random_user',
HOME => '/home/users/random_user',
A_DIGIT => '123456',
);
my %want = (
options => {
exact => 1,
},
variables => {
USER => { regexp => '^[[:word:]]{1,}$', required => 1 },
HOME => { regexp => '^[/]{1}[a-z0-9/_-]{1,}[a-z0-9]{1}', required => 1 },
A_DIGIT => { regexp => '\d+', required => 1 },
},
);
my %opts = ( break_at_first_error => 0, );
my $r = assert( \%env, \%want, \%opts );
ok( $r->{'success'}, 'assert success' );
is( $r->{'success'}, 1, 'assert not success' );
is( %{ $r->{'errors'} }, 0, 'no errors' );
}
done_testing;
};
done_testing;
|