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.tSee if Term::Complete works
lib/Term/ReadLine.pm Stub readline library
+lib/Term/ReadLine.tSee if Term::ReadLine works
lib/termcap.pl Perl library supporting termcap usage
lib/Test.pmA 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, C,
-C.
+C.
=item C
@@ -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");
+