Removed any deprecation issues from Gradle;fixes gh-1290
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package org.springframework.cloud.contract.verifier.plugin
|
||||
|
||||
import groovy.transform.CompileStatic
|
||||
import groovy.transform.builder.Builder
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.GradleException
|
||||
import org.gradle.api.file.Directory
|
||||
@@ -50,46 +51,136 @@ class GenerateServerTestsTask extends DefaultTask {
|
||||
@Nested
|
||||
Config config
|
||||
|
||||
@CompileStatic
|
||||
@Builder
|
||||
static class Config {
|
||||
|
||||
final Provider<Directory> contractsDslDir
|
||||
final Provider<String> nameSuffixForTests
|
||||
final Provider<String> basePackageForTests
|
||||
final Provider<String> baseClassForTests
|
||||
final Provider<String> packageWithBaseClasses
|
||||
final ListProperty<String> excludedFiles
|
||||
final ListProperty<String> ignoredFiles
|
||||
final ListProperty<String> includedFiles
|
||||
final ListProperty<String> imports
|
||||
final ListProperty<String> staticImports
|
||||
final Provider<TestMode> testMode
|
||||
final Provider<TestFramework> testFramework
|
||||
final MapProperty<String, String> baseClassMappings
|
||||
final Provider<Boolean> assertJsonSize
|
||||
final Provider<Boolean> failOnInProgress
|
||||
final DirectoryProperty generatedTestSourcesDir
|
||||
final DirectoryProperty generatedTestResourcesDir
|
||||
|
||||
Config(Provider<Directory> contractsDslDir, Provider<String> nameSuffixForTests, Provider<String> basePackageForTests, Provider<String> baseClassForTests, Provider<String> packageWithBaseClasses, ListProperty<String> excludedFiles, ListProperty<String> ignoredFiles, ListProperty<String> includedFiles, ListProperty<String> imports, ListProperty<String> staticImports, Provider<TestMode> testMode, Provider<TestFramework> testFramework, MapProperty<String, String> baseClassMappings, Provider<Boolean> assertJsonSize, Provider<Boolean> failOnInProgress, DirectoryProperty generatedTestSourcesDir, DirectoryProperty generatedTestResourcesDir) {
|
||||
this.contractsDslDir = contractsDslDir
|
||||
this.nameSuffixForTests = nameSuffixForTests
|
||||
this.basePackageForTests = basePackageForTests
|
||||
this.baseClassForTests = baseClassForTests
|
||||
this.packageWithBaseClasses = packageWithBaseClasses
|
||||
this.excludedFiles = excludedFiles
|
||||
this.ignoredFiles = ignoredFiles
|
||||
this.includedFiles = includedFiles
|
||||
this.imports = imports
|
||||
this.staticImports = staticImports
|
||||
this.testMode = testMode
|
||||
this.testFramework = testFramework
|
||||
this.baseClassMappings = baseClassMappings
|
||||
this.assertJsonSize = assertJsonSize
|
||||
this.failOnInProgress = failOnInProgress
|
||||
this.generatedTestSourcesDir = generatedTestSourcesDir
|
||||
this.generatedTestResourcesDir = generatedTestResourcesDir
|
||||
}
|
||||
|
||||
@InputDirectory
|
||||
Provider<Directory> contractsDslDir
|
||||
Provider<Directory> getContractsDslDir() {
|
||||
return contractsDslDir
|
||||
}
|
||||
|
||||
@Input
|
||||
@Optional
|
||||
Provider<String> nameSuffixForTests
|
||||
Provider<String> getNameSuffixForTests() {
|
||||
return nameSuffixForTests
|
||||
}
|
||||
|
||||
@Input
|
||||
@Optional
|
||||
Provider<String> basePackageForTests
|
||||
Provider<String> getBasePackageForTests() {
|
||||
return basePackageForTests
|
||||
}
|
||||
|
||||
@Input
|
||||
@Optional
|
||||
Provider<String> baseClassForTests
|
||||
Provider<String> getBaseClassForTests() {
|
||||
return baseClassForTests
|
||||
}
|
||||
|
||||
@Input
|
||||
@Optional
|
||||
Provider<String> packageWithBaseClasses
|
||||
Provider<String> getPackageWithBaseClasses() {
|
||||
return packageWithBaseClasses
|
||||
}
|
||||
|
||||
@Input
|
||||
ListProperty<String> excludedFiles
|
||||
ListProperty<String> getExcludedFiles() {
|
||||
return excludedFiles
|
||||
}
|
||||
|
||||
@Input
|
||||
ListProperty<String> ignoredFiles
|
||||
ListProperty<String> getIgnoredFiles() {
|
||||
return ignoredFiles
|
||||
}
|
||||
|
||||
@Input
|
||||
ListProperty<String> includedFiles
|
||||
ListProperty<String> getIncludedFiles() {
|
||||
return includedFiles
|
||||
}
|
||||
|
||||
@Input
|
||||
ListProperty<String> imports
|
||||
ListProperty<String> getImports() {
|
||||
return imports
|
||||
}
|
||||
|
||||
@Input
|
||||
ListProperty<String> staticImports
|
||||
ListProperty<String> getStaticImports() {
|
||||
return staticImports
|
||||
}
|
||||
|
||||
@Input
|
||||
Provider<TestMode> testMode
|
||||
Provider<TestMode> getTestMode() {
|
||||
return testMode
|
||||
}
|
||||
|
||||
@Input
|
||||
Provider<TestFramework> testFramework
|
||||
Provider<TestFramework> getTestFramework() {
|
||||
return testFramework
|
||||
}
|
||||
|
||||
@Input
|
||||
MapProperty<String, String> baseClassMappings
|
||||
MapProperty<String, String> getBaseClassMappings() {
|
||||
return baseClassMappings
|
||||
}
|
||||
|
||||
@Input
|
||||
Provider<Boolean> assertJsonSize
|
||||
Provider<Boolean> getAssertJsonSize() {
|
||||
return assertJsonSize
|
||||
}
|
||||
|
||||
@Input
|
||||
Provider<Boolean> failOnInProgress
|
||||
Provider<Boolean> getFailOnInProgress() {
|
||||
return failOnInProgress
|
||||
}
|
||||
|
||||
@OutputDirectory
|
||||
DirectoryProperty generatedTestSourcesDir
|
||||
DirectoryProperty getGeneratedTestSourcesDir() {
|
||||
return generatedTestSourcesDir
|
||||
}
|
||||
|
||||
@OutputDirectory
|
||||
DirectoryProperty generatedTestResourcesDir
|
||||
DirectoryProperty getGeneratedTestResourcesDir() {
|
||||
return generatedTestResourcesDir
|
||||
}
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
@@ -139,24 +230,22 @@ class GenerateServerTestsTask extends DefaultTask {
|
||||
|
||||
static Config fromExtension(ContractVerifierExtension extension, TaskProvider<ContractsCopyTask> copyContractsTask) {
|
||||
return new Config(
|
||||
contractsDslDir: copyContractsTask.flatMap { it.config.copiedContractsFolder },
|
||||
nameSuffixForTests: extension.nameSuffixForTests,
|
||||
basePackageForTests: extension.basePackageForTests,
|
||||
baseClassForTests: extension.baseClassForTests,
|
||||
packageWithBaseClasses: extension.packageWithBaseClasses,
|
||||
excludedFiles: extension.excludedFiles,
|
||||
ignoredFiles: extension.ignoredFiles,
|
||||
includedFiles: extension.includedFiles,
|
||||
imports: extension.imports,
|
||||
staticImports: extension.staticImports,
|
||||
testMode: extension.testMode,
|
||||
testFramework: extension.testFramework,
|
||||
baseClassMappings: extension.baseClassMappings.getBaseClassMappings(),
|
||||
assertJsonSize: extension.assertJsonSize,
|
||||
failOnInProgress: extension.failOnInProgress,
|
||||
|
||||
generatedTestSourcesDir: extension.generatedTestSourcesDir,
|
||||
generatedTestResourcesDir: extension.generatedTestResourcesDir,
|
||||
)
|
||||
copyContractsTask.flatMap { it.config.copiedContractsFolder },
|
||||
extension.nameSuffixForTests,
|
||||
extension.basePackageForTests,
|
||||
extension.baseClassForTests,
|
||||
extension.packageWithBaseClasses,
|
||||
extension.excludedFiles,
|
||||
extension.ignoredFiles,
|
||||
extension.includedFiles,
|
||||
extension.imports,
|
||||
extension.staticImports,
|
||||
extension.testMode,
|
||||
extension.testFramework,
|
||||
extension.baseClassMappings.getBaseClassMappings(),
|
||||
extension.assertJsonSize,
|
||||
extension.failOnInProgress,
|
||||
extension.generatedTestSourcesDir,
|
||||
extension.generatedTestResourcesDir)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,10 @@ import org.gradle.api.file.DirectoryProperty
|
||||
import org.gradle.api.model.ObjectFactory
|
||||
import org.gradle.api.provider.MapProperty
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.Input
|
||||
import org.gradle.api.tasks.Nested
|
||||
import org.gradle.api.tasks.OutputDirectory
|
||||
import org.gradle.api.tasks.TaskAction
|
||||
import org.springframework.cloud.contract.stubrunner.ContractProjectUpdater
|
||||
import org.springframework.cloud.contract.stubrunner.ScmStubDownloaderBuilder
|
||||
@@ -42,90 +46,53 @@ import org.springframework.cloud.contract.stubrunner.spring.StubRunnerProperties
|
||||
class PublishStubsToScmTask extends DefaultTask {
|
||||
|
||||
static final String TASK_NAME = 'publishStubsToScm'
|
||||
@Nested
|
||||
Config config
|
||||
private Closure customizationClosure = Closure.IDENTITY
|
||||
|
||||
@CompileStatic
|
||||
static class Config {
|
||||
private ObjectFactory objects
|
||||
ContractVerifierExtension.ContractRepository contractRepository
|
||||
Property<StubRunnerProperties.StubsMode> contractsMode
|
||||
Property<Boolean> deleteStubsAfterTest
|
||||
Property<Boolean> failOnNoContracts
|
||||
MapProperty<String, String> contractsProperties
|
||||
DirectoryProperty stubsOutputDir
|
||||
@Input
|
||||
final Property<ContractVerifierExtension.ContractRepository> contractRepository
|
||||
@Input
|
||||
final Property<StubRunnerProperties.StubsMode> contractsMode
|
||||
@Input
|
||||
final Property<Boolean> deleteStubsAfterTest
|
||||
@Input
|
||||
final Property<Boolean> failOnNoContracts
|
||||
@Input
|
||||
final MapProperty<String, String> contractsProperties
|
||||
@OutputDirectory
|
||||
final DirectoryProperty stubsOutputDir
|
||||
|
||||
void setContractsMode(Property<StubRunnerProperties.StubsMode> contractsMode) {
|
||||
Config(ObjectFactory objects, ContractVerifierExtension extension) {
|
||||
this.contractRepository = objects.property(ContractVerifierExtension.ContractRepository)
|
||||
this.contractRepository.set(extension.contractRepository);
|
||||
this.contractsMode = objects.property(StubRunnerProperties.StubsMode)
|
||||
this.contractsMode.set(extension.contractsMode);
|
||||
this.deleteStubsAfterTest = objects.property(Boolean)
|
||||
this.deleteStubsAfterTest.set(extension.failOnNoContracts)
|
||||
this.failOnNoContracts = objects.property(Boolean)
|
||||
this.failOnNoContracts.set(extension.deleteStubsAfterTest)
|
||||
this.contractsProperties = objects.mapProperty(String, String)
|
||||
this.contractsProperties.set(extension.contractsProperties)
|
||||
this.stubsOutputDir = objects.directoryProperty()
|
||||
this.stubsOutputDir.set(extension.stubsOutputDir)
|
||||
}
|
||||
|
||||
Config(Property<ContractVerifierExtension.ContractRepository> contractRepository, Property<StubRunnerProperties.StubsMode> contractsMode, Property<Boolean> deleteStubsAfterTest, Property<Boolean> failOnNoContracts, MapProperty<String, String> contractsProperties, DirectoryProperty stubsOutputDir) {
|
||||
this.contractRepository = contractRepository
|
||||
this.contractsMode = contractsMode
|
||||
}
|
||||
|
||||
void setContractsMode(String contractsMode) {
|
||||
if (contractsMode) {
|
||||
this.contractsMode = objects.property(StubRunnerProperties.StubsMode).convention(StubRunnerProperties.StubsMode.valueOf(contractsMode.toUpperCase()))
|
||||
}
|
||||
}
|
||||
|
||||
void setDeleteStubsAfterTest(Property<Boolean> deleteStubsAfterTest) {
|
||||
this.deleteStubsAfterTest = deleteStubsAfterTest
|
||||
}
|
||||
|
||||
void setDeleteStubsAfterTest(Boolean deleteStubsAfterTest) {
|
||||
if (deleteStubsAfterTest != null) {
|
||||
this.deleteStubsAfterTest = objects.property(Boolean).convention(deleteStubsAfterTest)
|
||||
}
|
||||
}
|
||||
|
||||
void setFailOnNoContracts(Property<Boolean> failOnNoContracts) {
|
||||
this.failOnNoContracts = failOnNoContracts
|
||||
}
|
||||
|
||||
void setFailOnNoContracts(Boolean failOnNoContracts) {
|
||||
if (failOnNoContracts != null) {
|
||||
this.failOnNoContracts = objects.property(Boolean).convention(failOnNoContracts)
|
||||
}
|
||||
}
|
||||
|
||||
void setContractsProperties(MapProperty<String, String> contractsProperties) {
|
||||
this.contractsProperties = contractsProperties
|
||||
}
|
||||
|
||||
void setContractsProperties(Map<String, String> contractsProperties) {
|
||||
if (contractsProperties) {
|
||||
this.contractsProperties = objects.mapProperty(String, String).convention(contractsProperties)
|
||||
}
|
||||
}
|
||||
|
||||
void setStubsOutputDir(DirectoryProperty stubsOutputDir) {
|
||||
this.stubsOutputDir = stubsOutputDir
|
||||
}
|
||||
|
||||
void setStubsOutputDir(String stubsOutputDir) {
|
||||
if (stubsOutputDir) {
|
||||
this.stubsOutputDir = objects.directoryProperty()
|
||||
this.stubsOutputDir.set(new File(stubsOutputDir))
|
||||
}
|
||||
}
|
||||
|
||||
void setStubsOutputDir(GString stubsOutputDir) {
|
||||
if (stubsOutputDir) {
|
||||
this.stubsOutputDir = objects.directoryProperty()
|
||||
this.stubsOutputDir.set(new File(stubsOutputDir.toString()))
|
||||
}
|
||||
}
|
||||
|
||||
void contractRepository(@DelegatesTo(ContractVerifierExtension.ContractRepository) Closure closure) {
|
||||
closure.delegate = contractRepository
|
||||
closure.call()
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
void contractDependency(Closure closure) {
|
||||
// Here only to preserve backward compatibility. Was never used here.
|
||||
}
|
||||
|
||||
@PackageScope
|
||||
void setObjects(ObjectFactory objects) {
|
||||
this.objects = objects
|
||||
}
|
||||
}
|
||||
|
||||
@TaskAction
|
||||
@@ -137,25 +104,17 @@ class PublishStubsToScmTask extends DefaultTask {
|
||||
String projectName = project.group.toString() + ":" + project.name.toString() + ":" + this.project.version.toString()
|
||||
project.logger.info("Pushing Stubs to SCM for project [" + projectName + "]")
|
||||
StubRunnerOptions stubRunnerOptions = StubRunnerOptionsFactory.createStubRunnerOptions(
|
||||
config.contractRepository, config.contractsMode.getOrNull(), config.deleteStubsAfterTest.get(),
|
||||
config.contractRepository.get(), config.contractsMode.getOrNull(), config.deleteStubsAfterTest.get(),
|
||||
config.contractsProperties.get(), config.failOnNoContracts.get())
|
||||
new ContractProjectUpdater(stubRunnerOptions).updateContractProject(projectName, config.stubsOutputDir.get().asFile.toPath())
|
||||
}
|
||||
|
||||
static Config fromExtension(ContractVerifierExtension extension, ObjectFactory objects) {
|
||||
return new Config(
|
||||
contractRepository: extension.contractRepository,
|
||||
contractsMode: extension.contractsMode,
|
||||
failOnNoContracts: extension.failOnNoContracts,
|
||||
deleteStubsAfterTest: extension.deleteStubsAfterTest,
|
||||
contractsProperties: extension.contractsProperties,
|
||||
stubsOutputDir: extension.stubsOutputDir,
|
||||
objects: objects
|
||||
)
|
||||
return new Config(objects, extension)
|
||||
}
|
||||
|
||||
private boolean shouldRun() {
|
||||
String contractRepoUrl = config.contractRepository.repositoryUrl.getOrNull() ?: ""
|
||||
String contractRepoUrl = config.contractRepository.get().repositoryUrl.getOrNull() ?: ""
|
||||
if (!contractRepoUrl || !ScmStubDownloaderBuilder.isProtocolAccepted(contractRepoUrl)) {
|
||||
project.logger.warn("Skipping pushing stubs to scm since your contracts repository URL [${contractRepoUrl}] doesn't match any of the accepted protocols for SCM stub downloader")
|
||||
return false
|
||||
@@ -172,7 +131,7 @@ class PublishStubsToScmTask extends DefaultTask {
|
||||
|
||||
private void applyConfigCustomizations() {
|
||||
// Needs to be copied, otherwise properties won't be updated:
|
||||
config.contractRepository = copy(config.contractRepository, project.objects)
|
||||
config.contractRepository.set(copy(config.contractRepository.get(), project.objects))
|
||||
customizationClosure.delegate = config
|
||||
customizationClosure.call()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user