You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
use My::Class -api_version => '0.04';
@@ -186,7 +203,10 @@ This module allows you to manage a set of deprecations for one or more modules.
When you import CPackage::DeprecationManager, you must provide a set of
C<-deprecations> as a hash ref. The keys are "feature" names, and the values
-are the version when that feature was deprecated.
+are either the version when that feature was deprecated, or a hash ref
+with the keys C (when the feature was deprecated)
+and C<end_of_life> (when the feature is planned for removal, which can
+be a version number or a date).
In many cases, you can simply use the fully qualified name of a subroutine or
method as the feature name. This works for cases where the whole subroutine is
diff --git a/t/basic.t b/t/basic.t
index 1032d4a..d49256a 100644
--- a/t/basic.t
+++ b/t/basic.t
@@ -27,6 +27,13 @@ use Test::Requires {
'Foo::bar' => '0.03',
'Foo::baz' => '1.21',
'not a sub' => '1.23',
'Foo::deadline' => {
end_of_life => 'version 9',
},
'Foo::deadline_with_since' => {
since => '0.02',
end_of_life => 'version 9',
},
};
sub foo {
@@ -41,6 +48,9 @@ use Test::Requires {
deprecated();
}
sub deadline { deprecated(); }
sub deadline_with_since { deprecated(); }
sub quux {
if ( $_[0] > 5 ) {
deprecated(
@@ -93,6 +103,20 @@ use Test::Requires {
}
{
package My::EndOfLife;
Foo->import;
::stderr_like { Foo::deadline() }
qr/Foo::deadline has been deprecated and is planned to be removed by version 9/,
'end of life warning';
::stderr_like { Foo::deadline_with_since() }
qr/Foo::deadline_with_since has been deprecated since .* and is planned to be removed by/,
'end of life warning with since';
+}
+
+{
package Baz;
Foo->import( -api_version => '0.01' );
--
1.7.4.1
The text was updated successfully, but these errors were encountered:
Migrated from rt.cpan.org #68527 (status was 'new')
Requestors:
From [email protected] (@yanick) on 2011-05-28 17:54:02
:
From: Yanick Champoux [email protected]
In a nutshell, this patch allows to do
use Package::DeprecationManager -deprecations => {
'My::Class::foo' => '0.02',
'My::Class::frobnicate' => {
since => '0.07',
end_of_life => '1.0',
},
};
Which will generate the warning
My::Class::frobnicate has been deprecated since version 0.07 and is planned to be removed by 1.0
For now the 'end_of_life' is only a string, so a version number, a
date, or anything else can be put in there.
lib/Package/DeprecationManager.pm | 26 +++++++++++++++++++++++---
t/basic.t | 24 ++++++++++++++++++++++++
2 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/lib/Package/DeprecationManager.pm b/lib/Package/DeprecationManager.pm
index 6494acb..5db93fd 100644
--- a/lib/Package/DeprecationManager.pm
+++ b/lib/Package/DeprecationManager.pm
@@ -63,7 +63,7 @@ sub _build_import {
sub _build_warn {
my $registry = shift;
my $deprecations = shift;
my $ignore = shift;
my %ignore = map { $_ => 1 } grep { !ref } @{ $ignore || [] };
@@ -94,7 +94,12 @@ sub _build_warn {
@@ -109,6 +114,8 @@ sub _build_warn {
$msg = "$args{feature} has been deprecated";
$msg .= " since version $deprecated_at"
if defined $deprecated_at;
@@ -147,6 +154,10 @@ version 0.10
'My::Class::foo' => '0.02',
'My::Class::bar' => '0.05',
'feature-X' => '0.07',
};
sub foo {
@@ -172,6 +183,12 @@ version 0.10
}
}
sub frobnicate {
deprecated();
...
}
package Other::Class;
use My::Class -api_version => '0.04';
@@ -186,7 +203,10 @@ This module allows you to manage a set of deprecations for one or more modules.
When you import CPackage::DeprecationManager, you must provide a set of
C<-deprecations> as a hash ref. The keys are "feature" names, and the values
-are the version when that feature was deprecated.
+are either the version when that feature was deprecated, or a hash ref
+with the keys C (when the feature was deprecated)
+and C<end_of_life> (when the feature is planned for removal, which can
+be a version number or a date).
In many cases, you can simply use the fully qualified name of a subroutine or
method as the feature name. This works for cases where the whole subroutine is
diff --git a/t/basic.t b/t/basic.t
index 1032d4a..d49256a 100644
--- a/t/basic.t
+++ b/t/basic.t
@@ -27,6 +27,13 @@ use Test::Requires {
'Foo::bar' => '0.03',
'Foo::baz' => '1.21',
'not a sub' => '1.23',
};
sub foo {
@@ -41,6 +48,9 @@ use Test::Requires {
deprecated();
}
sub deadline { deprecated(); }
sub deadline_with_since { deprecated(); }
sub quux {
if ( $_[0] > 5 ) {
deprecated(
@@ -93,6 +103,20 @@ use Test::Requires {
}
{
+}
+
+{
package Baz;
--
1.7.4.1
The text was updated successfully, but these errors were encountered: