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