[development] Test automation

Derek Wright drupal at dwwright.net
Fri Jun 16 02:38:46 UTC 2006

overall, i'm excited about this work, and think it'll be very cool  
(both for drupal.org, and for other sites i'm working on to manage  
software development)...

On Jun 15, 2006, at 4:52 PM, Rok Žlender wrote:

> 1. Testing server queries project server for all untested patches.
> This will require a xml-rpc handler in project module which would
> generate a list of untested patches or patches marked "patch (needs
> automated test)" and return it as a response.

given how issues and patches are currently handled, this is a very  
ambiguous query to attempt to fulfill:

a) patches are just files attached to issue comments.  there's no  
enforcement of a given naming convention, etc.  it's therefore hard  
to separate patches worth testing from screenshots and other random  
attachments of all sorts.

b) it's entire issues that are set to a given status, not individual  
comments.  a given issue might have 10+ comments with different  
patches attached to them, some of which have been reviewed and  
already vetoed, etc.

c) the *last* patch in a given issue isn't always the one people care  
about.  sometimes a patch from early in the thread ends up being the  
best way to solve something, even if other patches are attached in  
later comments that attempt other approaches.

because of all of this, even marking an issue "patch (needs auto- 
tests)" doesn't really help much.  that'll make it easier to find all  
the issues that need testing, but not the individual patches.

similarly, all this makes the reporting hard, too.  when the testing  
server comes back to post a followup saying "patch foo.txt results:  
FAILED", that might be comment #45 in a long issue, but foo.txt might  
be from early in the the thread.  it'd be nice to be able to group  
them more directly.  instead of a new follow-up, *maybe* we want to  
edit the existing comment and add this additional info (though that  
won't show up as an update in the tracker, etc).  i dunno, it's a  
sticky problem.

i haven't thought about all of this long enough to have a proposal  
for how it should all work.  but, i wanted to at least share my  
concerns so others who have a chance can keep this stuff in mind when  
thinking about this.

some brainstorming...

1) project should use threaded comments, not it's own chronological  
followups?  it'd help to group replies to specific comments more  
nicely, but it also might be harder to follow.

2) comments should have their own status, in addition to the entire  
issue?  might be handy to deal with existing ambiguities in issues  
with lots of patches (e.g. comments like "#4 is broken, but #5 is  
RTBC").  probably too complicated and weird to be practical, but  
maybe worth considering.

3) we should reconsider how we handle file attachments to issues.   
instead of associating each patch with a specific comment, we  
associate all of them with the issue itself (so there's just a  
growing table of filenames at the top of the issue), and then  
individual comments refer to filenames when they want to discuss  
stuff. (there could be an "operations" column in the table, with a  
"reply" link that brings you to an add follow-up form with some  
pointer/link to that particular filename automatically filled in for  
you or something).  this table could have metadata associated with  
each file, so we could clearly mark files as patches, screenshots,  
etc.  maybe each file in this table needs its own status (another  
field in the metadata), instead of each comment in the issue.  the  
callback from the test server could just add more meta data to  
specific files, change the status of files, etc.

food for thought...

-derek (dww)

p.s. unrelated to all of the above, but another potential snag you'll  
run into: not everyone generates patches the same way.  some people  
do the appropriate, recommended thing, and generate the patch from  
the root of the drupal source tree.  others make them local to a  
specific directory.  now that we're about to move core modules from  
modules/foo.module to modules/foo/foo.module, patches that just touch  
a given module would probably be better off from the local directory,  
so they can apply cleanly to both 4.7 and HEAD (bug fixes, of  
course).  so, your test server is going to have to be very smart  
about analyzing patch files, trying different things to get them to  
apply to a given copy of the drupal source.  some will just be  
faulty, bad patches, or patches that no longer apply (which should be  
reported with a different status than "FAILED TESTS".  we probably  
want (at least) "FAILED TO APPLY", "FAILED TESTS", and "PASSED" as  
the possible results of a given patch.

p.p.s. all that got me thinking of another thing... a given patch  
might apply just fine today, and pass all tests.  however, tomorrow,  
dries commits a change to HEAD which changes some API and now a) the  
patch no longer applies and/or b) now starts failing tests.  clearly,  
we need some mechanism/UI for re-testing patches, reporting the  
history of test attempts for a given patch through time, etc.

More information about the development mailing list