On Monday 07 April 2008 14:42:26 Ovid wrote: > The main problem we're trying to balance is the needs of complex test > suites (less common) and simple test suites (more common). Creating a > protocol which tries to satisfy both of those is tough, so we're also > working on tool support to manage it. > > It's a more difficult problem because as we expand to fit more complex > needs, the average CPAN author might get mad that we're adding support > for things they don't need, but organizations like Yahoo, the BBC and > quite a few others find that Perl's testing tools can be quite limiting > for their needs. This doesn't help.
Sure, and I'm sympathetic to that argument. A little more structure is a good thing, if there are tools which can read it unambiguously. However, trying to design in sufficient flexibility that the toolset never needs to be upgraded despite everyone everywhere throwing in new key/value pairs willy-nilly misses, I think, one very important point: All* of the TAP I've ever seen has been transient data generated by one tool, processed by another tool, and almost immediately discarded. Let's make that two points: TAP and Test::Builder succeed by making tests unambiguous. They passed or they didn't. True or false; that's it. Universal and pain-free extensibility is a nice goal, I suppose, but I've never actually seen it in practice. It usually fails because of explosive ambiguity. YAML parsers right now *should* ignore extra fields. If people want to add extra fields, that's fine. They can write their own parsers. If TAP-diag needs to add fields in the future, the existing tools can do so as well. People who might want to upgrade then have the same choices they always do: 1) don't upgrade 2) upgrade but roll back any changes they don't want 3) upgrade and change their existing modifications to avoid collisions (If you really want to start a free-for-all, throw in an officially recommended "metadata" hash and laissez votre mains under that.) Again, we're talking about processing documents generated and almost always immediately thrown away after processing. Any organization which can't fix the handful of pieces which generate TAP-diag and the one or two pieces of code which consume TAP-diag in an afternoon is doing something wrong with regard to duplication and maintainability, and it'll take quite a few libations to make me believe that such organizations are actually testing their code in any rigorous sense. -- c * except for TAP written by hand for didactic purposes, which I've seen three times, and the first two don't count because I wrote it