visible skip messages caught a bug! Data::Dump::Concise != Data::Dumper::Concise
[p5sagit/Devel-REPL.git] / t / load_core.t
index 77bd5dc..612b553 100755 (executable)
@@ -1,83 +1,69 @@
 use strict;
 use warnings;
-use Test::More 'no_plan';
+
+use Test::More;
+use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';
 
 use_ok('Devel::REPL');
 use_ok('Devel::REPL::Script');
 use_ok('Devel::REPL::Plugin::Colors');
 use_ok('Devel::REPL::Plugin::Commands');
 
-eval 'use PPI';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::Completion');
-}
+SKIP: {
+    eval 'use PPI; 1' or skip 'PPI not installed: skipping completion plugins', 6;
 
-eval 'use File::Next';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::CompletionDriver::INC');
-}
-
-eval 'use B::Keywords';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::CompletionDriver::Keywords');
-}
+    use_ok('Devel::REPL::Plugin::Completion');
+    use_ok('Devel::REPL::Plugin::CompletionDriver::Globals');
+    use_ok('Devel::REPL::Plugin::CompletionDriver::Methods');
 
-eval 'use Lexical::Persistence';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::CompletionDriver::LexEnv');
-}
+    test_plugin('File::Next', 'CompletionDriver::INC');
+    test_plugin('B::Keywords', 'CompletionDriver::Keywords');
+    test_plugin('Lexical::Persistence', 'CompletionDriver::LexEnv');
+};
 
-use_ok('Devel::REPL::Plugin::CompletionDriver::Globals');
-use_ok('Devel::REPL::Plugin::CompletionDriver::Methods');
+test_plugin('Lexical::Persistence', 'LexEnv');
 
-eval 'use Data::Dump::Concise';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::DDC');
-}
+test_plugin('Data::Dumper::Concise', 'DDC');
 
-eval 'use Data::Dump::Streamer';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::DDS');
-}
+test_plugin('Data::Dump::Streamer', 'DDS');
 
 use_ok('Devel::REPL::Plugin::DumpHistory');
 use_ok('Devel::REPL::Plugin::FancyPrompt');
 use_ok('Devel::REPL::Plugin::FindVariable');
 use_ok('Devel::REPL::Plugin::History');
 
-eval 'use Sys::SigAction';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::Interrupt');
-}
+test_plugin('Sys::SigAction', 'Interrupt');
 
 # use_ok('Devel::REPL::Plugin::Interrupt') unless $^O eq 'MSWin32';
-use_ok('Devel::REPL::Plugin::LexEnv');
 
-eval 'use PPI';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::MultiLine::PPI');
-}
+test_plugin('PPI', 'MultiLine::PPI');
 
-eval 'use App::Nopaste';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::Nopaste');
-}
+test_plugin('App::Nopaste', 'Nopaste');
 
 use_ok('Devel::REPL::Plugin::OutputCache');
 use_ok('Devel::REPL::Plugin::Packages');
 use_ok('Devel::REPL::Plugin::Peek');
-eval 'use PPI';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::PPI');
-}
+
+test_plugin('PPI' ,'PPI');
 
 use_ok('Devel::REPL::Plugin::ReadLineHistory');
 
-eval 'use Module::Refresh';
-unless ($@) {
-   use_ok('Devel::REPL::Plugin::Refresh');
-}
+test_plugin('Module::Refresh', 'Refresh');
 
 use_ok('Devel::REPL::Plugin::ShowClass');
 use_ok('Devel::REPL::Plugin::Timing');
 use_ok('Devel::REPL::Plugin::Turtles');
+
+sub test_plugin
+{
+    my ($prereq, $plugin) = @_;
+
+    SKIP: {
+        eval "use $prereq; 1"
+            or skip "$prereq not installed: skipping $plugin", 1;
+
+        use_ok("Devel::REPL::Plugin::$plugin");
+    }
+}
+
+done_testing;