use Test::Exception;
use Test::More;
-use Test::Warn;
+
+use Test::Requires {
+ 'Test::Warn' => '0.21',
+};
{
throws_ok {
);
}
}
+
+ sub varies {
+ deprecated("The varies sub varies: $_[0]");
+ }
+
}
{
::warning_is{ Foo::bar() } q{}, 'no warning on second call to bar';
::warning_is{ Foo::baz() } q{}, 'no warning on second call to baz';
+
+ ::warning_is{ Foo::varies(1) }
+ { carped => "The varies sub varies: 1" },
+ 'warning for varies sub';
+
+ ::warning_is{ Foo::varies(2) }
+ { carped => "The varies sub varies: 2" },
+ 'warning for varies sub with different error';
+
+ ::warning_is{ Foo::varies(1) }
+ q{},
+ 'no warning for varies sub with same message as first call';
}
{
'got a warning for quux(10)';
}
+
+{
+ package Dep;
+
+ use Package::DeprecationManager -deprecations => {
+ 'foo' => '1.00',
+ },
+ -ignore => [ 'My::Package1', 'My::Package2' ];
+
+ sub foo {
+ deprecated('foo is deprecated');
+ }
+}
+
+{
+ package Dep2;
+
+ use Package::DeprecationManager -deprecations => {
+ 'bar' => '1.00',
+ },
+ -ignore => [ 'My::Package2' ];
+
+ sub bar {
+ deprecated('bar is deprecated');
+ }
+}
+
+{
+ package My::Package1;
+
+ sub foo { Dep::foo() }
+ sub bar { Dep2::bar() }
+}
+
+{
+ package My::Package2;
+
+ sub foo { My::Package1::foo() }
+ sub bar { My::Package1::bar() }
+}
+
+{
+ package My::Baz;
+
+ ::warning_like{ My::Package2::foo() }
+ qr/^foo is deprecated at t.basic\.t line \d+/,
+ 'deprecation warning for call to My::Package2::foo()';
+
+ ::warning_like{ My::Package1::bar() }
+ qr/^bar is deprecated at t.basic\.t line \d+/,
+ 'deprecation warning for call to My::Package1::bar()';
+}
+
+{
+ package My::Baz;
+
+ Dep->import( -api_version => '0.8' );
+
+ ::warning_is{ My::Package2::foo() }
+ q{},
+ 'no warning when calling My::Package2::foo()';
+}
+
done_testing();