Tentative Term::ReadLine patch/test

2001-12-08 Thread Richard Clamp

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");
+



Re: Tentative Term::ReadLine patch/test

2001-12-08 Thread chromatic

On Sat, 08 Dec 2001 12:04:27 -0700, Richard Clamp wrote:

> 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.
 

+BEGIN {
+chdir 't' if -d 't';
+
+if ( $ENV{PERL_CORE} ) {
+@INC = '../lib';
+}
+}

When I was writing tests for libnet, Graham recommended not to chdir() into 't'
for testing outside of the core.  I'd probably move that inside the if block.


+can_ok($t,   qw( ReadLine readline addhistory IN OUT MinLine
+ findConsole Attribs Features new ));

I'd loop over these:

foreach my $method (qw( ReadLine readline addhistory IN OUT MinLine
findConsole Attribs Features new) ) {
can_ok( $t, $method );
}

It seems easier to find the one failure if each method has a separate test.
(My assumption is that can_ok() does all in the list, looking at the test plan
earlier.)

Neither is a big deal, just stylistic things.  Thanks for sending it along!

-- c



Re: Tentative Term::ReadLine patch/test

2001-12-09 Thread Richard Clamp

On Sat, Dec 08, 2001 at 09:48:24PM -0700, chromatic wrote:
> On Sat, 08 Dec 2001 12:04:27 -0700, Richard Clamp wrote:
>
> When I was writing tests for libnet, Graham recommended not to chdir() into 't'
> for testing outside of the core.  I'd probably move that inside the if block.

This is a piece of cargo I scavenged from lib/Term/Cap.t, so maybe
that could take some poking at too.  [cc to jns as I think this may
well be his domain]

In a way it's a little academic since Term::ReadLine doesn't live a
life outside of the core, but I've tweaked it up anyhow, and left the
test for PERL_CORE in to save someone the trouble of adding it later.

> +can_ok($t,   qw( ReadLine readline addhistory IN OUT MinLine
> + findConsole Attribs Features new ));
> 
> I'd loop over these:
> 
> foreach my $method (qw( ReadLine readline addhistory IN OUT MinLine
>   findConsole Attribs Features new) ) {
> can_ok( $t, $method );
> }
> 
> It seems easier to find the one failure if each method has a separate test.
> (My assumption is that can_ok() does all in the list, looking at the test plan
> earlier.)

Good point, I forget that most people aren't going to be running tests
against the core verbosely.

That way it also looks like I wrote a bunch more tests :)

> Neither is a big deal, just stylistic things.  Thanks for sending it along!

Glad to, thanks for the input.

-- 
Richard Clamp <[EMAIL PROTECTED]>