views:

283

answers:

2

Has anyone seen, tried to implement, or otherwise played with TAP in shell? We're looking to create unit tests across many languages (don't get me started on why this doesn't exist so far), and since we have so much Perl code, we'll be looking at TAP (among others, I imagine). I've found a TAP library for C, Perl, of course, has it built-in, and I've even found an API for Java. But one area missing is shell script testing.

Not that I've found much on unit-testing shell scripts, either, but since we do have thousands of lines of shell code, it'd be nice to be able to test it somehow.

+1  A: 

I usually write my own small test framework for my shell scripts. Some things to keep in mind when doing this:

  • When working with files, make all paths relative to some variable which you can modify in your tests.
  • diff(1) is great to verify test results (and to display a useful error message to the user)
  • Use local variables extensively
  • Everything must be in a function

That said, my "test framework" is mostly a set of shell functions (named test*) and a runTests function which calls them one by one. Nothing fancy, really. Tests create a work directory for the test, copy all necessary files into it, run a function, verify the results against a know-good set of files.

Aaron Digulla
+4  A: 

See the list of TAP Producers for a list of libraries. On that list you will find Tap-functions for shell code.

Chas. Owens
I was hoping for something that ran in Bourne Shell, not just Bourne Again Shell, but it's better than nothing!
Tanktalus