Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re^4: testing a standalone script with parameters

by chexmix (Hermit)
on Mar 04, 2009 at 20:44 UTC ( #748320=note: print w/replies, xml ) Need Help??

in reply to Re^3: testing a standalone script with parameters
in thread testing a standalone script with parameters

OK, I am still getting the same output (see below) and I think I am beginning to understand why ... so I hope my fellow Monks will excuse my ox-like progress ... :^)

In the script I am testing, what is now the sub main() calls out to a parse_opts() routine to set the values in %params. Therefore (if I am understanding this), the line I have added to myScript to enable testing, e.g.

main( @ARGV ) unless caller( );

... doesn't really make sense because the script isn't accessing @ARGV directly -- it is doing so via Getopt::Long and a parse_opts() routine. In other words there is kind of a collision of approaches here.

... so I am still lost in a way. Am not sure if I need to totally recast the script to be tested so that it doesn't make use of this form of parameter processing, or if there is still a way to do what I want, e.g. write a test that allows one to point the script at a particular file, read 'dummy' input and create 'dummy' output, and test that that is all being done correctly.

For what it is worth, this is what test_myScript.t looks like now:

#!/usr/bin/perl use warnings; use strict; use Test::More tests => 5; use Test::Exception; ok( require( 'pluck4gl' ), 'loaded file okay' ) or exit; my @ARGV = ('-files=S2008-10-22_13:01.failed.lis','-output=doodad.4gl' +,'/data/mola/sap/daily4gl/S2008-10-22_13:01.4gl'); throws_ok (sub {main ( @ARGV )}, qr/Usage:/, 'main () should give a us +age error without any arguments'); throws_ok (sub {main( 'bad command' ) }, qr/Unknown command 'bad comma +nd'/, '... or with a bad command given');

... and here is the output:

1..5 ok 1 - loaded file okay parameter `files' not set parameter `output' not set # Looks like you planned 5 tests but only ran 1. # Looks like your test died just after 1.

I apologize for my utter fecklessness. I definitely need some more feck.



Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://748320]
[Corion]: ambrus: AnyEvent(::HTTP) doesn't integrate well with Prima, that's my main problem
[Corion]: There is a weirdo shim because there is a POE integration for Prima, and if you use that, you can use the POE adapter of AnyEvent. What I'd want is something transport agnostic that parses HTTP or produces HTTP output, so that the communication with ...
[Corion]: ... the socket is done by my code. Ideally that module would not be based on callbacks ;)
[Corion]: Basically, something that decouples the HTTP parsing (+ determining whether to redirect, etc) from the IO
[Corion]: All clients I'm aware of don't do that but issue all IO themselves

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (12)
As of 2016-12-07 15:50 GMT
Find Nodes?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:

    Results (130 votes). Check out past polls.