Hi, I'm not sure I like moving (some of) core/src/test out into a separate project. As a general pattern, I think I would much rather that the test fixtures exported by a project live in that project, rather than in a separate project, and are modelled as a separate publication.
That is, right now, we have the following dependencies: core test -> internalTesting main -> core main I'd much rather: core test -> core testFixtures -> core main. where 'core testFixtures' are the core-specific test fixtures, such as classes like HelperUtil, AbstractTaskTest, AbstractTaskSpec. This doesn't include int testing fixtures such as GradleExecutor, and probably doesn't include general things such as TemporaryFolder, TestFile, and so on. One problem - apart from the conceptual awkwardness - with having a project's test fixtures in a separate project is that it blows our 'must be able to import into eclipse' story right out of the water, as the eclipse plugin will map these to: core -> internalTesting -> core which, of course, eclipse can't handle. Another issue (for me) is that idea treats the test fixtures as production code, not test code. This breaks things such as search for usages. I think there are some better options: 1. We push the separate projects option even further, and bust up every project into 4 separate projects: main, testFixtures, tests, and integTests. 2. Test fixtures live in the owning project, and we map each source set to a separate eclipse project, so we end up with -main, -test, and -integTests eclipse projects. Possibly combine this with adding a testFixtures source set as well. 3. Test fixtures live in the owning project, and we map the integTest source set of each project to a separate eclipse project. Possibly combine this with adding a testFixtures source set as well. What is currently 'internalTesting' would split into 3 pieces: the general purpose test fixtures, the core project's test fixtures, and the integration testing fixtures. These would be treated as per whichever of the above options we choose. My vote is that the text fixtures exported by a project live in that project, which means either option 2 or 3. Option 2 might be the better option. And it might be the better option for the Eclipse plugin as a default behaviour, too. Short term fix is to move core's (and plugin's) test fixtures back into core and plugin. On 24/08/2011, at 11:12 PM, [email protected] wrote: > Branch: refs/heads/master > Home: https://github.com/gradle/gradle > > Commit: 82b55a13b12c4cb1f276390e65ec86bc875d8f5e > > https://github.com/gradle/gradle/commit/82b55a13b12c4cb1f276390e65ec86bc875d8f5e > Author: Luke Daley <[email protected]> > Date: 2011-08-24 (Wed, 24 Aug 2011) > > Changed paths: > M build.gradle > M config/checkstyle/suppressions.xml > M settings.gradle > M subprojects/announce/announce.gradle > M subprojects/antlr/antlr.gradle > M subprojects/code-quality/code-quality.gradle > M subprojects/core-impl/core-impl.gradle > M > subprojects/core-impl/src/test/groovy/org/gradle/api/internal/artifacts/ivyservice/DefaultIvyDependencyResolverTest.java > M subprojects/core/core.gradle > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/AbstractExecutionResult.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/AbstractGradleExecuter.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/ArtifactBuilder.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/BasicGradleDistribution.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/DaemonGradleExecuter.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/ExecutionFailure.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/ExecutionResult.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/ForkingGradleExecuter.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/GradleBackedArtifactBuilder.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/GradleDistribution.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/GradleDistributionExecuter.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/GradleExecuter.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/HttpServer.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/InProcessGradleExecuter.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/IvyRepository.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/MavenRepository.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/PreviousGradleVersionExecuter.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/RuleHelper.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/Sample.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/ScriptExecuter.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/TestClassExecutionResult.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/TestExecutionResult.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/TestResources.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/UsesSample.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/internal/AbstractAutoTestedSamplesTest.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/internal/AbstractIntegrationSpec.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/internal/AbstractIntegrationTest.java > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/internal/AutoTestedSamplesUtil.groovy > R > subprojects/core/src/integTest/groovy/org/gradle/integtests/fixtures/internal/IntegrationTestHint.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/DefaultResolvedArtifactTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/DefaultResolvedDependencyTest.java > R > subprojects/core/src/test/groovy/org/gradle/api/tasks/AbstractConventionTaskTest.java > R > subprojects/core/src/test/groovy/org/gradle/api/tasks/AbstractSpockTaskTest.groovy > R subprojects/core/src/test/groovy/org/gradle/api/tasks/AbstractTaskTest.java > R > subprojects/core/src/test/groovy/org/gradle/api/tasks/AntBuilderAwareUtil.groovy > R > subprojects/core/src/test/groovy/org/gradle/api/tasks/GroovyTaskTestHelper.groovy > R > subprojects/core/src/test/groovy/org/gradle/api/tasks/bundling/AbstractArchiveTaskTest.groovy > R > subprojects/core/src/test/groovy/org/gradle/util/ConcurrentSpecification.groovy > R subprojects/core/src/test/groovy/org/gradle/util/FailsWithMessage.java > R > subprojects/core/src/test/groovy/org/gradle/util/FailsWithMessageExtension.java > R subprojects/core/src/test/groovy/org/gradle/util/HelperUtil.groovy > R subprojects/core/src/test/groovy/org/gradle/util/JUnit4GroovyMockery.java > R subprojects/core/src/test/groovy/org/gradle/util/Matchers.java > R subprojects/core/src/test/groovy/org/gradle/util/RedirectStdOutAndErr.java > R > subprojects/core/src/test/groovy/org/gradle/util/ReflectionEqualsMatcher.java > R subprojects/core/src/test/groovy/org/gradle/util/Resources.java > R subprojects/core/src/test/groovy/org/gradle/util/SetSystemProperties.java > R subprojects/core/src/test/groovy/org/gradle/util/TemporaryFolder.java > R subprojects/core/src/test/groovy/org/gradle/util/TestDirHelper.groovy > R subprojects/core/src/test/groovy/org/gradle/util/TestFile.java > R subprojects/core/src/test/groovy/org/gradle/util/TestFileContext.java > R subprojects/core/src/test/groovy/org/gradle/util/TestFileHelper.groovy > R subprojects/core/src/test/groovy/org/gradle/util/TestTask.groovy > M subprojects/cpp/cpp.gradle > M subprojects/ear/ear.gradle > M subprojects/ide/ide.gradle > M subprojects/integ-test/integ-test.gradle > M subprojects/jetty/jetty.gradle > M subprojects/launcher/launcher.gradle > M subprojects/maven/maven.gradle > M subprojects/open-api/open-api.gradle > M subprojects/osgi/osgi.gradle > M subprojects/plugins/plugins.gradle > R > subprojects/plugins/src/test/groovy/org/gradle/api/tasks/compile/AbstractCompileTest.java > M subprojects/scala/scala.gradle > M subprojects/signing/signing.gradle > M subprojects/sonar/sonar.gradle > A > subprojects/testing/src/main/groovy/org/gradle/api/artifacts/ArtifactsTestUtils.java > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/AbstractConventionTaskTest.java > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/AbstractSpockTaskTest.groovy > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/AbstractTaskTest.java > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/AntBuilderAwareUtil.groovy > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/GroovyTaskTestHelper.groovy > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/bundling/AbstractArchiveTaskTest.groovy > A > subprojects/testing/src/main/groovy/org/gradle/api/tasks/compile/AbstractCompileTest.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/ConcurrentSpecification.groovy > A > subprojects/testing/src/main/groovy/org/gradle/api/util/FailsWithMessage.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/FailsWithMessageExtension.java > A subprojects/testing/src/main/groovy/org/gradle/api/util/HelperUtil.groovy > A > subprojects/testing/src/main/groovy/org/gradle/api/util/JUnit4GroovyMockery.java > A subprojects/testing/src/main/groovy/org/gradle/api/util/Matchers.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/RedirectStdOutAndErr.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/ReflectionEqualsMatcher.java > A subprojects/testing/src/main/groovy/org/gradle/api/util/Resources.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/SetSystemProperties.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/TemporaryFolder.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/TestDirHelper.groovy > A subprojects/testing/src/main/groovy/org/gradle/api/util/TestFile.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/TestFileContext.java > A > subprojects/testing/src/main/groovy/org/gradle/api/util/TestFileHelper.groovy > A subprojects/testing/src/main/groovy/org/gradle/api/util/TestTask.groovy > A subprojects/testing/src/main/groovy/org/gradle/api/util/package-info.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/AbstractExecutionResult.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/AbstractGradleExecuter.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/ArtifactBuilder.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/BasicGradleDistribution.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/DaemonGradleExecuter.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/ExecutionFailure.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/ExecutionResult.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/ForkingGradleExecuter.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/GradleBackedArtifactBuilder.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/GradleDistribution.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/GradleDistributionExecuter.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/GradleExecuter.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/HttpServer.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/InProcessGradleExecuter.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/IvyRepository.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/MavenRepository.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/PreviousGradleVersionExecuter.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/RuleHelper.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/Sample.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/ScriptExecuter.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/TestClassExecutionResult.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/TestContext.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/TestExecutionResult.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/TestResources.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/UsesSample.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/internal/AbstractAutoTestedSamplesTest.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/internal/AbstractIntegrationSpec.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/internal/AbstractIntegrationTest.java > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/internal/AutoTestedSamplesUtil.groovy > A > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/internal/IntegrationTestHint.java > A subprojects/testing/testing.gradle > M subprojects/tooling-api/tooling-api.gradle > M subprojects/ui/ui.gradle > M subprojects/wrapper/wrapper.gradle > > Log Message: > ----------- > Moved core/src/test and core/src/integTest into new “testing” module which > contains all fixtures/utilities for testing support. > > This module is not part of the Gradle distribution. See the build script for > this module for more info. > > > Commit: 2059bf4837b1a4a7d3fe20434aed0324879951f7 > > https://github.com/gradle/gradle/commit/2059bf4837b1a4a7d3fe20434aed0324879951f7 > Author: Luke Daley <[email protected]> > Date: 2011-08-24 (Wed, 24 Aug 2011) > > Changed paths: > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/AbstractDependencyDescriptorFactoryInternal.java > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/ClientModuleDependencyDescriptorFactory.java > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultDependenciesToModuleDescriptorConverter.java > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DependencyDescriptorFactory.java > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DependencyDescriptorFactoryDelegate.java > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/ExternalModuleDependencyDescriptorFactory.java > M > subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/ProjectDependencyDescriptorFactory.java > M > subprojects/core-impl/src/test/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultDependenciesToModuleDescriptorConverterTest.java > M > subprojects/core-impl/src/test/groovy/org/gradle/api/internal/artifacts/ivyservice/moduleconverter/dependencies/DefaultModuleDescriptorFactoryForClientModuleTest.java > M > subprojects/core/src/main/groovy/org/gradle/api/internal/AbstractClassGenerator.java > M > subprojects/core/src/main/groovy/org/gradle/api/internal/ClassGenerator.java > A > subprojects/core/src/main/groovy/org/gradle/api/internal/ClassGeneratorBackedInstantiator.java > A > subprojects/core/src/main/groovy/org/gradle/api/internal/DirectInstantiator.java > M > subprojects/core/src/main/groovy/org/gradle/api/internal/ReflectiveNamedDomainObjectFactory.java > M > subprojects/core/src/main/groovy/org/gradle/api/internal/project/GlobalServicesRegistry.java > M > subprojects/core/src/main/groovy/org/gradle/api/internal/project/TopLevelBuildServiceRegistry.java > M > subprojects/core/src/main/groovy/org/gradle/groovy/scripts/DefaultScriptCompilerFactory.java > M subprojects/core/src/main/groovy/org/gradle/profile/BuildProfile.java > A subprojects/core/src/main/groovy/org/gradle/profile/CompositeOperation.java > A > subprojects/core/src/main/groovy/org/gradle/profile/ContinuousOperation.java > A > subprojects/core/src/main/groovy/org/gradle/profile/DependencyResolveProfile.java > A subprojects/core/src/main/groovy/org/gradle/profile/Operation.java > M subprojects/core/src/main/groovy/org/gradle/profile/ProfileListener.java > M subprojects/core/src/main/groovy/org/gradle/profile/ProjectProfile.java > M subprojects/core/src/main/groovy/org/gradle/profile/TaskProfile.java > M > subprojects/core/src/main/groovy/org/gradle/testfixtures/internal/GlobalTestServices.java > R subprojects/core/src/main/groovy/org/gradle/util/DirectInstantiator.java > M subprojects/core/src/main/groovy/org/gradle/util/ServiceLocator.java > M subprojects/core/src/main/resources/org/gradle/profile/ProfileTemplate.html > M > subprojects/core/src/test/groovy/org/gradle/api/internal/AbstractClassGeneratorTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/AbstractNamedDomainObjectContainerTest.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/AsmBackedClassGeneratorTest.java > A > subprojects/core/src/test/groovy/org/gradle/api/internal/ClassGeneratorBackedInstantiatorTest.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/DefaultNamedDomainObjectSetTest.java > A > subprojects/core/src/test/groovy/org/gradle/api/internal/DirectInstantiatorTest.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/GroovySourceGenerationBackedClassGeneratorTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/NestedConfigureAutoCreateNamedDomainObjectContainerSpec.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/dsl/DefaultConfigurationHandlerTest.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/dsl/DefaultRepositoryHandlerTest.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/dsl/dependencies/DefaultClientModuleFactoryTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/dsl/dependencies/DefaultProjectDependencyFactoryTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/dsl/dependencies/ModuleDependencyFactoryTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/artifacts/dsl/dependencies/SelfResolvingDependencyFactoryTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/project/DefaultProjectTest.groovy > M > subprojects/core/src/test/groovy/org/gradle/api/internal/project/GlobalServicesRegistryTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/project/ProjectInternalServiceRegistryTest.java > M > subprojects/core/src/test/groovy/org/gradle/api/internal/project/TopLevelBuildServiceRegistryTest.java > A subprojects/core/src/test/groovy/org/gradle/profile/BuildProfileTest.groovy > A > subprojects/core/src/test/groovy/org/gradle/profile/CompositeOperationTest.groovy > R > subprojects/core/src/test/groovy/org/gradle/util/DirectInstantiatorTest.groovy > M subprojects/docs/src/samples/cpp/dependencies/build.gradle > M > subprojects/integ-test/src/integTest/groovy/org/gradle/integtests/ArtifactDependenciesIntegrationTest.groovy > A > subprojects/integ-test/src/integTest/groovy/org/gradle/integtests/ProfilingIntegrationTest.groovy > M > subprojects/launcher/src/main/java/org/gradle/launcher/CommandLineActionFactory.java > A > subprojects/launcher/src/main/java/org/gradle/launcher/CompletionHandler.java > M subprojects/launcher/src/main/java/org/gradle/launcher/DaemonClient.java > M subprojects/launcher/src/main/java/org/gradle/launcher/DaemonConnector.java > A subprojects/launcher/src/main/java/org/gradle/launcher/DaemonDir.java > M subprojects/launcher/src/main/java/org/gradle/launcher/DaemonMain.java > A subprojects/launcher/src/main/java/org/gradle/launcher/DaemonRegistry.java > A subprojects/launcher/src/main/java/org/gradle/launcher/DaemonStatus.java > M > subprojects/launcher/src/main/java/org/gradle/launcher/IncomingConnectionHandler.java > A > subprojects/launcher/src/main/java/org/gradle/launcher/protocol/BusyException.java > M > subprojects/launcher/src/test/groovy/org/gradle/launcher/DaemonClientTest.groovy > A > subprojects/launcher/src/test/groovy/org/gradle/launcher/DaemonFunctionalTest.groovy > M > subprojects/plugins/src/test/groovy/org/gradle/api/internal/tasks/DefaultSourceSetContainerTest.java > M subprojects/testing/src/main/groovy/org/gradle/api/util/HelperUtil.groovy > M > subprojects/testing/src/main/groovy/org/gradle/integtests/fixtures/MavenRepository.groovy > > Log Message: > ----------- > Merge branch 'master' of github.com:gradle/gradle > > > Compare: https://github.com/gradle/gradle/compare/22dbe97...2059bf4 > > <hr/> > <p> > To unsubscribe from this list please visit: > </p> > <p> > <a > href="http://xircles.codehaus.org/manage_email">http://xircles.codehaus.org/manage_email</a> > -- Adam Murdoch Gradle Co-founder http://www.gradle.org VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting http://www.gradleware.com
