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 )