On 18 Jun 2014, at 7:19 pm, Daniel Lacasse <daniel.lacass...@gmail.com> wrote:

> Thanks Adam for your insight. I will start with synching up the naming 
> convention with the current Exec task and see how we can extract common 
> interface later. 
> 
> As for the name used for package and source set , I will use googletest as 
> it's more descriptive in the code.
> 
> Finally, I see what you mean about having some kind of base plugin to 
> register test suite but I will hold off until the integration is finished. 

This is a good plan.

> 
> I will start moving forward with this.
> 
> --- 
> Daniel
> On Tuesday, June 17, 2014 04:28 PM, Adam Murdoch 
> <adam.murd...@gradleware.com> wrote:
> 
>> 
>> On 16 Jun 2014, at 4:06 pm, Daniel Lacasse < daniel.lacass...@gmail.com> 
>> wrote:
>> 
>>> I want to kick start the discussion for contributing support for the Google 
>>> Test framework support. I have identified 3 stories which should give 
>>> Gradle a functional support for Google Test. 
>> 
>> Thanks for writing this up. It would be great to see this addition to the 
>> native support. More comments below.
>> 
>>> 
>>> Story: Specific class type for CUnit binary
>>> This story makes sure that subsequent test framework are discriminated.
>>>  - Add class 
>>> org.gradle.nativebinaries.test.cunit.CUnitTestSuiteExecutableBinary which 
>>> extends from TestSuiteExecutableBinary
>>> 
>>> User visible change
>>>  - Backward compatibility is kept and the following configure all test 
>>> suite binary regardless of there framework.
>>>    binaries.withType(TestSuiteExecutableBinary) {
>>>      // Target all test binaries
>>>    }
>>>  - It will now be possible to configure the CUnit test suite binary 
>>> individually like this:
>>>    binaries.withType(CUnitTestSuiteExecutableBinary) {
>>>      // Target only CUnit binaries
>>>    }
>>> 
>>> Test cases
>>> apply 'cunit'
>>> model { testSuites { mainTest { binaires.all { assert it instanceof 
>>> CUnitTestSuiteExecutableBinary } } } }
>>> 
>>> 
>>> Story: RunTestExecutable can take arguments
>>> This story make it possible to passed arguments to the test binary. 
>>> Espacially useful for more advance test framework like Google Test.
>>> 
>>> User visible change
>>>  - tasks.withType(RunTestExecutable).all {
>>>     testArgs '--args-to-pass', '-v'
>>>    }
>>> 
>>> Open issues
>>>  - Is testArgs a good name for the property on the RunTestExecutable task.
>> 
>> It would be good to sync up with the Exec/JavaExec/Test tasks in some way, 
>> even if it’s to use the same naming scheme for the methods that specify args.
>> 
>> We don’t want to implement ExecSpec directly, I think, as things like 
>> specifying the executable doesn’t make any sense here. Perhaps we should 
>> extract some interfaces from ExecSpec that we can share here and with the 
>> Exec task.
>> 
>>> 
>>> 
>>> Story: Google Test support
>>> This story adds support for the Google Test framework.
>>> 
>>> Note that the implementation is highly based on the current CUnit 
>>> implementation.
>>>  - Add class org.gradle.nativebinaries.test.googletest.GoogleTestTestSuite
>>>  - Add class 
>>> org.gradle.nativebinaires.test.googletest.GoogleTestTestSuiteExecutableBinary
>>>  - Add class 
>>> org.gradle.nativebinaires.test.googletest.plugins.GoogleTestPlugin
>>>  - Add class 
>>> org.gradle.nativebinaires.test.googletest.internal.DefaultGoogleTestTestSuite
>>>  - Add class 
>>> org.gradle.nativebinaires.test.googletest.internal.ConfigureGoogleTestTestSources
>>>  - Add class 
>>> org.gradle.nativebinaires.test.googletest.internal.CreateGoogleTestBinaries
>>>  
>>> Open issues
>>>  - Should the package name be 'googletest' or 'gtest' ('gtest' is used for 
>>> there include namespace in c++)?
>> 
>> I don’t have a strong opinion here.
>> 
>>>  - Should the C++ source set for Google Test named 'googletest' or 'guest'?
>> 
>> I think it should probably be the same as the above.
>> 
>>>  - How can we refactor CUnit code for reusability with Google Test? The 
>>> process is the same - configure test source, create binaries, etc. - but 
>>> yet different.
>> 
>> Eventually, I think we want to have some way for the plugin to register a 
>> new test suite type and corresponding test implementation. Some base plugin 
>> would then take care of wiring all the stuff together.
>> 
>> Not exactly sure how this would look yet. We need to do something similar 
>> for plugins that add language support, so we could wait and see how that 
>> looks and reuse the same approach for plugins that add test execution 
>> capabilities.
>> 
>> 
>> --
>> Adam Murdoch 
>> Gradle Co-founder 
>> http://www.gradle.org 
>> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting 
>> http://www.gradleware.com
>> 


--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
CTO Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com



Reply via email to