Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re^2: Testing failures: How to override print to make it fail?

by eyepopslikeamosquito (Archbishop)
on May 05, 2005 at 13:31 UTC ( [id://454355]=note: print w/replies, xml ) Need Help??


in reply to Re: Testing failures: How to override print to make it fail?
in thread Testing failures: How to override print to make it fail?

I'm helping a workmate write his first ever tests for a new function he added to an existing module. Seeing that his new function had:

open ... or die ... print ... or die ...
I suggested it is good form to write tests for exceptional conditions ... then realized I had no idea how to do it. :-) BTW, Devel::Cover also nags you if you don't test the or die branches.

Replies are listed 'Best First'.
Re^3: Testing failures: How to override print to make it fail?
by dragonchild (Archbishop) on May 05, 2005 at 13:35 UTC
    print() is generally considered one of those functions that "Just Works". adding "or die" to print is kinda ... dumb.

    Of course, if you absolutely had to test print's success or failure, you could

    use Fatal qw( print );

    As for Devel::Cover ... I shoot for 90%+ coverage. There are several good conversations on D::C and why attempting to achieve 100% is ... well ... dumb. :-)


    • In general, if you think something isn't in Perl, try it out, because it usually is. :-)
    • "What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against?"
      adding "or die" to print is kinda ... dumb.

      That entirely depends on the application being developed. I've come across several apps where not checking for the result of print has caused some nasty and expensive intermittent bugs.

      (Which is why I wish that print, open, read, etc. threw exceptions by default if called in a void context... Fixed in Perl 6 I think?)

      Update: and

      use Fatal qw( print );

      won't work since print is one of those subroutines that Perl can't override cleanly.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (6)
As of 2024-04-24 19:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found