Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Test-Future-IO-Impl for
openSUSE:Factory checked in at 2026-02-09 15:34:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Test-Future-IO-Impl (Old)
and /work/SRC/openSUSE:Factory/.perl-Test-Future-IO-Impl.new.1670 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Test-Future-IO-Impl"
Mon Feb 9 15:34:46 2026 rev:4 rq:1331903 version:0.170.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/perl-Test-Future-IO-Impl/perl-Test-Future-IO-Impl.changes
2026-01-17 14:56:29.799555496 +0100
+++
/work/SRC/openSUSE:Factory/.perl-Test-Future-IO-Impl.new.1670/perl-Test-Future-IO-Impl.changes
2026-02-09 15:34:49.923349268 +0100
@@ -1,0 +2,16 @@
+Mon Jan 19 05:55:10 UTC 2026 - Tina Müller <[email protected]>
+
+- updated to 0.170.0 (0.17)
+ see /usr/share/doc/packages/perl-Test-Future-IO-Impl/Changes
+
+ 0.17 2026-01-18
+ [CHANGES]
+ * Added tests for `poll` method
+
+ [BUGFIXES]
+ * Account for the fact that read or write IO operations may have
+ already happened before they are cancelled
+ * Clear the EAGAIN error from `$wr` filehandle in EAGAIN write test
+ to stop perl writing annoying warnings during test
+
+-------------------------------------------------------------------
Old:
----
Test-Future-IO-Impl-0.16.tar.gz
New:
----
Test-Future-IO-Impl-0.17.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Test-Future-IO-Impl.spec ++++++
--- /var/tmp/diff_new_pack.dR9UnP/_old 2026-02-09 15:34:50.723382918 +0100
+++ /var/tmp/diff_new_pack.dR9UnP/_new 2026-02-09 15:34:50.723382918 +0100
@@ -18,10 +18,10 @@
%define cpan_name Test-Future-IO-Impl
Name: perl-Test-Future-IO-Impl
-Version: 0.160.0
+Version: 0.170.0
Release: 0
-# 0.16 -> normalize -> 0.160.0
-%define cpan_version 0.16
+# 0.17 -> normalize -> 0.170.0
+%define cpan_version 0.17
License: Artistic-1.0 OR GPL-1.0-or-later
Summary: Acceptance tests for Future::IO implementations
URL: https://metacpan.org/release/%{cpan_name}
++++++ Test-Future-IO-Impl-0.16.tar.gz -> Test-Future-IO-Impl-0.17.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Future-IO-Impl-0.16/Changes
new/Test-Future-IO-Impl-0.17/Changes
--- old/Test-Future-IO-Impl-0.16/Changes 2026-01-07 17:49:27.000000000
+0100
+++ new/Test-Future-IO-Impl-0.17/Changes 2026-01-18 20:24:45.000000000
+0100
@@ -1,5 +1,15 @@
Revision history for Test-Future-IO-Impl
+0.17 2026-01-18
+ [CHANGES]
+ * Added tests for `poll` method
+
+ [BUGFIXES]
+ * Account for the fact that read or write IO operations may have
+ already happened before they are cancelled
+ * Clear the EAGAIN error from `$wr` filehandle in EAGAIN write test
+ to stop perl writing annoying warnings during test
+
0.16 2026-01-07
[BUGFIXES]
* Be less sensitive to `->send` failure in peer-closed case, as OS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Future-IO-Impl-0.16/META.json
new/Test-Future-IO-Impl-0.17/META.json
--- old/Test-Future-IO-Impl-0.16/META.json 2026-01-07 17:49:27.000000000
+0100
+++ new/Test-Future-IO-Impl-0.17/META.json 2026-01-18 20:24:45.000000000
+0100
@@ -33,7 +33,7 @@
"provides" : {
"Test::Future::IO::Impl" : {
"file" : "lib/Test/Future/IO/Impl.pm",
- "version" : "0.16"
+ "version" : "0.17"
}
},
"release_status" : "stable",
@@ -42,6 +42,6 @@
"http://dev.perl.org/licenses/"
]
},
- "version" : "0.16",
+ "version" : "0.17",
"x_serialization_backend" : "JSON::PP version 4.16"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Future-IO-Impl-0.16/META.yml
new/Test-Future-IO-Impl-0.17/META.yml
--- old/Test-Future-IO-Impl-0.16/META.yml 2026-01-07 17:49:27.000000000
+0100
+++ new/Test-Future-IO-Impl-0.17/META.yml 2026-01-18 20:24:45.000000000
+0100
@@ -15,7 +15,7 @@
provides:
Test::Future::IO::Impl:
file: lib/Test/Future/IO/Impl.pm
- version: '0.16'
+ version: '0.17'
requires:
Errno: '0'
IO::Handle: '0'
@@ -25,5 +25,5 @@
perl: '5.014'
resources:
license: http://dev.perl.org/licenses/
-version: '0.16'
+version: '0.17'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Future-IO-Impl-0.16/README
new/Test-Future-IO-Impl-0.17/README
--- old/Test-Future-IO-Impl-0.16/README 2026-01-07 17:49:27.000000000 +0100
+++ new/Test-Future-IO-Impl-0.17/README 2026-01-18 20:24:45.000000000 +0100
@@ -43,6 +43,12 @@
Tests the Future::IO->connect method.
+ poll
+
+ Since version 0.17.
+
+ Tests the Future::IO->poll method.
+
recv, recvfrom
Since version 0.15.
@@ -57,7 +63,10 @@
sleep
- Tests the Future::IO->sleep method.
+ Tests the Future::IO->sleep and Future::IO->alarm methods.
+
+ The two methods are combined in one test suite as they are very
+ similar, and neither is long or complicated.
read, sysread
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/Test-Future-IO-Impl-0.16/lib/Test/Future/IO/Impl.pm
new/Test-Future-IO-Impl-0.17/lib/Test/Future/IO/Impl.pm
--- old/Test-Future-IO-Impl-0.16/lib/Test/Future/IO/Impl.pm 2026-01-07
17:49:27.000000000 +0100
+++ new/Test-Future-IO-Impl-0.17/lib/Test/Future/IO/Impl.pm 2026-01-18
20:24:45.000000000 +0100
@@ -3,7 +3,7 @@
#
# (C) Paul Evans, 2021-2026 -- [email protected]
-package Test::Future::IO::Impl 0.16;
+package Test::Future::IO::Impl 0.17;
use v5.14;
use warnings;
@@ -13,6 +13,7 @@
use Errno qw( EINVAL EPIPE );
use IO::Handle;
+use IO::Poll qw( POLLIN POLLOUT POLLHUP POLLERR );
use Socket qw(
pack_sockaddr_in sockaddr_family INADDR_LOOPBACK
AF_INET AF_UNIX SOCK_DGRAM SOCK_STREAM PF_UNSPEC
@@ -205,6 +206,107 @@
}
}
+=head2 poll
+
+I<Since version 0.17.>
+
+Tests the C<< Future::IO->poll >> method.
+
+=cut
+
+# because the Future::IO default impl cannot handle HUP
+sub run_poll_no_hup_test
+{
+ # POLLIN
+ {
+ pipe my ( $rd, $wr ) or die "Cannot pipe() - $!";
+
+ $wr->autoflush();
+ $wr->print( "BYTES" );
+
+ my $f = Future::IO->poll( $rd, POLLIN );
+
+ is( scalar $f->get, POLLIN, "Future::IO->poll yields POLLIN on readable
filehandle" );
+
+ my $f1 = Future::IO->poll( $rd, POLLIN );
+ my $f2 = Future::IO->poll( $rd, POLLIN );
+
+ is( [ scalar $f1->get, scalar $f2->get ], [ POLLIN, POLLIN ],
+ 'Future::IO->poll can enqueue two POLLIN tests' );
+ }
+
+ # POLLOUT
+ {
+ pipe my ( $rd, $wr ) or die "Cannot pipe() - $!";
+
+ my $f = Future::IO->poll( $wr, POLLOUT );
+
+ is( scalar $f->get, POLLOUT, "Future::IO->poll yields POLLOUT on
writable filehandle" );
+
+ my $f1 = Future::IO->poll( $wr, POLLOUT );
+ my $f2 = Future::IO->poll( $wr, POLLOUT );
+
+ is( [ scalar $f1->get, scalar $f2->get ], [ POLLOUT, POLLOUT ],
+ 'Future::IO->poll can enqueue two POLLOUT tests' );
+ }
+
+ # POLLIN+POLLOUT at once
+ {
+ pipe my ( $rd, $wr ) or die "Cannot pipe() - $!";
+
+ $wr->autoflush();
+ $wr->print( "BYTES" );
+
+ my ( $frd, $fwr );
+
+ # IN+OUT on reading end
+ $frd = Future::IO->poll( $rd, POLLIN );
+ $fwr = Future::IO->poll( $rd, POLLOUT );
+
+ is( scalar $frd->get, POLLIN, "Future::IO->poll yields POLLIN on
readable with simultaneous POLLOUT" );
+ # Don't assert on what $fwr saw here, as OSes/impls might differ
+ $fwr->cancel;
+
+ # IN+OUT on writing end
+ $frd = Future::IO->poll( $wr, POLLIN );
+ $fwr = Future::IO->poll( $wr, POLLOUT );
+
+ is( scalar $fwr->get, POLLOUT, "Future::IO->poll yields POLLOUT on
writable with simultaneous POLLIN" );
+ # Don't assert on what $frd saw here, as OSes/impls might differ
+ $frd->cancel;
+ }
+}
+
+sub run_poll_test
+{
+ run_poll_no_hup_test();
+
+ # POLLHUP
+ {
+ # closing the writing end of a pipe puts the reading end at hangup
condition
+ pipe my ( $rd, $wr ) or die "Cannot pipe() - $!";
+ close $wr;
+
+ my $f = Future::IO->poll( $rd, POLLHUP );
+
+ is( scalar $f->get, POLLHUP, "Future::IO->poll yields POLLHUP on
hangup-in filehandle" );
+ }
+
+ # POLLERR
+ {
+ # closing the reading end of a pipe puts the writing end at error
condition, because EPIPE
+ pipe my ( $rd, $wr ) or die "Cannot pipe() - $!";
+ close $rd;
+
+ my $f = Future::IO->poll( $wr, POLLOUT );
+
+ # We expect at least POLLERR, we might also see POLLOUT or POLLHUP as
+ # well but lets not care about that
+ my $got_revents = $f->get;
+ is( $got_revents & POLLERR, POLLERR, "Future::IO->poll yields at-least
POLLERR on hangup-out filehandle" );
+ }
+}
+
=head2 recv, recvfrom
I<Since version 0.15.>
@@ -293,7 +395,11 @@
$f1->cancel;
- is( scalar $f2->get, "BYT", "Future::IO->$method can be cancelled" );
+ # At this point we don't know if $f1 performed its recv or not. There's
+ # two possible things we might see from $f2.
+
+ like( scalar $f2->get, qr/^(?:BYT|ES)$/,
+ "Result of second Future::IO->$method after first is cancelled" );
}
}
@@ -384,13 +490,22 @@
is( scalar $f2->get, 3, 'Future::IO->send after cancelled one still
works' );
$rd->read( my $buf, 3 );
- is( $buf, "TES", 'Cancelled Future::IO->send method did no write bytes'
);
+
+ # At this point we don't know if $f1 performed its send or not. There's
+ # two possible things we might see from the buffer. Either way, the
+ # presence of a 'T' means that $f2 ran.
+
+ like( $buf, qr/^(?:BYT|TES)$/,
+ "A second Future::IO->send takes place after first is cancelled" );
}
}
=head2 sleep
-Tests the C<< Future::IO->sleep >> method.
+Tests the C<< Future::IO->sleep >> and C<< Future::IO->alarm >> methods.
+
+The two methods are combined in one test suite as they are very similar, and
+neither is long or complicated.
=cut
@@ -473,7 +588,11 @@
$f1->cancel;
- is( scalar $f2->get, "BYT", "Future::IO->$method can be cancelled" );
+ # At this point we don't know if $f1 performed its read or not. There's
+ # two possible things we might see from $f2.
+
+ like( scalar $f2->get, qr/^(?:BYT|ES)$/,
+ "Result of second Future::IO->$method after first is cancelled" );
}
}
@@ -514,6 +633,8 @@
# Attempt to fill the pipe
$wr->$method( "X" x 4096 ) for 1..256;
+ # clear the error on the filehandle to stop perl printing a warning
+ $wr->clearerr;
my $f = Future::IO->$method( $wr, "more" );
@@ -553,7 +674,13 @@
is( scalar $f2->get, 3, "Future::IO->$method after cancelled one still
works" );
$rd->read( my $buf, 3 );
- is( $buf, "TES", "Cancelled Future::IO->$method did not write bytes" );
+
+ # At this point we don't know if $f1 performed its write or not. There's
+ # two possible things we might see from the buffer. Either way, the
+ # presence of a 'T' means that $f2 ran.
+
+ like( $buf, qr/^(?:BYT|TES)$/,
+ "A second Future::IO->$method takes place after first is cancelled" );
}
}
++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.dR9UnP/_old 2026-02-09 15:34:50.903390490 +0100
+++ /var/tmp/diff_new_pack.dR9UnP/_new 2026-02-09 15:34:50.911390826 +0100
@@ -1,6 +1,6 @@
-mtime: 1767851134
-commit: 7a5977da5cdd2b804eb0775bef78286debe5cc1f517e8ef8e4575e29d8a78134
+mtime: 1768802111
+commit: d4b4a707c970b0839d0ef21802a16af79b0b77692b56a554c91d6af14d6dd05c
url: https://src.opensuse.org/perl/perl-Test-Future-IO-Impl.git
-revision: 7a5977da5cdd2b804eb0775bef78286debe5cc1f517e8ef8e4575e29d8a78134
+revision: d4b4a707c970b0839d0ef21802a16af79b0b77692b56a554c91d6af14d6dd05c
projectscmsync: https://src.opensuse.org/perl/_ObsPrj
++++++ build.specials.obscpio ++++++
++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore 2026-01-27 14:32:32.000000000 +0100
@@ -0,0 +1 @@
+.osc