@Mutate public void createGoogleTestTestBinaries( final BinaryContainer binaries, TestSuiteContainer testSuites, @Path("buildDir") File buildDir, ServiceRegistry serviceRegistry, ITaskFactory taskFactory) { for (final GoogleTestTestSuiteSpec googleTestTestSuite : testSuites.withType(GoogleTestTestSuiteSpec.class)) { for (NativeBinarySpec testedBinary : googleTestTestSuite .getTestedComponent() .getBinaries() .withType(NativeBinarySpec.class)) { if (testedBinary instanceof SharedLibraryBinary) { // TODO:DAZ For now, we only create test suites for static library variants continue; } DefaultGoogleTestTestSuiteBinary testBinary = createTestBinary(serviceRegistry, googleTestTestSuite, testedBinary, taskFactory); configure(testBinary, buildDir); googleTestTestSuite.getBinaries().add(testBinary); binaries.add(testBinary); } } }
@Finalize // Must run after test binaries have been created (currently in CUnit // plugin) void attachTestedBinarySourcesToTestBinaries(BinaryContainer binaries) { for (NativeTestSuiteBinarySpec testSuiteBinary : binaries.withType(NativeTestSuiteBinarySpec.class)) { NativeBinarySpec testedBinary = testSuiteBinary.getTestedBinary(); testSuiteBinary.source(testedBinary.getSource()); for (DependentSourceSet testSource : testSuiteBinary.getSource().withType(DependentSourceSet.class)) { testSource.lib(testedBinary.getSource()); } } }
@Finalize public void createTestTasks(final TaskContainer tasks, BinaryContainer binaries) { for (NativeTestSuiteBinarySpec testBinary : binaries.withType(NativeTestSuiteBinarySpec.class)) { NativeBinarySpecInternal binary = (NativeBinarySpecInternal) testBinary; final BinaryNamingScheme namingScheme = binary.getNamingScheme(); RunTestExecutable runTask = tasks.create(namingScheme.getTaskName("run"), RunTestExecutable.class); final Project project = runTask.getProject(); runTask.setDescription(String.format("Runs the %s", binary)); final InstallExecutable installTask = binary.getTasks().withType(InstallExecutable.class).iterator().next(); runTask.getInputs().files(installTask.getOutputs().getFiles()); runTask.setExecutable(installTask.getRunScript().getPath()); runTask.setOutputDir( new File( project.getBuildDir(), "/test-results/" + namingScheme.getOutputDirectoryBase())); testBinary.getTasks().add(runTask); } }