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

Reply via email to