Perl's not the only TAP source

Steve Purkis steve at purkis.ca
Sat Jun 20 16:49:54 GMT 2009


On 20 Jun 2009, at 14:21, Andy Armstrong wrote:

> On 20 Jun 2009, at 14:14, Steve Purkis wrote:
>> So the todo list:
>>
>> 1. Get people to agree whether or not we need a generic plugin
>> interface.
>> As far as I can tell, there are 2 options:
>> * source & formatter plugins only (ie: source API stays the same)
>> * generic plugins (API not defined yet)
>
> I'm not what else there is to make pluggable apart from formatting and
> source handlers - but I'm open to suggestions.

Me neither :).

Assuming we settle on this, the next question is: should we allow the  
user to supply config and auto-load formatters as we do with sources?


>> 2. Figure out what to do with TAP::Parser::Iterators.
>> I'm still not convinced we need a separate class of iterators for
>> the parser to use.  Source classes could be iterators too, and that
>> would remove the need for the IteratorFactory class, which basically
>> just makes decisions the Sources could make themselves.
>
> Yeah, I think that's right; a source should be an iterator.
>
>> Of course, in your examples you seem happy to delegate the running
>> commands to the iterator classes.  So maybe they should stay after
>> all?  Or maybe we can just get rid of the 'Factory' class, and let
>> the source classes use the iterators directly?  I know I introduced
>> it, and for valid reasons at the time.  I just feel it over-
>> complicates things now.
>>
>> Andy/Eric: It'd be good to have your thoughts here.
>
> Simplify! Unless we can come up with a good reason why the iterators
> are distinct from sources they should go.

Well, at the very least the IteratorFactory should go.

Thinking about it a bit more, one reason I can think of why Iterators  
themselves shouldn't go is if it makes writing a Source plugin any  
more difficult.  Say we put all the complexity of the Process iterator  
into the Executable source, won't plugin-authors that are using roles  
would either be forced to sub-class, or re-implement that logic in  
some way?  Or am I missing something?


>> Now the bad news as for when I'll be free...  I've got an exam to
>> prep for in a week and a half, so hopefully after that.
>
> Hmm. I wonder if I shouldn't have merged sourcedetector into master
> then. I'd like to be able to make a release of 3.18 if the need
> arises. Thoughts?

Well, it is releasable as it stands.  The main thing is to avoid  
setting the new API in stone, which we can easily do in the pod.  I  
know I've started on that ('sources' in TAP::Harness & TAP::Parser).   
I've just noticed the TAP::Parser docs need updating (grep for TODO),  
that's probably the only thing that would need to be updated for a  
release.

Alternatively, it can always be un-merged until we settle on the  
interface & implementation.

Finally, others can always help take this forward :).

-Steve
(who really should be studying :)



More information about the tapx-dev mailing list