A. Pagaltzis wrote:
> * Michael G Schwern <[EMAIL PROTECTED]> [2007-12-05 15:00]:
>> I'm going to keep drilling through the BS until I either hit
>> bottom or punch through.
>
> Yeah, we’re all spouting bullshit. Gee, some tone you’re setting.
Sorry, I forgot the :)
That I'm pushing so hard to get something concrete out of you means I think
you've got something useful to say. That I'm not getting it is frustrating.
Seems I've finally got it, thank you.
>> About all that's different when the plan is at the end is the
>> TAP reader doesn't know how many tests are coming until the end
>> of the test. Then it can't display the expected number of tests
>> while the test is running.
>
> Not only can’t it do anything display-wise, but the harness also
> can’t do anything else that requires knowing the projected plan
> up front. It can’t abort the test as soon as the first extra test
> runs. If the test dies, the harness doesn’t know how many tests
> were pending. A system whose job is to continuously run lots of
> tests in parallel can’t do nearly as much useful asynchronous
> reporting.
>
>> Unfortunate, but hardly a showstopper.
>
> Whether or not it’s a showstopper is for the harness author
> to judge and not for you. It’s not hard to imagine cases where
> better streamability is important, even if they’re not garden-
> variety `./Build test` scenarios. We’re championing TAP as a
> solution for a wide variety of scenarios, right?
That's all things I haven't thought of. Since it doesn't effect the ultimate
quality of the tests, just some inconveniences in reporting, I'm not worried.
no_plan already has all these issues and the sky remains firmly fixed in the
heavens. Header-at-end TAP is still streamable. You don't have to read the
whole document before you can get information. It doesn't close off any
testing situations, and it makes quite a few more much simpler.
To make it clear, Test::Builder will still put the plan at front when it can.
Also, to make it clear, this is all possible right now with TAP. This is a
Test::Builder imposed restriction.
> But streamability isn’t important in that most common use case,
> so it probably shouldn’t be the default, which is why I opined
> that maybe Test::More should be strict on request but not by
> default.
Sorry, I must have missed that. Your example code up to this point looked
like it required the user to declare up front that they were going to put a
plan later.
Having the author declare in the test that they'd like Test::More to be strict
with the plan seems near useless. If you're going to declare that you have to
declare a plan, why not just declare the plan? It's like preparing to
prepare. I can think of a few weird cases where it might be handy, but it's
not worth the extra complication.
--
Life is like a sewer - what you get out of it depends on what you put into it.
- Tom Lehrer