use AutoPrereqs, making sure to skip optional plugins
[p5sagit/Devel-REPL.git] / t / load_plugins.t
index a2129e9..40b11c7 100755 (executable)
@@ -1,7 +1,9 @@
+
 use strict;
 use warnings;
 
 use Test::More;
+use if $ENV{AUTHOR_TESTING}, 'Test::Warnings';
 
 use_ok('Devel::REPL');
 
@@ -37,24 +39,29 @@ Timing
 Turtles
 /;
 
+# one $repl is shared:
+# "Looks like the problem is that you can't open multiple instances of
+# Term::ReadLine:Perl from the same object.  I was able to correct this by
+# changing the test to reuse the same Devel::REPL instance each time.  This
+# prevents the warning that causes the test to fail.  I don't think this
+# changes the spirit of the test, it's just a byproduct of how
+# Term::ReadLine::Perl works." -- RT#84246
+my $repl = Devel::REPL->new;
 for my $plugin_name (@plugins) {
     test_load_plugin($plugin_name);
 }
 
 sub test_load_plugin {
     my ($plugin_name) = @_;
-    my $repl = Devel::REPL->new;
     my $test_name = "plugin $plugin_name loaded";
-    eval "use Devel::REPL::Plugin::$plugin_name";
-    unless($@) {
-        eval { $repl->load_plugin($plugin_name) };
-        ok(!$@, $test_name);
-    } else {
-        SKIP: {
-                skip "could not eval plugin $plugin_name", 1;
-        }
+
+    SKIP: {
+        eval "use Devel::REPL::Plugin::$plugin_name; 1"
+            or skip "could not eval plugin $plugin_name", 1;
+
+        ok(eval { $repl->load_plugin($plugin_name); 1 }, $test_name)
+            or diag $@;
     }
 }
 
 done_testing;
-