From 88c959beeaa9979dc66ffb65d6ab512f3adfae53 Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Wed, 14 Jun 2017 12:35:16 +0200 Subject: [PATCH] Fixed wrong classifier setting without this change the classifier is picked from the `classifier` field in the extension and not from the parsed string notation fixes #327 --- .../plugin/ContractVerifierExtension.groovy | 1 + .../plugin/GradleContractsDownloader.groovy | 6 +++-- .../GradleContractsDownloaderSpec.groovy | 23 +++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloaderSpec.groovy diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy index ca221c0908..ef827ff0e6 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/ContractVerifierExtension.groovy @@ -151,6 +151,7 @@ class ContractVerifierExtension { closure.call() } + @ToString static class Dependency { String groupId String artifactId diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloader.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloader.groovy index ccb58689b5..ad95cd6715 100644 --- a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloader.groovy +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/main/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloader.groovy @@ -35,7 +35,9 @@ class GradleContractsDownloader { // download contracts, unzip them and pass as output directory if (shouldDownloadContracts(extension)) { this.log.info("For project [${this.project.name}] Download dependency is provided - will download contract jars") + this.log.info("Contract dependency [{}]", extension.contractDependency) StubConfiguration configuration = stubConfiguration(extension.contractDependency) + this.log.info("Got the following contract dependency to download [{}]", configuration) File cachedFolder = downloadedContract.get(configuration) if (cachedFolder) { this.log.info("For project [${this.project.name}] Returning the cached location of the contracts") @@ -69,7 +71,7 @@ class GradleContractsDownloader { .build()) } - private StubConfiguration stubConfiguration(ContractVerifierExtension.Dependency contractDependency) { + @PackageScope StubConfiguration stubConfiguration(ContractVerifierExtension.Dependency contractDependency) { String groupId = contractDependency.groupId String artifactId = contractDependency.artifactId String version = StringUtils.hasText(contractDependency.version) ? @@ -79,7 +81,7 @@ class GradleContractsDownloader { if (StringUtils.hasText(stringNotation)) { StubConfiguration stubConfiguration = new StubConfiguration(stringNotation) return new StubConfiguration(stubConfiguration.groupId, stubConfiguration.artifactId, - stubConfiguration.version, contractDependency.classifier) + stubConfiguration.version, stubConfiguration.classifier) } return new StubConfiguration(groupId, artifactId, version, classifier) } diff --git a/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloaderSpec.groovy b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloaderSpec.groovy new file mode 100644 index 0000000000..cd511c58f3 --- /dev/null +++ b/spring-cloud-contract-tools/spring-cloud-contract-gradle-plugin/src/test/groovy/org/springframework/cloud/contract/verifier/plugin/GradleContractsDownloaderSpec.groovy @@ -0,0 +1,23 @@ +package org.springframework.cloud.contract.verifier.plugin + +import org.springframework.cloud.contract.stubrunner.StubConfiguration +import spock.lang.Specification + +/** + * @author Marcin Grzejszczak + */ +class GradleContractsDownloaderSpec extends Specification { + + def "should parse dependency via string notation"() { + given: + String stringNotation = "com.example:foo:1.0.0:stubs" + def dep = new ContractVerifierExtension.Dependency(stringNotation: stringNotation) + when: + StubConfiguration stubConfig = new GradleContractsDownloader(null, null).stubConfiguration(dep) + then: + stubConfig.groupId == "com.example" + stubConfig.artifactId == "foo" + stubConfig.version == "1.0.0" + stubConfig.classifier == "stubs" + } +}