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