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
|
use strict;
use warnings;
use Test::More import => ['!pass'];
use Dancer ':syntax';
use Dancer::Config;
plan skip_all => "YAML or YAML::XS needed to run these tests"
unless Dancer::ModuleLoader->load('YAML::XS')
or Dancer::ModuleLoader->load('YAML');
plan skip_all => "File::Temp 0.22 required"
unless Dancer::ModuleLoader->load( 'File::Temp', '0.22' );
for my $module (qw(YAML::XS YAML)) {
SKIP: {
if (!Dancer::ModuleLoader->load($module)) {
skip "$module not available", 2;
}
my $mversion = $module->VERSION;
diag "Testing YAML parsing with $module version $mversion";
eval {
Dancer::Config::load_settings_from_yaml('foo', $module);
};
like $@, qr/Unable to parse the configuration file/,
"non-existent YAML file reported correctly, using $module";
my $dir = File::Temp::tempdir(CLEANUP => 1, TMPDIR => 1);
my $config_file = File::Spec->catfile($dir, 'settings.yml');
open my $fh, '>', $config_file;
print $fh '><(((o>'; # fishy-looking YAML
close $fh;
eval {
Dancer::Config::load_settings_from_yaml($config_file, $module);
};
like $@, qr/Unable to parse the configuration file/,
"invalid YAML file reported correctly, using $module";
File::Temp::cleanup();
}
}
done_testing();
|