On 12 Mar 2007, at 13:12, Fergal Daly wrote:
I don't want every producer written from here forward to have to be
able to negotiate its way through a minefield of supported versions.
But you do want every consumer written from here forward to support
every previous version.
On the assumption that there will be fewer consumer implementations
that producer implementations at any point in time that's where the
burden should lie, yes. And it's OK to say "I don't know what to do
with this" and skip the test.
It transfers a lot of burden to the producer though. It means that
every producer from now on has parse a discontinuous selection of
version numbers and then do the right thing. The negotiation stage
ends up being more onerous than the actual testing.
my $me = string_to_set($i_support);
my $he = string_to_set($harness_supports);
my $version_to_use = [sort intersect($me, $he)]->[-1];
Yes, that's fine. Then you have to actually generate TAP to whatever
version you find in common.
[snip]
In fact, I'd even go so far as to say that an upper and lower version
are probably enough,
Can't we just keep it simple and say the harness barfs if the TAP is
too new for it? I don't like the idea of tests automatically running
in a degraded mode.
This isn't HTTP where the various actors need to make their best
endeavour to communicate. We really want to be certain that nothing
is lost in translation between the producer and the harness. If you
have the possibility of adaptive behaviour on both sides of that
conversation that risk goes up considerably.
--
Andy Armstrong, hexten.net