John Murph wrote:
Hans and Adam (and anyone else who might care),

I'm about to start hacking at Gradle again.

Excellent.

I've got two tasks on my list. I wanted to let both of you know that I'm working on these and see if you had any ideas or concerns before I get to far into it. I hope to work on these next week while I'm on Thanksgiving vacation (I have no idea how much I'll actually get done...).

First is TestListener. This (if you can recall that far back) was the reason I did the listener manager changes. We need to have an init script that can register a listener that gets testing feedback from JUnit. This will allow us to improve our Gradle TeamCity runner so that it gets better (and real time) test results. I'm thinking along the lines of "if a listener of a certain type is registered with the listener manager, then give a remoting listener to JUnit that sends messages to an in-process peer that forwards the messages on to the registered listener." Do that make sense?

This would be nice to have.

I suspect most of the work has been done already in the NativeTest task, so that the events are available just below the surface of the NativeTest task. We'd need to add some methods for adding a TestListener to NativeTest, with an impl of that used a ListenerManager to create its broadcaster. Then, the TestListener events would be available in the init script.

I don't think we should bother with trying to fit this into the AntTest task as well, and should instead focus on getting the NativeTest stuff ready.


Second is extension support. This is the idea that a script can ask for some external script to be executed against a given delegate object. Doing this through Gradle would allow for all the normal caching stuff to be reused. We need to be able to run such scripts from the settings.gradle (and from inside build scripts, but that is obvious). We would use this feature to define our own custom domain objects that are configured via external script files. I'm not sure what the interface to Gradle should be, a method on Gradle called "executeExtension" that takes a file and a delegate object? Or maybe a "getExtensionSupport" method that returns an ExtensionSupport class that provides an execute method? What stateful information could ExtensionSupport have that justifies a separate class? Or maybe the justification is that it provides more than one method, like what? I'm not sure what you guys might be thinking about this feature as we have not discussed it much before.


Why do you need to do the configuration using external scripts? What do they configure? I want to get a feel for the use case before we discuss a solution.

--
Adam Murdoch
Gradle Developer
http://www.gradle.org


---------------------------------------------------------------------
To unsubscribe from this list, please visit:

   http://xircles.codehaus.org/manage_email


Reply via email to