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.


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

 #!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 ...

Get Perl Testing: A Developer's Notebook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.