Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re^3: RFC: How did I do writing my first test?

by AnomalousMonk (Bishop)
on Sep 24, 2020 at 16:33 UTC ( #11122165=note: print w/replies, xml ) Need Help??

in reply to Re^2: RFC: How did I do writing my first test?
in thread RFC: How did I do writing my first test?

... I included use v5.10.0; is because it is the minimum version of Perl needed to use the module since it uses // ...

To my mind, a use VERSION; statement should generally not be in a unit test script, but in the module that is under test. (Of course, there will be odd cases when such a statement needs to be in a test script, but I expect these cases to be rare.) I try to write unit tests to be compatible with the absolute minimum Perl version, although in practice this works out to be version 5.8.8. :)

Placing a use VERSION; statement as the first statement in a module (and in scripts as needed) as kcott recommends here is part of compile-time checking of environmental requirements. I always include a version assertion except when the code is so generic as to be digestible by even the most hoary version of Perl. Further, having this statement as the first statement in a module as kcott suggests can immediately alert the reader to a minimum version requirement.

It is really the business of each module to police its minimum environmental requirements, including Perl version. These requirements may change radically as the module evolves, and you don't want to have to keep track of all that in a test script. Also, a given application may use a wide variety of modules with widely differing minimum requirements. The use_ok test will catch a mismatch between a module and the test environment right from the git-go.

Give a man a fish:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^4: RFC: How did I do writing my first test?
by tobyink (Canon) on Sep 24, 2020 at 20:03 UTC

    Though I don't usually include a version requirement in test scripts, for versions >= 5.010 use VERSION also loads a feature bundle, and you may wish to use features like state, etc in the tests, so it can make sense to do so.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (6)
As of 2021-04-16 09:44 GMT
Find Nodes?
    Voting Booth?

    No recent polls found