A. Pagaltzis wrote:
> Yes, so this should be allowed:
>
> pass();
> plan 'no_plan';
> pass();
>
> Whereas this should not:
>
> pass();
> plan tests => 2;
> pass();
Umm, why not? That's exactly what I was proposing and it would result in...
ok 1
ok 2
1..2
> Consider also:
>
> pass();
> plan skip_all => 'Surprise!';
> pass();
Good point. That wouldn't work, there's no way to express "skip_all" once a
test has been issued. There are ways Test::More could cheat to make it work,
but that goes against it's intent to be as explicit as possible. Running a
test and then stating that you're going to skip all tests is ambiguous.
It does splash some cold water on eliminating the common mistake of running a
use_ok() before deciding if you can or cannot run the tests.
>> It also makes it technically possible to allow the test to
>> change it's plan mid-stream
>
> Without some hypothetical future version of TAP this is only
> possible if you have run tests before declaring a plan at all,
> because otherwise the plan will already have been output as the
> first line of the TAP stream.
Just needs a way to declare that you're going to add to the plan up front.
>> Since the technical restriction is gone, and I see no
>> particular benefit to it being there, and it eliminates some
>> tricky plan counting situations, I don't see why it shouldn't
>> be removed.
>
> Because declaring a plan after running tests is effectively a
> no_plan and the programmer should be aware that that’s what they
> did. It’s fine if that’s their conscious choice; just make sure
> it was.
No, it's critically different from a no_plan in that the number of tests to be
run is still fixed by the programmer. For example...
pass();
plan tests => 3;
pass();
Would produce...
ok 1
ok 2
1..3
Which would be a failure, just as if the plan was at the top.
--
I do have a cause though. It's obscenity. I'm for it.
- Tom Lehrer