r39323 - in /branches/upstream/libjson-any-perl/current: Changes MANIFEST META.yml lib/JSON/Any.pm t/12-boolean.t
ansgar-guest at users.alioth.debian.org
ansgar-guest at users.alioth.debian.org
Sat Jul 4 08:43:31 UTC 2009
Author: ansgar-guest
Date: Sat Jul 4 08:43:25 2009
New Revision: 39323
URL: http://svn.debian.org/wsvn/pkg-perl/?sc=1&rev=39323
Log:
[svn-upgrade] Integrating new upstream version, libjson-any-perl (1.21)
Added:
branches/upstream/libjson-any-perl/current/t/12-boolean.t
Modified:
branches/upstream/libjson-any-perl/current/Changes
branches/upstream/libjson-any-perl/current/MANIFEST
branches/upstream/libjson-any-perl/current/META.yml
branches/upstream/libjson-any-perl/current/lib/JSON/Any.pm
Modified: branches/upstream/libjson-any-perl/current/Changes
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjson-any-perl/current/Changes?rev=39323&op=diff
==============================================================================
--- branches/upstream/libjson-any-perl/current/Changes (original)
+++ branches/upstream/libjson-any-perl/current/Changes Sat Jul 4 08:43:25 2009
@@ -1,4 +1,8 @@
Revision history for JSON-Any
+1.21 2009-07-03
+ * Update JSON::XS boolean support; it provides true/false methods (semifor)
+ * Added a workaround for handlers that fail to decode bare true/false values (semifor)
+
1.20 2009-07-02
* Re-work things so that deprecated modules just warn but aren't actually excluded (perigrin)
* Improve the warnings when things go awry (semifor)
Modified: branches/upstream/libjson-any-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjson-any-perl/current/MANIFEST?rev=39323&op=diff
==============================================================================
--- branches/upstream/libjson-any-perl/current/MANIFEST (original)
+++ branches/upstream/libjson-any-perl/current/MANIFEST Sat Jul 4 08:43:25 2009
@@ -25,3 +25,4 @@
t/05-JSON-Syck.t
t/10_unicode.t
t/11-string-escape.t
+t/12-boolean.t
Modified: branches/upstream/libjson-any-perl/current/META.yml
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjson-any-perl/current/META.yml?rev=39323&op=diff
==============================================================================
--- branches/upstream/libjson-any-perl/current/META.yml (original)
+++ branches/upstream/libjson-any-perl/current/META.yml Sat Jul 4 08:43:25 2009
@@ -22,4 +22,4 @@
Carp: 0
resources:
license: http://dev.perl.org/licenses/
-version: 1.20
+version: 1.21
Modified: branches/upstream/libjson-any-perl/current/lib/JSON/Any.pm
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjson-any-perl/current/lib/JSON/Any.pm?rev=39323&op=diff
==============================================================================
--- branches/upstream/libjson-any-perl/current/lib/JSON/Any.pm (original)
+++ branches/upstream/libjson-any-perl/current/lib/JSON/Any.pm Sat Jul 4 08:43:25 2009
@@ -10,11 +10,11 @@
=head1 VERSION
-Version 1.20
-
-=cut
-
-our $VERSION = '1.20';
+Version 1.21
+
+=cut
+
+our $VERSION = '1.21';
our $UTF8;
@@ -32,8 +32,6 @@
get_true => sub { return JSON::true(); },
get_false => sub { return JSON::false(); },
create_object => sub {
- require utf8;
- utf8->import();
JSON->import( '-support_by_pp', '-no_export' );
my ( $self, $conf ) = @_;
my @params = qw(
@@ -123,11 +121,9 @@
json_xs_2 => {
encoder => 'encode_json',
decoder => 'decode_json',
- get_true => sub { return \1; },
- get_false => sub { return \0; },
+ get_true => sub { return JSON::XS::true(); },
+ get_false => sub { return JSON::XS::false(); },
create_object => sub {
- require utf8;
- utf8->import();
my ( $self, $conf ) = @_;
my @params = qw(
@@ -512,6 +508,11 @@
my $obj = shift;
croak 'must provide json to convert' unless defined $obj;
+ # some handlers can't parse single booleans (I'm looking at you DWIW)
+ if ( $obj =~ /^(true|false)$/ ) {
+ return $self->$1;
+ }
+
if ( ref $self ) {
my $method;
unless ( ref $self->[DECODER] ) {
Added: branches/upstream/libjson-any-perl/current/t/12-boolean.t
URL: http://svn.debian.org/wsvn/pkg-perl/branches/upstream/libjson-any-perl/current/t/12-boolean.t?rev=39323&op=file
==============================================================================
--- branches/upstream/libjson-any-perl/current/t/12-boolean.t (added)
+++ branches/upstream/libjson-any-perl/current/t/12-boolean.t Sat Jul 4 08:43:25 2009
@@ -1,0 +1,58 @@
+#!perl
+$!++;
+use strict;
+use Data::Dumper;
+use Test::More;
+
+eval "use JSON::Any";
+
+if ($@) {
+ plan skip_all => "$@";
+ exit;
+}
+
+$Data::Dumper::Indent = 0;
+$Data::Dumper::Terse = 1;
+
+# JSON::Syck doesn't support bools
+my @backends = qw(XS JSON DWIW);
+
+# make sure we test the JSON::PP backend instead of XS, twice
+$ENV{PERL_JSON_BACKEND} = 0;
+
+plan tests => @backends * 2 * 4;
+
+test ($_) for @backends;
+
+{
+ package Boolean;
+ sub true { 1 }
+ sub false { '' }
+}
+
+sub test {
+ my ($backend) = @_;
+
+ SKIP: {
+ my $j = eval {
+ JSON::Any->import($backend);
+ JSON::Any->new;
+ };
+
+ diag("$backend: " . $@), skip("Backend $backend failed to load", 8) if $@;
+
+ $j and $j->handler or next;
+
+ diag "handler is " . ( ref( $j->handler ) || $j->handlerType );
+
+ for my $bool ( qw/true false/ ) {
+ my $data = eval { JSON::Any->jsonToObj($bool) };
+ ok ( !$@, "inflated '$bool'" );
+ ok ( eval { $data xor !Boolean->$bool }, "$bool evaluates to $bool" );
+
+ $data = eval { JSON::Any->$bool };
+ ok ( !$@, "JSON::Any->$bool returned a value" );
+ ok ( eval { $data xor !Boolean->$bool }, "JSON::Any->$bool evaluates to $bool" );
+ }
+ };
+}
More information about the Pkg-perl-cvs-commits
mailing list