Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Mojo-Redis for openSUSE:Factory 
checked in at 2022-03-08 20:32:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mojo-Redis (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Mojo-Redis.new.2349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Mojo-Redis"

Tue Mar  8 20:32:20 2022 rev:7 rq:960194 version:3.29

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Mojo-Redis/perl-Mojo-Redis.changes  
2021-11-27 00:52:35.502539521 +0100
+++ 
/work/SRC/openSUSE:Factory/.perl-Mojo-Redis.new.2349/perl-Mojo-Redis.changes    
    2022-03-11 11:50:01.846891562 +0100
@@ -1,0 +2,12 @@
+Thu Feb 24 03:08:29 UTC 2022 - Tina M??ller <timueller+p...@suse.de>
+
+- updated to 3.29
+   see /usr/share/doc/packages/perl-Mojo-Redis/Changes
+
+  3.29 2022-02-23T14:56:18+0900
+   - Fix use of "defined" in unit test
+
+  3.28 2022-02-21T15:40:56+0900
+   - Add channel to Mojo::Redis::PubSub::listen() callback
+
+-------------------------------------------------------------------

Old:
----
  Mojo-Redis-3.27.tar.gz

New:
----
  Mojo-Redis-3.29.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Mojo-Redis.spec ++++++
--- /var/tmp/diff_new_pack.OmYNdV/_old  2022-03-11 11:50:02.286892079 +0100
+++ /var/tmp/diff_new_pack.OmYNdV/_new  2022-03-11 11:50:02.290892084 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Mojo-Redis
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,10 +18,10 @@
 
 %define cpan_name Mojo-Redis
 Name:           perl-Mojo-Redis
-Version:        3.27
+Version:        3.29
 Release:        0
-Summary:        Redis driver based on Mojo::IOLoop
 License:        Artistic-2.0
+Summary:        Redis driver based on Mojo::IOLoop
 URL:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/J/JH/JHTHORSEN/%{cpan_name}-%{version}.tar.gz
 Source1:        cpanspec.yml

++++++ Mojo-Redis-3.27.tar.gz -> Mojo-Redis-3.29.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/Changes new/Mojo-Redis-3.29/Changes
--- old/Mojo-Redis-3.27/Changes 2021-11-20 02:51:49.000000000 +0100
+++ new/Mojo-Redis-3.29/Changes 2022-02-23 06:56:18.000000000 +0100
@@ -1,5 +1,11 @@
 Revision history for perl distribution Mojo-Redis
 
+3.29 2022-02-23T14:56:18+0900
+ - Fix use of "defined" in unit test
+
+3.28 2022-02-21T15:40:56+0900
+ - Add channel to Mojo::Redis::PubSub::listen() callback
+
 3.27 2021-11-20T10:51:49+0900
  - Add experimental "subscribe" and "psubscribe" events to Mojo::Redis::PubSub
  - Fix examples for set and expire #62
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/META.json 
new/Mojo-Redis-3.29/META.json
--- old/Mojo-Redis-3.27/META.json       2021-11-20 02:51:50.000000000 +0100
+++ new/Mojo-Redis-3.29/META.json       2022-02-23 06:56:19.000000000 +0100
@@ -53,7 +53,7 @@
          "web" : "https://github.com/jhthorsen/mojo-redis";
       }
    },
-   "version" : "3.27",
+   "version" : "3.29",
    "x_contributors" : [
       "Jan Henning Thorsen <jhthor...@cpan.org>",
       "Dan Book <gri...@grinnz.com>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/META.yml new/Mojo-Redis-3.29/META.yml
--- old/Mojo-Redis-3.27/META.yml        2021-11-20 02:51:50.000000000 +0100
+++ new/Mojo-Redis-3.29/META.yml        2022-02-23 06:56:18.000000000 +0100
@@ -25,7 +25,7 @@
   bugtracker: https://github.com/jhthorsen/mojo-redis/issues
   homepage: https://github.com/jhthorsen/mojo-redis
   repository: https://github.com/jhthorsen/mojo-redis.git
-version: '3.27'
+version: '3.29'
 x_contributors:
   - 'Jan Henning Thorsen <jhthor...@cpan.org>'
   - 'Dan Book <gri...@grinnz.com>'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/README.md 
new/Mojo-Redis-3.29/README.md
--- old/Mojo-Redis-3.27/README.md       2021-11-20 02:51:49.000000000 +0100
+++ new/Mojo-Redis-3.29/README.md       2022-02-23 06:56:18.000000000 +0100
@@ -9,7 +9,7 @@
     use Mojo::Redis;
     my $redis = Mojo::Redis->new;
     $redis->db->set(foo => 42);
-    $redis->expire(foo => 600);
+    $redis->db->expire(foo => 600);
     warn $redis->db->get('foo');
 
 ## Promises
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/lib/Mojo/Redis/PubSub.pm 
new/Mojo-Redis-3.29/lib/Mojo/Redis/PubSub.pm
--- old/Mojo-Redis-3.27/lib/Mojo/Redis/PubSub.pm        2021-11-20 
02:48:14.000000000 +0100
+++ new/Mojo-Redis-3.29/lib/Mojo/Redis/PubSub.pm        2022-02-21 
07:39:33.000000000 +0100
@@ -113,12 +113,20 @@
   my ($self, $conn, $res) = @_;
   $self->emit(reconnect => $conn) if delete $self->{reconnect};
 
+  # $res = [pmessage => $name, $channel, $data]
+  # $res = [message  =>        $channel, $data]
+
   return                    unless ref $res eq 'ARRAY';
   return $self->emit(@$res) unless $res->[0] =~ m!^p?message$!i;
-  my ($psub) = $res->[0] eq 'pmessage' ? splice @$res, 1, 1 : ();
-  $res->[2] = eval { from_json $res->[2] } if $self->{json}{$res->[1]};
-  my $keyspace_listen = $self->{keyspace_listen}{$psub || $res->[1]};
-  for my $cb (@{$self->{chans}{$psub || $res->[1]}}) { 
$self->$cb($keyspace_listen ? [@$res[1, 2]] : $res->[2]) }
+
+  my ($name)          = $res->[0] eq 'pmessage' ? splice @$res, 1, 1 : 
($res->[1]);
+  my $keyspace_listen = $self->{keyspace_listen}{$name};
+
+  local $@;
+  $res->[2] = eval { from_json $res->[2] } if $self->{json}{$name};
+  for my $cb (@{$self->{chans}{$name} || []}) {
+    $self->$cb($keyspace_listen ? [@$res[1, 2]] : $res->[2], $res->[1]);
+  }
 }
 
 sub _reconnect {
@@ -150,8 +158,8 @@
   my $pubsub = $redis->pubsub;
 
   $pubsub->listen("user:superwoman:messages" => sub {
-    my ($pubsub, $message) = @_;
-    say "superwoman got a message: $message";
+    my ($pubsub, $message, $channel) = @_;
+    say "superwoman got a message '$message' from channel '$channel'";
   });
 
   $pubsub->notify("user:batboy:messages", "How are you doing?");
@@ -266,7 +274,7 @@
 
   # Send and receive data structures
   $pubsub->json("foo")->listen(foo => sub {
-    my ($pubsub, $payload) = @_;
+    my ($pubsub, $payload, $channel) = @_;
     say $payload->{bar};
   });
   $pubsub->notify(foo => {bar => 'I ??? Mojolicious!'});
@@ -315,10 +323,15 @@
 
 =head2 listen
 
-  $cb = $pubsub->listen($channel => sub { my ($pubsub, $message) = @_ });
+  $cb = $pubsub->listen($channel => sub { my ($pubsub, $message, $channel) = 
@_ });
+
+Subscribe to an exact channel name
+(L<SUBSCRIBE|https://redis.io/commands/subscribe>) or a channel name with a
+pattern (L<PSUBSCRIBE|https://redis.io/commands/psubscribe>). C<$channel> in
+the callback will be the exact channel name, without any pattern. C<$message>
+will be the data published to that the channel.
 
-Subscribe to a channel, there is no limit on how many subscribers a channel
-can have. The returning code ref can be passed on to L</unlisten>.
+The returning code ref can be passed on to L</unlisten>.
 
 =head2 notify
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/lib/Mojo/Redis.pm 
new/Mojo-Redis-3.29/lib/Mojo/Redis.pm
--- old/Mojo-Redis-3.27/lib/Mojo/Redis.pm       2021-11-20 02:51:49.000000000 
+0100
+++ new/Mojo-Redis-3.29/lib/Mojo/Redis.pm       2022-02-23 06:56:18.000000000 
+0100
@@ -9,7 +9,7 @@
 use Mojo::Redis::PubSub;
 use Scalar::Util 'blessed';
 
-our $VERSION = '3.27';
+our $VERSION = '3.29';
 
 $ENV{MOJO_REDIS_URL} ||= 'redis://localhost:6379';
 
@@ -110,7 +110,7 @@
   use Mojo::Redis;
   my $redis = Mojo::Redis->new;
   $redis->db->set(foo => 42);
-  $redis->expire(foo => 600);
+  $redis->db->expire(foo => 600);
   warn $redis->db->get('foo');
 
 =head2 Promises
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mojo-Redis-3.27/t/pubsub.t 
new/Mojo-Redis-3.29/t/pubsub.t
--- old/Mojo-Redis-3.27/t/pubsub.t      2021-11-20 02:37:47.000000000 +0100
+++ new/Mojo-Redis-3.29/t/pubsub.t      2022-02-23 06:52:55.000000000 +0100
@@ -1,94 +1,118 @@
 use Mojo::Base -strict;
 use Test::More;
+use Mojo::JSON qw(encode_json);
 use Mojo::Redis;
 
 plan skip_all => 'TEST_ONLINE=redis://localhost' unless $ENV{TEST_ONLINE};
-*memory_cycle_ok = eval 'require Test::Memory::Cycle;1' ? 
\&Test::Memory::Cycle::memory_cycle_ok : sub { };
-
-my $redis = Mojo::Redis->new($ENV{TEST_ONLINE});
-my $db    = $redis->db;
-memory_cycle_ok($redis, 'cycle ok for Mojo::Redis');
+*memory_cycle_ok
+  = eval 'require Test::Memory::Cycle;1' ? 
\&Test::Memory::Cycle::memory_cycle_ok : sub { ok 1, 'memory_cycle_ok' };
 
+my $redis  = Mojo::Redis->new($ENV{TEST_ONLINE});
+my $db     = $redis->db;
 my $pubsub = $redis->pubsub;
-my (@messages, @res);
-memory_cycle_ok($redis, 'cycle ok for Mojo::Redis::PubSub');
-
-my @events;
-$pubsub->on(error      => sub { shift; push @events, [error      => @_] });
-$pubsub->on(psubscribe => sub { shift; push @events, [psubscribe => @_] });
-$pubsub->on(subscribe  => sub { shift; push @events, [subscribe  => @_] });
-
-is ref($pubsub->listen("rtest:$$:1" => \&gather)), 'CODE', 'listen';
-$pubsub->listen("rtest:$$:2" => \&gather);
-note 'Waiting for subscriptions to be set up...';
-Mojo::IOLoop->timer(0.15 => sub { Mojo::IOLoop->stop });
-Mojo::IOLoop->start;
-memory_cycle_ok($redis, 'cycle ok after listen');
-
-$pubsub->notify("rtest:$$:1" => 'message one');
-$db->publish_p("rtest:$$:2" => 'message two')->wait;
-memory_cycle_ok($redis, 'cycle ok after notify');
-
-is_deeply [sort @messages], ['message one', 'message two'], 'got messages' or 
diag join ", ", @messages;
-
-$pubsub->channels_p('rtest*')->then(sub { @res = @_ })->wait;
-is_deeply [sort @{$res[0]}], ["rtest:$$:1", "rtest:$$:2"], 'channels_p';
-
-$pubsub->numsub_p("rtest:$$:1")->then(sub { @res = @_ })->wait;
-is_deeply $res[0], {"rtest:$$:1" => 1}, 'numsub_p';
-
-$pubsub->numpat_p->then(sub { @res = @_ })->wait;
-is_deeply $res[0], 0, 'numpat_p';
-
-is $pubsub->unlisten("rtest:$$:1", \&gather), $pubsub, 'unlisten';
-memory_cycle_ok($pubsub, 'cycle ok after unlisten');
-$db->publish_p("rtest:$$:1" => 'nobody is listening to this');
-
-note 'Making sure the last message is not received';
-Mojo::IOLoop->timer(0.15 => sub { Mojo::IOLoop->stop });
-Mojo::IOLoop->start;
-is_deeply [sort @messages], ['message one', 'message two'], 'got messages' or 
diag join ", ", @messages;
-
-note 'test listen patterns';
-@messages = ();
-$pubsub->listen("rtest:$$:*" => \&gather);
-Mojo::IOLoop->timer(
-  0.2 => sub {
-    $pubsub->notify("rtest:$$:4" => 'message four');
-    $pubsub->notify("rtest:$$:5" => 'message five');
-  }
-);
-Mojo::IOLoop->start;
-
-is_deeply [sort @messages], ['message five', 'message four'], 'got messages' 
or diag join ", ", @messages;
-$pubsub->unlisten("rtest:$$:*");
-
-my $conn = $pubsub->connection;
-is @{$conn->subscribers('response')}, 1, 'only one message subscriber';
-
-undef $pubsub;
-delete $redis->{pubsub};
-isnt $redis->db->connection, $conn, 'pubsub connection cannot be re-used';
-
-note 'test json data';
-@messages = ();
-$pubsub   = $redis->pubsub;
-$pubsub->json("rtest:$$:1");
-$pubsub->listen("rtest:$$:1" => \&gather);
-Mojo::IOLoop->timer(
-  0.2 => sub {
-    $pubsub->notify("rtest:$$:1" => {some => 'data'});
-    $pubsub->notify("rtest:$$:1" => 'just a string');
-  }
-);
-Mojo::IOLoop->start;
-is_deeply \@messages, [{some => 'data'}, 'just a string'], 'got json messages';
+my (@events, @messages, @res);
 
-is_deeply [sort { $a cmp $b } map { $_->[0] } @events], [qw(psubscribe 
subscribe subscribe)], 'events';
+subtest memory => sub {
+  memory_cycle_ok($redis, 'cycle ok for Mojo::Redis');
+  memory_cycle_ok($redis, 'cycle ok for Mojo::Redis::PubSub');
+};
+
+subtest events => sub {
+  $pubsub->on(error      => sub { shift; push @events, [error      => @_] });
+  $pubsub->on(psubscribe => sub { shift; push @events, [psubscribe => @_] });
+  $pubsub->on(subscribe  => sub { shift; push @events, [subscribe  => @_] });
+
+  is ref($pubsub->listen("rtest:$$:1" => \&gather)), 'CODE', 'listen';
+  $pubsub->listen("rtest:$$:2" => \&gather);
+  note 'Waiting for subscriptions to be set up...';
+  Mojo::Promise->timer(0.15)->wait;
+  memory_cycle_ok($redis, 'cycle ok after listen');
+};
+
+subtest notify => sub {
+  $pubsub->notify("rtest:$$:1" => 'message one');
+  $db->publish_p("rtest:$$:2" => 'message two')->wait;
+  memory_cycle_ok($redis, 'cycle ok after notify');
+  has_messages("rtest:$$:1/message one", "rtest:$$:2/message two");
+};
+
+subtest channels => sub {
+  $pubsub->channels_p('rtest*')->then(sub { @res = @_ })->wait;
+  is_deeply [sort @{$res[0]}], ["rtest:$$:1", "rtest:$$:2"], 'channels_p';
+};
+
+subtest numsub => sub {
+  $pubsub->numsub_p("rtest:$$:1")->then(sub { @res = @_ })->wait;
+  is_deeply $res[0], {"rtest:$$:1" => 1}, 'numsub_p';
+};
+
+subtest numpat => sub {
+  $pubsub->numpat_p->then(sub { @res = @_ })->wait;
+  is_deeply $res[0], 0, 'numpat_p';
+};
+
+subtest unlisten => sub {
+  is $pubsub->unlisten("rtest:$$:1", \&gather), $pubsub, 'unlisten';
+  memory_cycle_ok($pubsub, 'cycle ok after unlisten');
+  $db->publish_p("rtest:$$:1" => 'nobody is listening to this');
+
+  note 'Making sure the last message is not received';
+  Mojo::Promise->timer(0.15)->wait;
+  has_messages();
+};
+
+subtest 'listen patterns' => sub {
+  $pubsub->listen("rtest:$$:*" => \&gather);
+  Mojo::Promise->timer(0.1)->wait;
+
+  $pubsub->notify("rtest:$$:4" => 'message four');
+  $pubsub->notify("rtest:$$:5" => 'message five');
+  wait_for_messages(2);
+
+  has_messages("rtest:$$:5/message five", "rtest:$$:4/message four");
+  $pubsub->unlisten("rtest:$$:*");
+};
+
+subtest connection => sub {
+  my $conn = $pubsub->connection;
+  is @{$conn->subscribers('response')}, 1, 'only one message subscriber';
+
+  undef $pubsub;
+  delete $redis->{pubsub};
+  isnt $redis->db->connection, $conn, 'pubsub connection cannot be re-used';
+};
+
+subtest 'json data' => sub {
+  $pubsub = $redis->pubsub;
+  $pubsub->listen("rtest:$$:1" => \&gather);
+  Mojo::Promise->timer(0.1)->wait;
+
+  $pubsub->notify_p("rtest:$$:1" => '{"invalid"');
+  $pubsub->json("rtest:$$:1");
+  $pubsub->notify("rtest:$$:1" => {some => 'data'});
+  $pubsub->notify("rtest:$$:1" => 'just a string');
+  wait_for_messages(3);
+
+  has_messages("rtest:$$:1/undef", qq(rtest:$$:1/HASH/{"some":"data"}), 
"rtest:$$:1/just a string");
+};
+
+subtest events => sub {
+  is_deeply [sort { $a cmp $b } map { $_->[0] } @events], [qw(psubscribe 
subscribe subscribe)], 'events';
+};
 
 done_testing;
 
 sub gather {
-  push @messages, $_[1];
-  Mojo::IOLoop->stop if @messages == 2;
+  shift;
+  push @messages, join '/', map { !defined($_) ? 'undef' : ref($_) ? (ref($_), 
encode_json($_)) : $_ } reverse @_;
+}
+
+sub has_messages {
+  is_deeply [sort @messages], [sort @_], 'has messages' or diag explain 
\@messages;
+  @messages = ();
+}
+
+sub wait_for_messages {
+  my $n = shift;
+  Mojo::IOLoop->one_tick until @messages >= $n;
 }

Reply via email to