use Test::More;
use Test::Requires {
- 'Test::Warn' => '0.21',
+ 'Test::Output' => '0.16',
};
{
Foo->import();
- ::warning_is{ Foo::foo() }
- { carped => 'foo is deprecated' },
+ ::stderr_like{ Foo::foo() }
+ qr/\Qfoo is deprecated/,
'deprecation warning for foo';
- ::warning_is{ Foo::bar() }
- { carped => 'bar is deprecated' },
+ ::stderr_like{ Foo::bar() }
+ qr/\Qbar is deprecated/,
'deprecation warning for bar';
- ::warning_is{ Foo::baz() }
- { carped => 'Foo::baz has been deprecated since version 1.21' },
+ ::stderr_like{ Foo::baz() }
+ qr/\QFoo::baz has been deprecated since version 1.21/,
'deprecation warning for baz, and message is generated by Package::DeprecationManager';
- ::warning_is{ Foo::foo() } q{}, 'no warning on second call to foo';
+ ::stderr_is{ Foo::foo() } q{}, 'no warning on second call to foo';
- ::warning_is{ Foo::bar() } q{}, 'no warning on second call to bar';
+ ::stderr_is{ Foo::bar() } q{}, 'no warning on second call to bar';
- ::warning_is{ Foo::baz() } q{}, 'no warning on second call to baz';
+ ::stderr_is{ Foo::baz() } q{}, 'no warning on second call to baz';
- ::warning_is{ Foo::varies(1) }
- { carped => "The varies sub varies: 1" },
+ ::stderr_like{ Foo::varies(1) }
+ qr/\QThe varies sub varies: 1/,
'warning for varies sub';
- ::warning_is{ Foo::varies(2) }
- { carped => "The varies sub varies: 2" },
+ ::stderr_like{ Foo::varies(2) }
+ qr/\QThe varies sub varies: 2/,
'warning for varies sub with different error';
- ::warning_is{ Foo::varies(1) }
+ ::stderr_is{ Foo::varies(1) }
q{},
'no warning for varies sub with same message as first call';
}
Foo->import( -api_version => '0.01' );
- ::warning_is{ Foo::foo() }
+ ::stderr_is{ Foo::foo() }
q{},
'no warning for foo with api_version = 0.01';
- ::warning_is{ Foo::bar() }
+ ::stderr_is{ Foo::bar() }
q{},
'no warning for bar with api_version = 0.01';
- ::warning_is{ Foo::baz() }
+ ::stderr_is{ Foo::baz() }
q{},
'no warning for baz with api_version = 0.01';
}
Foo->import( -api_version => '1.17' );
- ::warning_is{ Foo::foo() }
- { carped => 'foo is deprecated' },
+ ::stderr_like{ Foo::foo() }
+ qr/\Qfoo is deprecated/,
'deprecation warning for foo with api_version = 1.17';
- ::warning_is{ Foo::bar() }
- { carped => 'bar is deprecated' },
+ ::stderr_like{ Foo::bar() }
+ qr/\Qbar is deprecated/,
'deprecation warning for bar with api_version = 1.17';
- ::warning_is{ Foo::baz() }
+ ::stderr_is{ Foo::baz() }
q{},
'no warning for baz with api_version = 1.17';
}
Foo->import();
- ::warning_is{ Foo::quux(1) }
+ ::stderr_is{ Foo::quux(1) }
q{},
'no warning for quux(1)';
- ::warning_is{ Foo::quux(10) }
- { carped => 'quux > 5 has been deprecated' },
+ ::stderr_like{ Foo::quux(10) }
+ qr/\Qquux > 5 has been deprecated/,
'got a warning for quux(10)';
}
package Dep;
use Package::DeprecationManager -deprecations => {
- 'foo' => '1.00',
+ 'Dep::foo' => '1.00',
},
-ignore => [ 'My::Package1', 'My::Package2' ];
package Dep2;
use Package::DeprecationManager -deprecations => {
- 'bar' => '1.00',
+ 'Dep2::bar' => '1.00',
},
- -ignore => [ 'My::Package2' ];
+ -ignore => [ qr/My::Package[12]/ ];
sub bar {
deprecated('bar is deprecated');
}
{
- package Dep3;
-
- use Package::DeprecationManager -deprecations => {
- 'baz' => '1.00',
- },
- -ignore => [ qr/My::Package[12]/ ];
-
- sub baz {
- deprecated('baz is deprecated');
- }
-}
-
-{
package My::Package1;
sub foo { Dep::foo() }
sub bar { Dep2::bar() }
- sub baz { Dep3::baz() }
}
{
sub foo { My::Package1::foo() }
sub bar { My::Package1::bar() }
- sub baz { My::Package1::baz() }
}
{
package My::Baz;
- ::warning_like{ My::Package1::bar() }
- qr/^bar is deprecated at t.basic\.t line \d+/,
- 'deprecation warning for call to My::Package1::bar()';
+ ::stderr_like{ My::Package2::foo() }
+ qr/^foo is deprecated at t.basic\.t line \d+\s+My::Baz/,
+ 'deprecation warning for call to My::Package2::foo() and mentions My::Baz but not My::Package[12]';
+
+ ::stderr_is{ My::Package2::foo() }
+ q{},
+ 'no deprecation warning for second call to My::Package2::foo()';
+
+ ::stderr_is{ My::Package1::foo() }
+ q{},
+ 'no deprecation warning for call to My::Package1::foo()';
- ::warning_like{ My::Package2::foo() }
- qr/^foo is deprecated at t.basic\.t line \d+/,
- 'deprecation warning for call to My::Package2::foo()';
+ ::stderr_like{ My::Package2::bar() }
+ qr/^bar is deprecated at t.basic\.t line \d+\s+My::Baz/,
+ 'deprecation warning for call to My::Package2::foo() and mentions My::Baz but not My::Package[12]';
- ::warning_like{ My::Package1::baz() }
- qr/^baz is deprecated at t.basic\.t line \d+/,
- 'deprecation warning for call to My::Package2::foo()';
+ ::stderr_is{ My::Package2::bar() }
+ q{},
+ 'no deprecation warning for second call to My::Package2::bar()';
}
{
- package My::Baz;
+ package My::Quux;
- Dep->import( -api_version => '0.8' );
+ ::stderr_like{ My::Package1::foo() }
+ qr/^foo is deprecated at t.basic\.t line \d+\s+My::Quux/,
+ 'deprecation warning for call to My::Package1::foo() and mentions My::Quux but not My::Package[12]';
- ::warning_is{ My::Package2::foo() }
+ ::stderr_is{ My::Package1::foo() }
q{},
- 'no warning when calling My::Package2::foo()';
+ 'no deprecation warning for second call to My::Package1::foo()';
}
done_testing();