Mea Culpa - it wasn't a very clear description.

OK, so perhaps you have a script like this:

###myscript.pl###
doStuff();
doOtherStuff();

sub doStuff{
 # things that need testing
}

sub doOtherStuff{
# things you don't want to run
}

__END__

and you don't have the option of wrapping the top level scope
('doStuff();doOtherStuff()') in 'if caller(){}' - maybe it's legacy
code that is running fine in production, and you don't want to modify
it.

The idea is your test script looks like this:

use Test::Import::DontRun qw(myscript.pl);
my $res = doStuff();
cmp_ok($res,"eq","Some or other value");


It works very simply, by wrapping the source of 'myscript.pl' in
"{last; <code> }'. There's some complex and potentially slightly
fragile stuff to handle @EXPORT if you want to, but the basic case
works pretty well.

I hope that's clearer. Feel free to say 'what a stupid idea' or 'that
won't work because' incidentally - but so far I've found it pretty
useful.

thanks,

Charles.





On 7 October 2010 09:02, nadim khemir <na...@khemir.net> wrote:
> I must admit that I didn't get what you mean. Care to enlighten me with a
> piece of code, some flow, anything that doesn't make me feel stupid.
>
> Nadim.
>

Reply via email to