I noticed that this was still on the list of untested core modules, so
decided to have a go.

It's a bit of an odd one to test, as Term::ReadLine is just a factory
in front of Term::ReadLine::{Gnu,Perl}.

This also patches some doc bugs I noticed while writing the test, and
allows for it to pick up your very own Term::ReadLine::*
implementation, should you really want to.

Does it look like I'm heading down the right road with this?  If so
let me know and I'll submit it to p5p for applying to blead.

-- 
Richard Clamp <[EMAIL PROTECTED]>
diff -ub 'bleadperl-13535/MANIFEST' 'bleadperl-13535-hack/MANIFEST'
Index: ./MANIFEST
--- ./MANIFEST  Sat Dec  8 17:02:32 2001
+++ ./MANIFEST  Sat Dec  8 17:33:11 2001
@@ -1227,6 +1227,7 @@
 lib/Term/Complete.pm           A command completion subroutine
 lib/Term/Complete.t            See if Term::Complete works
 lib/Term/ReadLine.pm           Stub readline library
+lib/Term/ReadLine.t            See if Term::ReadLine works
 lib/termcap.pl                 Perl library supporting termcap usage
 lib/Test.pm                    A simple framework for writing test scripts
 lib/Test/Builder.pm             For writing new test libraries
diff -ub 'bleadperl-13535/lib/Term/ReadLine.pm' 
'bleadperl-13535-hack/lib/Term/ReadLine.pm'
Index: ./lib/Term/ReadLine.pm
--- ./lib/Term/ReadLine.pm      Sat Dec  8 17:02:17 2001
+++ ./lib/Term/ReadLine.pm      Sat Dec  8 18:11:07 2001
@@ -41,7 +41,7 @@
 
 returns the actual package that executes the commands. Among possible
 values are C<Term::ReadLine::Gnu>, C<Term::ReadLine::Perl>,
-C<Term::ReadLine::Stub Exporter>.
+C<Term::ReadLine::Stub>.
 
 =item C<new>
 
@@ -311,6 +311,8 @@
   @ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub);
 } elsif (defined &Term::ReadLine::Perl::readline) {
   @ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub);
+} elsif (defined $which && defined &{"Term::ReadLine::$which\::readline"}) {
+  @ISA = "Term::ReadLine::$which";
 } else {
   @ISA = qw(Term::ReadLine::Stub);
 }
diff -ub /dev/null 'bleadperl-13535-hack/lib/Term/ReadLine.t'
Index: ./lib/Term/ReadLine.t
--- ./lib/Term/ReadLine.t       Thu Jan  1 01:00:00 1970
+++ ./lib/Term/ReadLine.t       Sat Dec  8 18:31:00 2001
@@ -0,0 +1,37 @@
+#!./perl -w
+use strict;
+
+BEGIN {
+    chdir 't' if -d 't';
+
+    if ( $ENV{PERL_CORE} ) {
+        @INC = '../lib';
+    }
+}
+
+package Term::ReadLine::Mock;
+our @ISA = 'Term::ReadLine::Stub';
+sub ReadLine {'Term::ReadLine::Mock'};
+sub readline { "a line" }
+sub new      { bless {} }
+
+package main;
+
+use Test::More tests => 6;
+
+BEGIN {
+    $ENV{PERL_RL} = 'Mock'; # test against our instrumented class
+    use_ok('Term::ReadLine');
+}
+
+my $t = new Term::ReadLine 'test term::readline';
+
+ok($t, "made something");
+
+isa_ok($t,          'Term::ReadLine::Mock');
+can_ok($t,           qw( ReadLine readline addhistory IN OUT MinLine
+                         findConsole Attribs Features new ));
+
+is($t->ReadLine,    'Term::ReadLine::Mock', "\$object->ReadLine");
+is($t->readline,    'a line',               "\$object->readline");
+

Reply via email to