O'Reilly logo

Perl Testing: A Developer's Notebook by Chromatic, Ian Langworth

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 9. Testing Everything Else

As pleasant as it might be to believe otherwise, there’s a whole world outside of Perl. Fortunately, Perl works well with other programs and other languages, even to the point at which you can use them almost seamlessly from your Perl code.

Good testers don’t shy away from testing external code just because it seems difficult. You can use Perl’s nice testing libraries and the tricks you’ve learned so far even if you have to test code written in other languages or programs you can’t modify. Perl’s that flexible.

This chapter’s labs demonstrate how to test Perl programs that you can’t refactor into modules, how to test standalone programs, and how to test code that isn’t Perl at all.

Writing Testable Programs

Not every useful piece of Perl code fits in its own module. There’s a wealth of worthwhile code in scripts and programs. You know the rule: if it’s worth using, it’s worth testing. How do you test them? Write them to be as testable as possible.

Note

Simple, well-factored code is easier to test in isolation. Improving the design of your code is just one of the benefits of writing testable code.

How do I do that?

Imagine that you have a program that applies filters to files given on the command line, sorting and manipulating them before printing them. Save the following file as filefilter.pl:

 #!perl use strict; use warnings; main( @ARGV ) unless caller(); sub main { die "Usage:\n$0 <command> [file_pattern]\n" unless @_; my $command = shift; my $command_sub ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required