Personally, I think it would be better to use ‘src/test’ rather than 
‘src/${nameOfTestFramework}’. Otherwise, we’re expecting things like 
‘src/junit/java’ and ‘src/testng/java’ and ‘src/spock/groovy’.

To generalise things a bit, the source directory name should be 
‘src/${nameOfTestSuite}’ where a test suite has-a test framework associated 
with it.

On 29 Jun 2014, at 7:41 am, Michael Putters 
<michael.putt...@binarygenetics.com> wrote:

> Just one remark (but maybe I’m understanding the design note wrong):
>  
> Should the C++ source set for Google Test named 'googletest' or 'gtest'?
>  
> Assuming that means something like:
>  
> sources {
>     googletest/gtest {
>         cpp {
>         }
>     }
> }
>  
> Wouldn’t it be nicer to have something more generic like
>  
> sources {
>     test {
>         cpp {
>         }
>     }
> }
>  
> Which would default to a /src/test/cpp path (similar to java’s src/main/java 
> and src/test/java). And then pick the right tool based on the applied plugin. 
> I expect people rarely use both frameworks in the same project (and they 
> could still customize the behavior if that’s the case).
>  
> Anyway, just my two cents…
>  
>  
> Michael
>  
> From: Daz DeBoer [mailto:darrell.deb...@gradleware.com] 
> Sent: Saturday, June 28, 2014 9:08 PM
> To: dev@gradle.codehaus.org
> Subject: Re: [gradle-dev] Google Test Support
>  
> Hi Daniel
> Thanks for the pull request. I've cherry-picked your commit, and added these 
> design notes to 
> https://github.com/gradle/gradle/blob/master/design-docs/testing-for-native-runtime.md.
> Looking forward to more contributions!
> Daz
>  
> 
> On Fri, Jun 27, 2014 at 6:06 PM, Adam Murdoch <adam.murd...@gradleware.com> 
> wrote:
>  
> Take a look at, say, AbstractNativeComponentPluginTest and its dsl() method. 
> It’ll let you do a snippet of build script and take care of making sure 
> everything has been configured. Perhaps we refactor out an abstract class 
> with this dsl() method on it.
>  
> On 27 Jun 2014, at 12:29 pm, Daniel Lacasse <daniel.lacass...@gmail.com> 
> wrote:
> 
> 
> I always had trouble to understand how the ModelRule work and now, trying to 
> make my initial test fail before coding the first story, I'm still having a 
> hard time working with the ModelRule. I have the following test case:
>  
> def "create correct binary type are created for the test suite"() {
>         given:
>         project.plugins.apply(CPlugin)
>         project.libraries.create("main")
>  
>         when:
>         project.plugins.apply(CUnitPlugin)
>  
>         then:
>         def binaries = 
> project.getExtensions().getByType(TestSuiteContainer).getByName("mainTest").binaries
>         def expected = [CUnitTestSuiteExecutableBinary.class]*binaries.size()
>         def actual = binaries.collect {it.class}
>         expected == actual
>     }
>  
> The idea is to verify that all binary for the mainTest component - which 
> should be a cunit testSuites - are in fact of the type 
> CUnitTestSuiteExecutableBinary. Unfortunately, binaries is empty because the 
> binary creation happen inside a ModelRule.rule. How can I force the creation 
> of the binaries from this code to have my expected result? Or, what other way 
> can I achieve the expected result of this test?
>  
> Thanks for the clarification and help,
>  
>  
>  
> 
> On Thu, Jun 19, 2014 at 10:13 AM, Adam Murdoch <adam.murd...@gradleware.com> 
> wrote:
>  
> 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
>  
>  
>  
> 
> 
>  
> -- 
> Daniel
>  
> 
> --
> Adam Murdoch
> Gradle Co-founder
> http://www.gradle.org
> CTO Gradleware Inc. - Gradle Training, Support, Consulting
> http://www.gradleware.com
>  
>  
>  
> 
> 
>  
> --
> Darrell (Daz) DeBoer
> Principal Software Engineer, Gradleware
>  
> Join us for Gradle Summit 2014, June 12th and 13th in Santa Clara, CA: 
> http://www.gradlesummit.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