Config-Checker
view release on metacpan or search on metacpan
lib/Config/YAMLMacros.pm view on Meta::CPAN
use File::Basename qw(basename dirname);
require Hash::Merge;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(get_config);
our @EXPORT_OK = (@EXPORT, qw(listify replace));
my $max_replace_iterations = 10;
sub listify(\%@)
{
my ($href, @keys) = @_;
for my $k (@keys) {
next unless exists $href->{$k};
if (! ref($href->{$k})) {
$href->{$k} = [ $href->{$k} ];
} elsif (ref($href->{$k}) eq 'ARRAY') {
# fine
} else {
confess;
}
}
}
sub replace(\%\$)
{
my ($href, $sref) = @_;
my $jlist = join('|', map { "\Q$_\E" } keys %$href);
return unless $jlist;
my $re = qr/$jlist/;
my $iteration = 0;
my $replace = sub {
# print STDERR "# replacing '$_[0]' with '$href->{$_[0]}'\n";
return $href->{$_[0]};
};
t/checker.t view on Meta::CPAN
my $c1 = eval config_checker_source;
BAIL_OUT($@) if $@;
ok(1, 'eval');
eval validate_config(clone($good_config), $prototype_config);
is($@, '', 'good config');
my $config;
sub mangle_and_test(&@)
{
my ($mangle, $message, $name) = @_;
$config = clone($good_config);
&$mangle;
eval { validate_config($config, $prototype_config) };
like($@, qr/$message/, $name || $message);
}
mangle_and_test { $config->{jobs}[0]{output_format} = 'NewFangled' } 'invalid parser';
( run in 0.257 second using v1.01-cache-2.11-cpan-1f129e94a17 )