Update File tests (utf8) (#827)
This commit is contained in:
parent
fcc333e4e5
commit
f1d3e947c7
|
@ -82,12 +82,13 @@ sub store {
|
||||||
my ( $self, $fields ) = @_;
|
my ( $self, $fields ) = @_;
|
||||||
my $mask = umask;
|
my $mask = umask;
|
||||||
umask( oct('0027') );
|
umask( oct('0027') );
|
||||||
unless ( open FILE, ">:encoding(UTF-8)", $self->_file( $fields->{cfgNum} ) )
|
unless ( open FILE, '>', $self->_file( $fields->{cfgNum} ) )
|
||||||
{
|
{
|
||||||
$Lemonldap::NG::Common::Conf::msg .= "Open file failed: $! \n";
|
$Lemonldap::NG::Common::Conf::msg = "Open file failed: $! \n";
|
||||||
$self->unlock;
|
$self->unlock;
|
||||||
return UNKNOWN_ERROR;
|
return UNKNOWN_ERROR;
|
||||||
}
|
}
|
||||||
|
binmode(FILE);
|
||||||
print FILE JSON->new->canonical(1)->encode($fields);
|
print FILE JSON->new->canonical(1)->encode($fields);
|
||||||
close FILE;
|
close FILE;
|
||||||
umask($mask);
|
umask($mask);
|
||||||
|
@ -109,6 +110,7 @@ sub load {
|
||||||
$f = encode( 'UTF-8', $f );
|
$f = encode( 'UTF-8', $f );
|
||||||
eval { $ret = decode_json($f) };
|
eval { $ret = decode_json($f) };
|
||||||
if ($@) {
|
if ($@) {
|
||||||
|
print STDERR "$@\n";
|
||||||
$Lemonldap::NG::Common::Conf::msg .=
|
$Lemonldap::NG::Common::Conf::msg .=
|
||||||
"JSON fails to read file: $@ \n";
|
"JSON fails to read file: $@ \n";
|
||||||
return undef;
|
return undef;
|
||||||
|
|
|
@ -5,7 +5,8 @@
|
||||||
|
|
||||||
# change 'tests => 1' to 'tests => last_test_to_print';
|
# change 'tests => 1' to 'tests => last_test_to_print';
|
||||||
|
|
||||||
use Test::More tests => 2;
|
use strict;
|
||||||
|
use Test::More;
|
||||||
BEGIN { use_ok('Lemonldap::NG::Common::Conf') }
|
BEGIN { use_ok('Lemonldap::NG::Common::Conf') }
|
||||||
|
|
||||||
#########################
|
#########################
|
||||||
|
@ -19,9 +20,45 @@ ok(
|
||||||
$h = new Lemonldap::NG::Common::Conf(
|
$h = new Lemonldap::NG::Common::Conf(
|
||||||
{
|
{
|
||||||
type => 'File',
|
type => 'File',
|
||||||
dirName => ".",
|
dirName => "t/",
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
'type => file',
|
'type => file',
|
||||||
);
|
);
|
||||||
|
my $count = 2;
|
||||||
|
|
||||||
|
my @test = (
|
||||||
|
|
||||||
|
# simple ascii
|
||||||
|
{ cfgNum => 1, test => 'ascii' },
|
||||||
|
|
||||||
|
# utf-8
|
||||||
|
{ cfgNum => 1, test => 'Русский' },
|
||||||
|
|
||||||
|
# compatible utf8/latin-1 char but with different codes
|
||||||
|
{ cfgNum => 1, test => 'éà' }
|
||||||
|
);
|
||||||
|
|
||||||
|
for ( my $i = 0 ; $i < @test ; $i++ ) {
|
||||||
|
ok( $h->store( $test[$i] ) == 1, "Test $i is stored" )
|
||||||
|
or print STDERR "$Lemonldap::NG::Common::Conf::msg $!";
|
||||||
|
$count++;
|
||||||
|
if ( -x '/usr/bin/file' ) {
|
||||||
|
eval {
|
||||||
|
open F, 'file t/lmConf-1.js |';
|
||||||
|
$_ = join( '', <F> );
|
||||||
|
close F;
|
||||||
|
ok( /(ascii|utf-?8)/si, "File is $1 encoded" );
|
||||||
|
$count++;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
my $cfg;
|
||||||
|
ok( $cfg = $h->load(1), "Test $i can be read" )
|
||||||
|
or print STDERR $Lemonldap::NG::Common::Conf::msg;
|
||||||
|
ok( $cfg->{test} eq $test[$i]->{test}, "Test $i is restored" );
|
||||||
|
$count += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
unlink 't/lmConf-1.js';
|
||||||
|
|
||||||
|
done_testing($count);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user