chromatic wrote:
> (I know; it's not exactly what you were asking.  I just wanted to get that in 
> a public mailing list so I could call that the "Star Trek: Generations" 
> fallacy.  You steal a spaceship, which flies through space, to fly through 
> space to a planet, flying through space, where a temporal anomaly, which also 
> flies through space, deflected by a supernova, which you flew through space 
> in your spaceship which flies through space, passes close enough to the 
> planet, because both of them fly through space, that you can jump off a 
> bridge into it.)

Its all tachyons, man.


> I'm sympathetic to the argument that your test file is going to be ugly when 
> the code you're testing is ugly, but it seems to me that containing that 
> ugliness within the specific test file until you can refactor the test file 
> is much better than bolting another ad-hoc feature onto a testing system 
> which already makes way to many underspecified assumptions and would be 
> fairly difficult to replace with something nicer, someday.

I agree.  There's a simple, existing solution to this problem and its not one 
we want to encourage anyway.  The situation would be different if the same 
people didn't control the tests and the code being tested, and thus required 
some sort of coordination, but they do control both sides.

And it won't work anyway.

Having $ENV{RUNNING_TESTS} = 1 should presumably indicate that we're running in 
a testing environment.  Ok, but how does Test::Builder know that?  Answer: it 
doesn't.  Loading Test::Builder does not imply tests are being run.  An example 
of this, off the top of my head, is Jifty which always loads Test::Builder (for 
hacky reasons, I admit).  I'm sure with a little thought one could find more, 
but even if not I do not want to the loading of Test::Builder to imply we're 
running in a test environment.  It limits Test::Builder.

Ok, what about setting it when a plan is initiated?  Surely that means tests 
are being run?  Consider Test::AtRuntime, a Test::Builder derived module 
designed to embed tests in the code to be executed during normal operations to 
help catch and diagnose errors.  Basically an extension of the run-time 
assert() concept.  Test::Builder is loaded.  There's a plan.  Test functions 
are being executed.  But the system is operating normally.  A similar problem 
would occur if I ever got around to moving Carp::Assert over to using 
Test::Builder for its guts.

This might seem like nit-picking for a corner case, but Test::Builder is 
designed to be generic.  The more automatic "convenience" features which get 
built into it the less generic it is.  The less generic it is the less neato 
testing modules can be spawned from it.  So I push back at them and encourage 
them to be built in one level up on top of Test::Builder.

Reply via email to