Aion-Env

 view release on metacpan or  search on metacpan

t/aion/env.t  view on Meta::CPAN

use common::sense; use open qw/:std :utf8/;  use Carp qw//; use Cwd qw//; use File::Basename qw//; use File::Find qw//; use File::Slurper qw//; use File::Spec qw//; use File::Path qw//; use Scalar::Util qw//;  use Test::More 0.98;  use String::Diff q...
# # NAME
# 
# Aion::Env - создаёт константу связанную со значением из .env
# 
# # VERSION
# 
# 0.1
# 
# # SYNOPSIS
# 
# Файл .env:
#@> .env
#>> BIN_TEST=10
#>> OCT_TEST=${BIN_TEST}20
#@< EOF
# 
subtest 'SYNOPSIS' => sub { 
BEGIN {
	delete @ENV{qw/BIN_TEST OCT_TEST BB_TEST NN_TEST/};

	$ENV{UNI_TEST} = 30;
}

sub Int { sub { /^-?\d+$/ } }

use Aion::Env BIN_TEST => (isa => Int);
use Aion::Env OCT_TEST => (isa => Int);
use Aion::Env UNI_TEST => (isa => Int);
use Aion::Env BB_TEST => (isa => Int, default => 1);

local ($::_g0 = do {BIN_TEST;}, $::_e0 = do {10}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'BIN_TEST; # -> 10' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {OCT_TEST;}, $::_e0 = do {1020}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'OCT_TEST; # -> 1020' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {UNI_TEST;}, $::_e0 = do {30}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'UNI_TEST; # -> 30' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {BB_TEST;}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'BB_TEST; # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

local ($::_g0 = do {eval 'use Aion::Env NN_TEST => ()'; $@;}, $::_e0 = 'NN_TEST is\'nt defined!'); ::ok $::_g0 =~ /^${\quotemeta $::_e0}/, 'eval \'use Aion::Env NN_TEST => ()\'; $@; # ^-> NN_TEST is\'nt defined!' or ::diag ::_string_diff($::_g0, $::_...
local ($::_g0 = do {eval 'use Aion::Env NN_TEST => (nouname => 1)'; $@;}, $::_e0 = 'Unknown keyword: nouname'); ::ok $::_g0 =~ /^${\quotemeta $::_e0}/, 'eval \'use Aion::Env NN_TEST => (nouname => 1)\'; $@; # ^-> Unknown keyword: nouname' or ::diag :...
local ($::_g0 = do {eval 'use Aion::Env NN_TEST => (nouname1 => 1, nouname2 => 2)'; $@;}, $::_e0 = 'Unknown keywords: nouname1, nouname2'); ::ok $::_g0 =~ /^${\quotemeta $::_e0}/, 'eval \'use Aion::Env NN_TEST => (nouname1 => 1, nouname2 => 2)\'; $@;...

# 
# # DESCRIPTION
# 
# Ð’ проектах используется конфигурационный файл `.env` для конфигурации проекта, в `Makefile`, для `docker` и `docker compose`. Данный модуль позволяет офорÐ...
# 
# Константы инициализируются из `%ENV`, если там нет значения или оно `undef`, то из файла `.env`, а если и там его не будет – из опции `default`.
# 
# При парсинге файла, ошибка синтаксиса приведёт к исключению.
# 
# Тип переменной окружения можно проверять с помощью опции `isa`. Она принимает подпрограмму или объект с перегруженным оператором `${}`. Ð’ эÑ...
# 
# Рекомендуется называть переменные окружения используя название модуля в котором она объявлена. Например, пакет `Aion::Type`, тогда имена пеÑ...
# 
# # SUBROUTINES
# 
# ## import ($cls, $name, %kw)
# 
# Создаёт константу с именем `$name` в пакете из которого вызван.
# Опционально можно передать в `%kw` `isa` и `default`.
# 
# ## parse ($file)



( run in 1.146 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )