labia

Sunday 7 September 2003

I've been exchanging some interesting emails about CGI::Wiki with Jonathan Swartz. He pointed out that the API could really do with an overhaul - in particular the way that ->retrieve_node returns a hash when it's absolutely begging to be an object. He is of course completely right. The only reason the thing isn't an object is that I was worried about backwards compatibility - this was in some stupidly early version like 0.05 or something like that. Lesson learned - bite the bullet and make incompatible changes when you need to, since it'll be much much more painful six months later.

Anyway, a partial rewrite of CGI::Wiki is most appealing. I'd love to get it tidied up a bit. Jonathan has even offered to help! What a wonderful guy!

The sticking point is the tests. There's loads of them and I think fairly decent coverage, but the test suite itself is an absolute rats' nest. Some of the later test files depend on data having been added in earlier-running ones, most of the test files have a big ugly loop around them to run the tests on all available backends, and there's the whole mess with the interactive Makefile.PL and the persistence of test database information (in CGI::Wiki::TestConfig) and the data-eating possibilities resulting from that.

I'm sure that redoing the tests and the code at the same time would be a very bad idea, so I guess I need to rewrite the tests first. Not an appealing prospect, and not one that I'm sure I can hand off to anyone else, since it is such a mess.

I'm very interested in Module::TestConfig for cleaning up the Makefile.PL; it looks as though it'll let me delete a lot of code. Plus I can get the separately-released plugins to use it for their configuration and testing too, so you're not stuck with the configuration you had last time you installed the main distro. I'm concerned that this is going to mean another dependency though, and I already get complaints about dependencies.

(I want a script that I can give the name of a module and optionaly a Perl version, and get a recursive list of its dependencies and their dependencies, with highlighting to show which modules are core in that Perl version.)

< Monday 8 September 2003 Wednesday 3 September 2003 >

foo

HTML generated from pod with podblog