Aion-Env
view release on metacpan or search on metacpan
t/aion/env/etc.t view on Meta::CPAN
#@< EOF
#
# Файл etc/test.yml:
#@> etc/test.yml
#>> test:
#>> abc: 100
#>>
#>> when@dev:
#>> test:
#>> val: 10
#@< EOF
#
subtest 'SYNOPSIS' => sub {
BEGIN { $ENV{APP_ENV} = 'dev' }
sub Int { sub { /^-?\d+$/ } }
use Aion::Env::Etc TEST_ABC => (isa => Int);
use Aion::Env::Etc VAL => (isa => Int, key => 'test.val');
local ($::_g0 = do {TEST_ABC}, $::_e0 = do {-12}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'TEST_ABC # -> -12' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {VAL}, $::_e0 = do {10}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'VAL # -> 10' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# # DESCRIPTION
#
# ÐаÑÑÐ¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑй Ñайл. ÐÑÑÑ Ðº Ð½ÐµÐ¼Ñ Ð·Ð°Ð´Ð°Ð½ ÑнвиÑонменÑ-пеÑеменной `AION_ENV_ETC_PATH`.
#
# РнÑм Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÐ»ÑÑ `includes` c вклÑÑением дÑÑгиÑ
конÑигÑÑаÑионнÑÑ
Ñайлов, а Ñ ÑеÑ
â дÑÑгиÑ
.
# ÐÐ»Ñ Ð¿ÑоÑÑоÑÑ `includes` ÑÑабаÑÑваÑÑ Ð¾Ñ ÑекÑÑего каÑалога, коÑоÑÑй должен ÑооÑвеÑÑÑвоваÑÑ ÐºÐ¾ÑÐ½Ñ Ð¿ÑоекÑа (Ñаково ÑоглаÑение).
#
# ÐлÑÑи вида `when@ID` бÑдÑÑ Ð¿ÐµÑекÑÑваÑÑ Ñвоими клÑÑами клÑÑи конÑигÑÑаÑионного Ñайла, еÑли `ID` из ниÑ
ÑооÑвеÑÑÑвÑÐµÑ `APP_ENV`.
#
# ХеÑи в клÑÑаÑ
, пÑи Ñовпадении клÑÑей в ÑазнÑÑ
ÑайлаÑ
, обÑединÑÑÑÑÑ ÑекÑÑÑивно. Ðднако еÑли в одном из клÑÑей не Ñ
еÑ, Ñо бÑÐ´ÐµÑ Ð²ÑбÑоÑено и...
#
# # SUBROUTINES
#
# ## import ($name, %kw)
#
# СоздаÑÑ ÐºÐ¾Ð½ÑÑанÑÑ Ð² пакеÑе из коÑоÑого бÑл вÑзван.
#
# ÐопÑÑÑимÑе опÑии:
#
# * `isa` â подпÑогÑамма-ÑеÑÑÐµÑ Ð¸Ð»Ð¸ обÑÐµÐºÑ `Aion::Type` Ð´Ð»Ñ Ð¿ÑовеÑки Ñипа.
# * `default` â знаÑение по ÑмолÑаниÑ.
# * `key` â клÑÑ Ð¸Ð· конÑигÑÑаÑионнÑÑ
Ñайлов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ðº Ð½ÐµÐ¼Ñ Ð¿ÑеобÑазÑеÑÑÑ Ð¸Ð¼Ñ ÐºÐ¾Ð½ÑÑанÑÑ (пеÑеводиÑÑÑ Ð² нижний ÑегиÑÑÑ Ð¸ подÑÑÑки заменÑ...
#
# ## parse ($path)
#
# СÑиÑÑÐ²Ð°ÐµÑ Ð¸ паÑÑÐ¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑионнÑй Ñайл в ÑоÑмаÑе `yaml`. `${ID}` заменÑÑÑÑÑ Ð½Ð° знаÑÐµÐ½Ð¸Ñ Ð¸Ð· `%ENV`, а еÑли Ñам неÑ, Ñо из Ñайла `.env`. ÐаÑÑÐ¸Ñ ÑÐ°Ð¹Ð»Ñ Ð...
#
# ## merge_hashes ($file, $path, $x, $y)
#
# ÐбединÑÐµÑ Ð´Ð²Ð° Ñ
еÑа ÑекÑÑÑивно. ÐÑли в ÑовпадаÑÑиÑ
клÑÑаÑ
не Ñ
еÑи, Ñо вÑбÑаÑÑÐ²Ð°ÐµÑ Ð¾ÑÐ¸Ð±ÐºÑ Ñ `$file` и `$path`, где `$file` â подклÑÑаÑÑийÑÑ Ñайл, а `$p...
#
# ## val ($s)
#
# ÐобавлÑÐµÑ Ð±ÑкÑлеÑи. ÐÑполÑзÑеÑÑÑ Ð´Ð»Ñ ÑÑкейпинга ÑнвиÑонменÑов.
#
::done_testing; }; subtest 'val ($s)' => sub {
my $escape_string = "\\\"\\'\\\\\\t\\r\\n";
local ($::_g0 = do {Aion::Env::Etc::val("\"'\\\t\r\n")}, $::_e0 = do {$escape_string}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, 'Aion::Env::Etc::val("\"\'\\\t\r\n") # -> $escape_string' or ::diag ::_struct_diff($::_g0, $::_e0); u...
#
# ## by_key ($hash, $path)
#
# ÐолÑÑиÑÑ Ð·Ð½Ð°Ñение по клÑÑÑ Ð¸Ð· Ñ
еÑа.
#
::done_testing; }; subtest 'by_key ($hash, $path)' => sub {
my ($val, $key_exists) = Aion::Env::Etc::by_key({x => {y => {z => 3}}}, "x.y.z");
local ($::_g0 = do {$val}, $::_e0 = do {3}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '$val # -> 3' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {$key_exists}, $::_e0 = do {1}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '$key_exists # -> 1' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
($val, $key_exists) = Aion::Env::Etc::by_key({x => {y => {t => 10}}}, "x.y.z");
local ($::_g0 = do {$val}, $::_e0 = do {undef}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '$val # -> undef' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {$key_exists}, $::_e0 = do {0}); ::ok defined($::_g0) == defined($::_e0) && $::_g0 eq $::_e0, '$key_exists # -> 0' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
#
# # AUTHOR
#
# Yaroslav O. Kosmina <dart@cpan.org>
#
# # LICENSE
#
# â **Perl5**
#
# # COPYRIGHT
#
# The Aion::Env::Etc module is copyright © 2026 Yaroslav O. Kosmina. Rusland. All rights reserved.
::done_testing;
};
::done_testing;
( run in 0.696 second using v1.01-cache-2.11-cpan-54e63673c56 )