Making TODO Tests Fail

2009-07-13 Thread Ovid

We currently have over 30,000 tests in our system.  It's getting harder to 
manage them.  In particular, it's getting harder to find out which TODO tests 
are unexpectedly passing.  It would be handy have to some option to force TODO 
tests to die or bailout if they pass (note that this behavior MUST be optional).

Now one might think that it would be easy to track down missing TODOs, but with 
15,000 tests aggregated via Test::Aggregate, I find the following unhelpful:


 TODO passed:   2390, 2413

If those were in individual tests, it would be a piece of cake to track them 
down, aggregated tests get lumped together.  Lacking proper subtest support 
(which might not mitigate the problem) or structured diagnostics (which could 
allow me to attach a lot more information to TODO tests) at the end of the day, 
I need an easier way of tracking this.

Suggestions?

Cheers,
Ovid
--
Buy the book - http://www.oreilly.com/catalog/perlhks/
Tech blog- http://use.perl.org/~Ovid/journal/
Twitter  - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6



Re: Making TODO Tests Fail

2009-07-13 Thread Gabor Szabo
On Mon, Jul 13, 2009 at 4:56 PM, Ovid wrote:
>
> We currently have over 30,000 tests in our system.  It's getting harder to 
> manage them.  In particular, it's getting harder to find out which TODO tests 
> are unexpectedly passing.  It would be handy have to some option to force 
> TODO tests to die or bailout if they pass (note that this behavior MUST be 
> optional).
>
> Now one might think that it would be easy to track down missing TODOs, but 
> with 15,000 tests aggregated via Test::Aggregate, I find the following 
> unhelpful:
>
>
>  TODO passed:   2390, 2413
>
> If those were in individual tests, it would be a piece of cake to track them 
> down, aggregated tests get lumped together.  Lacking proper subtest support 
> (which might not mitigate the problem) or structured diagnostics (which could 
> allow me to attach a lot more information to TODO tests) at the end of the 
> day, I need an easier way of tracking this.

I think it would be better to have a tool (Smolder) be able to display
various drill-downs from the aggregated test report.
e.g. list of all the TODOs
list of all the TODOs that pass
etc...

That way you don't need to run your test suit again with an option but
can get this information from the report
of the regular run.

Gabor


Re: Making TODO Tests Fail

2009-07-13 Thread Ovid

- Original Message 
> From: Gabor Szabo 
>
> I think it would be better to have a tool (Smolder) be able to display
> various drill-downs from the aggregated test report.
> e.g. list of all the TODOs
> list of all the TODOs that pass
> etc...

How would Smolder (which we're not using since we use Hudson) help with this?  
With over 15,000 tests being reported for t/aggregate.t, I think a drill-down 
would be problematic here. Plus, tying the TODO to the appropriate test file 
being aggregated is needed.  Thus, I thought about a BAILOUT or forced failure 
for the TODO at that point.

 
Cheers,
Ovid
--
Buy the book - http://www.oreilly.com/catalog/perlhks/
Tech blog- http://use.perl.org/~Ovid/journal/
Twitter  - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6


Re: Making TODO Tests Fail

2009-07-13 Thread Michael Peters

Gabor Szabo wrote:


I think it would be better to have a tool (Smolder) be able to display
various drill-downs from the aggregated test report.


If you want to see what Smolder would do to your tests, create a TAP archive and 
then you can upload it to the "Junk" project at http://smolder.plusthree.com 
(here's the upload form: 
http://smolder.plusthree.com/app/public_projects/add_report/9)


Then you can click the "OK" or "FAILED" boxes for each stream and it will expand 
them out so you can see the details. TODOs are light green. So find the the one 
you might be interested in, click it and then see it's details.


--
Michael Peters
Plus Three, LP



Re: Making TODO Tests Fail

2009-07-13 Thread Gabor Szabo
On Mon, Jul 13, 2009 at 5:10 PM, Michael Peters wrote:
> Gabor Szabo wrote:
>
>> I think it would be better to have a tool (Smolder) be able to display
>> various drill-downs from the aggregated test report.
>
> If you want to see what Smolder would do to your tests, create a TAP archive
> and then you can upload it to the "Junk" project at
> http://smolder.plusthree.com (here's the upload form:
> http://smolder.plusthree.com/app/public_projects/add_report/9)
>
> Then you can click the "OK" or "FAILED" boxes for each stream and it will
> expand them out so you can see the details. TODOs are light green. So find
> the the one you might be interested in, click it and then see it's details.
>

AFAIK due to the number of tests it won't work well in Smolder - but I
have not tried it.
I was referencing to a future version of it ;-)

aka another feature request...

Gabor


Re: Making TODO Tests Fail

2009-07-13 Thread Michael Peters

Gabor Szabo wrote:


AFAIK due to the number of tests it won't work well in Smolder - but I
have not tried it.
I was referencing to a future version of it ;-)


It's worth a try. Our main test suite at $work has 23,000+ tests and Smolder 
handles it just fine.


--
Michael Peters
Plus Three, LP



Re: Making TODO Tests Fail

2009-07-13 Thread Jonathan Rockway
* On Mon, Jul 13 2009, Ovid wrote:
> How would Smolder (which we're not using since we use Hudson) help
> with this?  With over 15,000 tests being reported for t/aggregate.t, I
> think a drill-down would be problematic here. Plus, tying the TODO to
> the appropriate test file being aggregated is needed.  Thus, I thought
> about a BAILOUT or forced failure for the TODO at that point.

Can't you just put the TAP into a database, and do a quick query to
extract the file, test number, and line of passing TODO tests?  Surely
some code might need to be written, but it doesn't sound too hard.

--
print just => another => perl => hacker => if $,=$"


Re: Making TODO Tests Fail

2009-07-13 Thread chromatic
On Monday 13 July 2009 06:56:15 Ovid wrote:

> We currently have over 30,000 tests in our system.  It's getting harder to
> manage them.  In particular, it's getting harder to find out which TODO
> tests are unexpectedly passing.  It would be handy have to some option to
> force TODO tests to die or bailout if they pass (note that this behavior
> MUST be optional).

What does dying or bailing out give you that you don't already get through 
TAP?  Is it "The ease of a human being looking at the console window or the 
logs and seeing that something failed and parsing it visually?"  How does a 
human figure out which TODO passed from:

prove test.pl
test.pl .. ok   
All tests successful.

Test Summary Report
---
test.pl (Wstat: 0 Tests: 2 Failed: 0)
  TODO passed:   1-2

There's no diagnostic information there.

> Now one might think that it would be easy to track down missing TODOs, but
> with 15,000 tests aggregated via Test::Aggregate, I find the following
> unhelpful:
>
>
>  TODO passed:   2390, 2413

That sounds like a problem with Test::Aggregate, compounding the lack of TODO 
diagnostic information.

> If those were in individual tests, it would be a piece of cake to track
> them down, aggregated tests get lumped together.  Lacking proper subtest
> support (which might not mitigate the problem) or structured diagnostics
> (which could allow me to attach a lot more information to TODO tests) at
> the end of the day, I need an easier way of tracking this.
>
> Suggestions?

Add diagnostics to TODO tests and let your test harness do what it's supposed 
to do.  Shoving yet more optional behavior in the test process continues to 
violate the reasons for having separate test processes and TAP analyzers.

-- c