I've been working on Test::Virtual::Filesystem for a couple of weeks. It's a growing collection of interoperability tests that should pass for any typical filesystem. I've been pondering its place in the CPANiverse and am interested in any insights others may have.

* Unlike most of the Test::* modules, this is not a tool for writing tests. Instead, it is a suite of complete tests that should be applied to a filesystem. * It tests conformance to an API instead of an implementation. In this case, the API is the collection of core Perl filesystem functions. * The distro tests itself against a known, stable filesystem (/tmp or the equivalent) but is intended to be used to test less stable filesystems (like Fuse filesystems -- I use it for Fuse::PDF)

I searched CPAN (admittedly lightly) for any similar suites and didn't find anything else expressly designed for such a purpose.

Questions:
* Are there other CPAN-hosted, generic test suites that I overlooked?
* What other stable, popular APIs would benefit from a reusable test suite? * Is it worth pushing others to write and use test suites like this, possibly replacing existing ad hoc tests (see, for example, the Fuse.pm .t files)

I came across some non-Perl generic test suites (filesystem and otherwise), but many were optimized for benchmarking rather than API completeness. I've read about a few others, like the Neon webdav test suite, but again saw little to nothing in the Perl world quite like that.

A notable exception is the PUGS test suite, which fits in this category in that it's intended to work against any Perl 6 implementation. The controversial Java TCK lives in this space too. In fact, the strong separation of Interface from Class in the Java world pushes towards this style of testing more naturally than in Perl.

In general, it has occurred to me many times that writing good tests can be as hard as writing good code, but that we rarely reuse them, unlike our code itself.

Thoughts?

Chris

Reply via email to