Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re: Test::More command-line arguments?

by chromatic (Archbishop)
on Sep 25, 2012 at 00:03 UTC ( #995461=note: print w/ replies, xml ) Need Help??


in reply to Test::More command-line arguments?

A Perl test file written with Test::More is just a Perl program. @ARGV works there like it does in any Perl program (I know, I use @ARGV in some of my test files.)

Can you post some example code that does not behave as you expect?


Comment on Re: Test::More command-line arguments?
Select or Download Code
Replies are listed 'Best First'.
Re^2: Test::More command-line arguments?
by Anonymous Monk on Sep 25, 2012 at 00:17 UTC

    Here's a simple script run with Perl 5.8.8:

    #!/bin/env perl use strict; use warnings; use Test::More tests => 1; use Data::Dumper; print Data::Dumper->Dump([\@ARGV], [qw/ARGV/]); pass('placeholder');
    Upon execution, I'm getting the following:
    $ prove -v t.t one two three t.t .... 1..1 $ARGV = []; ok 1 - placeholder ok Cannot determine source for one at /tools/oss/packages/x86_64-rhel5/pe +rl/5.8.8-64/lib/5.8.8/App/Prove.pm line 496 $

      prove does not pass on arguments to the test files. prove assumes that you're trying to run test cases called "one", "two" and "three".

      If you need to provide arguments to a test file, you need to run it with perl, not prove:

      $ perl t.t one two three

      If you really want to use prove then perhaps modify your test file to read its options from environment variables instead.

      perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'

        | If you really want to use prove then perhaps modify your test file to read its options from environment variables instead.

        Bummer.

        Thanks, I may have to resort to this method. I appreciate the time both of you spent is drawing out the fundamental problem.

      Okay, I see part of my error. If I run the script directly through the interpreter, I get results:
      $ perl t.t one two three 1..1 $ARGV = [ 'one', 'two', 'three' ]; ok 1 - placeholder $
      ...but is there a way I can pass command-line arguments if I use prove instead? I would like to have the statistics prove provides if possible.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://995461]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2015-07-30 05:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (270 votes), past polls