Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Simplify] Remove unused methods, add ListProperty<> values for `Te… #32

Merged
merged 1 commit into from
Apr 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,13 @@ package org.assertj.generator.gradle
import org.assertj.generator.gradle.internal.tasks.DefaultAssertJGeneratorSourceSet
import org.assertj.generator.gradle.tasks.AssertJGenerationTask
import org.assertj.generator.gradle.tasks.AssertJGeneratorSourceSet
import org.assertj.generator.gradle.tasks.config.AssertJGeneratorOptions
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.artifacts.Configuration
import org.gradle.api.internal.file.SourceDirectorySetFactory
import org.gradle.api.internal.plugins.DslObject
import org.gradle.api.logging.Logging
import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.Convention
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension
Expand All @@ -36,13 +37,13 @@ class AssertJGeneratorGradlePlugin implements Plugin<Project> {

static final ASSERTJ_GEN_CONFIGURATION_NAME = "assertJ"

private final SourceDirectorySetFactory sourceDirectorySetFactory
private final ObjectFactory objects
Nava2 marked this conversation as resolved.
Show resolved Hide resolved

private static final logger = Logging.getLogger(AssertJGeneratorGradlePlugin)

@Inject
AssertJGeneratorGradlePlugin(SourceDirectorySetFactory sourceDirectorySetFactory) {
this.sourceDirectorySetFactory = sourceDirectorySetFactory
AssertJGeneratorGradlePlugin(ObjectFactory objects) {
this.objects = objects
}

@Override
Expand Down Expand Up @@ -72,41 +73,44 @@ class AssertJGeneratorGradlePlugin implements Plugin<Project> {
Convention sourceSetConvention = new DslObject(sourceSet).convention

// Create the assertJ closure within the source set, e.g. main { assertJ { } }
DefaultAssertJGeneratorSourceSet assertJSourceSet = new DefaultAssertJGeneratorSourceSet(
sourceSet, sourceDirectorySetFactory)
def assertJSourceSet = objects.newInstance(
DefaultAssertJGeneratorSourceSet,
objects,
sourceSet,
)
sourceSetConvention.plugins[AssertJGeneratorSourceSet.NAME] = assertJSourceSet
sourceSet.allSource.source(assertJSourceSet.assertJ)

addAndConfigureAssertJGenerate(project, javaPluginExtension, sourceSet, assertJSourceSet)
addAndConfigureAssertJGenerate(project, javaPluginExtension, sourceSet, assertJSourceSet, assertJSourceSet)
}
}
}

// Configures the "generate*" tasks to generate files
private static void addAndConfigureAssertJGenerate(final Project project,
final JavaPluginExtension javaPlugin,
final SourceSet sourceSet,
final AssertJGeneratorSourceSet assertJSS) {
private void addAndConfigureAssertJGenerate(final Project project,
final JavaPluginExtension javaPlugin,
final SourceSet sourceSet,
final AssertJGeneratorOptions assertJOptions,
final AssertJGeneratorSourceSet assertJSS) {
// Use the name via calling sourceSet#getTaskName(String, String)
String generateTaskName = sourceSet.getTaskName('generate', 'assertJ')

logger.info("generationTask: ${generateTaskName}, sourceSet: ${sourceSet}")

// Create a new task for the source set
AssertJGenerationTask generationTask = project.tasks.findByName(generateTaskName) as AssertJGenerationTask

if (!generationTask) {
generationTask = project.tasks.create(generateTaskName, AssertJGenerationTask) {
description = "Generates AssertJ assertions for the ${sourceSet} sources."
generationClasspath = sourceSet.runtimeClasspath // Get the classes used when creating the ClassLoader for
// Generation

source = assertJSS.assertJ // Set up the conventional sources
assertJOptions = assertJSS // Set the config options, too
}

final def compileJavaTask = project.tasks.findByName(sourceSet.compileJavaTaskName)
generationTask.dependsOn compileJavaTask
def generationTask = project.tasks.register(
generateTaskName,
AssertJGenerationTask,
objects,
assertJOptions,
assertJSS,
)
generationTask.configure {
description = "Generates AssertJ assertions for the ${sourceSet} sources."
// Get the classes used when creating the ClassLoader for Generation
generationClasspath.from(sourceSet.runtimeClasspath)

dependsOn sourceSet.compileJavaTaskName
}

project.afterEvaluate {
Expand All @@ -131,7 +135,7 @@ class AssertJGeneratorGradlePlugin implements Plugin<Project> {
// With the test task, we add it to the _test_ source set
testSourceSet.allSource.source(assertJSS.assertJ)

testSourceSet.java.srcDirs += generationTask.outputDir
testSourceSet.java.srcDir(generationTask.map { it.outputDir })
project.tasks.findByName(testSourceSet.compileJavaTaskName).dependsOn generationTask

Test testTask = project.tasks.findByName(testTaskName) as Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,12 @@ import org.assertj.generator.gradle.tasks.config.EntryPointGeneratorOptions
import org.assertj.generator.gradle.tasks.config.Templates
import org.gradle.api.Action
import org.gradle.api.file.SourceDirectorySet
import org.gradle.api.internal.file.SourceDirectorySetFactory
import org.gradle.api.internal.tasks.DefaultSourceSet
import org.gradle.api.model.ObjectFactory
import org.gradle.api.tasks.SourceSet
import org.gradle.util.ConfigureUtil

import javax.inject.Inject

/**
* Simple, default implementation of {@link AssertJGeneratorSourceSet}
*/
Expand All @@ -38,10 +39,14 @@ class DefaultAssertJGeneratorSourceSet extends DefaultAssertJGeneratorOptions im

private final SourceDirectorySet assertJDirectorySet

DefaultAssertJGeneratorSourceSet(SourceSet sourceSet, SourceDirectorySetFactory sourceDirectorySetFactory) {
super()
@Inject
DefaultAssertJGeneratorSourceSet(ObjectFactory objectFactory, SourceSet sourceSet) {
super(objectFactory)
this.name = sourceSet.name
this.assertJDirectorySet = sourceDirectorySetFactory.create("${((DefaultSourceSet) sourceSet).displayName} AssertJ Sources")
this.assertJDirectorySet = objectFactory.sourceDirectorySet(
"$sourceSet AssertJ Sources",
sourceSet.name,
)

// We default to the java directory
assertJ.setSrcDirs(["src/${this.name}/java"])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@ import org.assertj.assertions.generator.AssertionsEntryPointType
import org.assertj.generator.gradle.tasks.config.AssertJGeneratorOptions
import org.assertj.generator.gradle.tasks.config.EntryPointGeneratorOptions
import org.assertj.generator.gradle.tasks.config.Templates
import org.gradle.api.model.ObjectFactory
import org.gradle.api.tasks.SourceSet
import org.gradle.util.ConfigureUtil

import javax.inject.Inject
import java.nio.file.Path
import java.nio.file.Paths

Expand All @@ -39,15 +41,16 @@ class DefaultAssertJGeneratorOptions implements AssertJGeneratorOptions, Seriali

protected String outputDir

DefaultAssertJGeneratorOptions() {
@Inject
DefaultAssertJGeneratorOptions(ObjectFactory objects) {
this.outputDir = "generated-src/${SOURCE_SET_NAME_TAG}-test/java"

skip = true
hierarchical = null
templates = new Templates()
templates = objects.newInstance(Templates)

// default entry points
this._entryPoints = new EntryPointGeneratorOptions()
this._entryPoints = objects.newInstance(EntryPointGeneratorOptions)
this._entryPoints.only(AssertionsEntryPointType.STANDARD)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@ import org.assertj.generator.gradle.internal.tasks.AssertionsGeneratorReport
import org.assertj.generator.gradle.tasks.config.AssertJGeneratorOptions
import org.gradle.api.file.*
import org.gradle.api.logging.Logging
import org.gradle.api.model.ObjectFactory
import org.gradle.api.provider.ListProperty
import org.gradle.api.tasks.*
import org.gradle.api.tasks.incremental.IncrementalTaskInputs

import javax.inject.Inject
import java.nio.file.Path
import java.nio.file.Paths

Expand All @@ -39,20 +42,20 @@ class AssertJGenerationTask extends SourceTask {
private static final logger = Logging.getLogger(AssertJGenerationTask)

@Classpath
FileCollection generationClasspath

@Input
AssertJGeneratorOptions assertJOptions
final ConfigurableFileCollection generationClasspath

@InputFiles
List<File> getTemplateFiles() {
assertJOptions.templates.files
}
@Classpath
final ListProperty<File> templateFiles

@Input
final ListProperty<String> templateStrings

@OutputDirectory
File outputDir

private SourceDirectorySet sourceDirectorySet
private final AssertJGeneratorOptions assertJOptions

void setOutputDir(Path newDir) {
this.outputDir = project.buildDir.toPath()
Expand All @@ -64,6 +67,17 @@ class AssertJGenerationTask extends SourceTask {
setOutputDir(newDir.toPath())
}

@Inject
AssertJGenerationTask(ObjectFactory objects, AssertJGeneratorOptions assertJOptions, AssertJGeneratorSourceSet sourceSet) {
this.assertJOptions = assertJOptions
this.generationClasspath = objects.fileCollection()

this.templateFiles = assertJOptions.templates.templateFiles
this.templateStrings = assertJOptions.templates.templateStrings

source = sourceSet.assertJ
}

@TaskAction
def execute(IncrementalTaskInputs inputs) {
if (assertJOptions.skip) {
Expand All @@ -81,7 +95,7 @@ class AssertJGenerationTask extends SourceTask {
} else if (sourceFiles.contains(change.file)) {
// source file changed
classesToGenerate += change.file
} else if (templateFiles.contains(change.file)) {
} else if (templateFiles.get().contains(change.file)) {
fullRegenRequired = true
}
}
Expand Down
Loading