Quoting chromatic <[EMAIL PROTECTED]>:

> Let's try this then:
[....]
> --- /dev/null Thu Aug 30 02:54:37 2001
> +++ ext/B/t/o.t       Thu May  9 21:40:17 2002
> @@ -0,0 +1,64 @@
> +#!./perl -w
> +
> +use strict;
> +use File::Spec;

Move these use() after the BEGIN (so you get the correct @INC).

> +BEGIN {
> +     chdir 't' if -d 't';
> +     @INC = ('../lib', 'lib', '.');
> +     require 'test.pl';
> +}
> +
> +my $file = File::Spec->catfile( 'lib', 'B', 'success.pm' );
> +local *OUT;
> +open(OUT, '>', $file) or skip_all( 'Cannot write fake backend
> module');

Shouldn't you mkdir ./lib/B before this ?

> +print OUT while <DATA>;
> +close *OUT;
> +
> +plan( 9 );

>From outer space !

Tests 7 and 8 will fail without perlio, thus you should
skip them (see the BUGS section is O.pm's pod).

> +
> +# use() makes it difficult to avoid O::import()
> +require_ok( 'O' );
> +
> +my @args = ('-Ilib', '-MO=success,foo,bar', '-e', '1' );
> +my @lines = get_lines( @args );
> +
> +is( $lines[0], '-e syntax OK', 'O.pm should not munge perl output
> without 
> -qq');
> +is( $lines[1], 'Compiling!', 'Output should not be saved without -q
> switch' 
> );
> +is( $lines[2], '(foo) <bar>', 'O.pm should call backend compile()
> method' );
> +is( $lines[3], '[]', 'Nothing should be in $O::BEGIN_output without -q'
> );
> +
> +$args[1] = '-MO=-q,success,foo,bar';
> +@lines = get_lines( @args );
> +isnt( $lines[1], 'Compiling!', 'Output should not be printed with -q
> switch' 
> );
> +is( $lines[2], "[Compiling!", '... but should be in $O::BEGIN_output'
> );
> +
> +$args[1] = '-MO=-qq,success,foo,bar';
> +@lines = get_lines( @args );
> +is( scalar @lines, 3, '-qq should suppress even the syntax OK message'
> );
> +
> +$args[1] = '-MO=success,fail';
> +@lines = get_lines( @args );
> +like( $lines[0], qr/fail at .eval/,
> +     'O.pm should die if backend compile() does not return a subref' );
> +
> +sub get_lines {
> +     split(/[\r\n]+/, runperl( args => [ @_ ], stderr => 1 ));
> +}
> +
> +END {
> +     1 while unlink('lib/B/success.pm');
> +}
> +
> +__END__
> +package B::success;
> +
> +print "Compiling!\n";
> +
> +sub compile {
> +     return 'fail' if ($_[0] eq 'fail');
> +     print "($_[0]) <$_[1]>\n";
> +     return sub { print "[$O::BEGIN_output]\n" };
> +}
> +
> +1;
> 

Reply via email to