X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=t%2F3_conf_00_base.t;h=e41d8977c40573ced63b545defebf20bd1a4760d;hb=HEAD;hp=cae8b75058aed079b4d27e6ee422c06266bf6268;hpb=4eee158dce82376f2f37de29d91c53f60a24aebe;p=chaz%2Fp5-CGI-Ex diff --git a/t/3_conf_00_base.t b/t/3_conf_00_base.t index cae8b75..e41d897 100644 --- a/t/3_conf_00_base.t +++ b/t/3_conf_00_base.t @@ -7,67 +7,45 @@ =cut use strict; -use Test::More tests => 24; +use Test::More tests => 8; +use POSIX qw(tmpnam); -use_ok('CGI::Ex::Conf'); - -my $dir = __FILE__; -$dir =~ tr|\\|/|; # should probably use File::Spec -$dir =~ s|[^/]+$|../samples| || die "Couldn't determine dir"; -$dir =~ s|^t/|./t/|; # to satisfy conf +my $file = tmpnam; +END { unlink $file }; -my $obj = CGI::Ex::Conf->new({ - paths => ["$dir/conf_path_1", "$dir/conf_path_3"], -}); - -### most test for the reading of files -### are actually performed in the validation tests +use_ok('CGI::Ex::Conf'); +my $obj = CGI::Ex::Conf->new; ok($obj); -my $hash = $obj->read('apples.pl'); -ok($hash); -ok($hash->{quantity}); - -$hash = $obj->read('apples.pl'); -ok($hash); -ok($hash->{quantity}); - - -local $CGI::Ex::Conf::DIRECTIVE = 'FIRST'; -$hash = $obj->read('apples.pl'); -ok($hash); -ok($hash->{quantity} == 20); -ok($hash->{foo} eq 'file1'); - -local $CGI::Ex::Conf::DIRECTIVE = 'LAST'; -$hash = $obj->read('apples.pl'); -ok($hash); -ok($hash->{quantity} == 30); -ok($hash->{foo} eq 'file2'); - -$hash = $obj->read('apples.pl', {directive => 'MERGE'}); -ok($hash); -ok($hash->{quantity} == 30); -ok($hash->{foo} eq 'file1'); # has immutable value - - -local $obj->{directive} = 'FIRST'; -$hash = $obj->read('oranges.pl'); -ok($hash); -ok($hash->{quantity} == 20); -ok($hash->{foo} eq 'file1'); - -local $obj->{directive} = 'LAST'; -$hash = $obj->read('oranges.pl'); -ok($hash); -ok($hash->{quantity} == 30); -ok($hash->{foo} eq 'file2'); - -local $obj->{directive} = 'MERGE'; -$hash = $obj->read('oranges.pl'); -ok($hash); -ok($hash->{quantity} == 20); # has immutable key so all values are immutable -ok($hash->{foo} eq 'file1'); # has immutable key so all values are immutable - - +### TODO - re-enable more fileside tests + +if (eval { require JSON }) { + ok(eval { CGI::Ex::Conf::conf_write($file, {foo => "bar"}, {file_type => 'json'}) }, "Could JSON write") || diag($@); + my $ref = eval { CGI::Ex::Conf::conf_read($file, {file_type => 'json'}) }; + is(eval { $ref->{'foo'} }, 'bar', "Could JSON read"); +} else { + SKIP: { + skip("Can't test read/write of json", 2); + }; +} + +if (eval { require YAML }) { + ok(eval { CGI::Ex::Conf::conf_write($file, {foo => "bar2"}, {file_type => 'yaml'}) }, "Could YAML write") || diag($@); + my $ref = eval { CGI::Ex::Conf::conf_read($file, {file_type => 'yaml'}) }; + is(eval { $ref->{'foo'} }, 'bar2', "Could YAML read"); +} else { + SKIP: { + skip("Can't test read/write of yaml", 2); + }; +} + +if (eval { require Data::Dumper }) { + ok(eval { CGI::Ex::Conf::conf_write($file, {foo => "bar2"}, {file_type => 'pl'}) }, "Could Perl write") || diag($@); + my $ref = eval { CGI::Ex::Conf::conf_read($file, {file_type => 'pl'}) }; + is(eval { $ref->{'foo'} }, 'bar2', "Could perl read"); +} else { + SKIP: { + skip("Can't test read/write of pl", 2); + }; +}