diff --git a/build.gradle b/build.gradle index 22bbf8fd..555b39e8 100644 --- a/build.gradle +++ b/build.gradle @@ -2,41 +2,11 @@ plugins { id 'org.ajoberstar.defaults' version '0.12.0' } +apply from: 'gradle/locking.gradle' +apply from: 'gradle/bintray.gradle' + allprojects { group = 'org.ajoberstar.reckon' - - dependencyLocking { - lockAllConfigurations() - } - - task lock { - doFirst { - assert gradle.startParameter.writeDependencyLocks - } - doLast { - configurations.each { - if (it.canBeResolved) { - it.resolve() - } - } - } - } - - plugins.withId('maven-publish') { - publishing { - repositories { - maven { - name = 'bintray' - url = 'https://api.bintray.com/maven/ajoberstar/maven/reckon/;publish=1' - credentials { - username = System.env['BINTRAY_USER'] - password = System.env['BINTRAY_KEY'] - } - } - } - } - } - } ext.grgitVersion = '[2.0.0,)' diff --git a/gradle/bintray.gradle b/gradle/bintray.gradle new file mode 100644 index 00000000..cee437a4 --- /dev/null +++ b/gradle/bintray.gradle @@ -0,0 +1,16 @@ +allprojects { + plugins.withId('maven-publish') { + publishing { + repositories { + maven { + name = 'bintray' + url = 'https://api.bintray.com/maven/ajoberstar/maven/reckon/;publish=1' + credentials { + username = System.env['BINTRAY_USER'] + password = System.env['BINTRAY_KEY'] + } + } + } + } + } +} diff --git a/gradle/dependency-locks/archives.lockfile b/gradle/dependency-locks/archives.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/gradle/dependency-locks/archives.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/gradle/dependency-locks/default.lockfile b/gradle/dependency-locks/default.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/gradle/dependency-locks/default.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/gradle/locking.gradle b/gradle/locking.gradle new file mode 100644 index 00000000..8603d6a3 --- /dev/null +++ b/gradle/locking.gradle @@ -0,0 +1,20 @@ +allprojects { + plugins.withId('java-base') { + sourceSets.all { sourceSet -> + configurations[sourceSet.compileClasspathConfigurationName].resolutionStrategy.activateDependencyLocking() + configurations[sourceSet.runtimeClasspathConfigurationName].resolutionStrategy.activateDependencyLocking() + } + + task lock { + doFirst { + assert gradle.startParameter.writeDependencyLocks + } + doLast { + sourceSets.all { sourceSet -> + configurations[sourceSet.compileClasspathConfigurationName].resolve() + configurations[sourceSet.runtimeClasspathConfigurationName].resolve() + } + } + } + } +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 91ca28c8..758de960 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 675b4215..34aecc1d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.8-rc-3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-rc-1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/reckon-core/gradle/dependency-locks/annotationProcessor.lockfile b/reckon-core/gradle/dependency-locks/annotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/annotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/archives.lockfile b/reckon-core/gradle/dependency-locks/archives.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/archives.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/compile.lockfile b/reckon-core/gradle/dependency-locks/compile.lockfile deleted file mode 100644 index ba124476..00000000 --- a/reckon-core/gradle/dependency-locks/compile.lockfile +++ /dev/null @@ -1,14 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-core/gradle/dependency-locks/compileOnly.lockfile b/reckon-core/gradle/dependency-locks/compileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/compileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/default.lockfile b/reckon-core/gradle/dependency-locks/default.lockfile deleted file mode 100644 index ba124476..00000000 --- a/reckon-core/gradle/dependency-locks/default.lockfile +++ /dev/null @@ -1,14 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-core/gradle/dependency-locks/runtime.lockfile b/reckon-core/gradle/dependency-locks/runtime.lockfile deleted file mode 100644 index ba124476..00000000 --- a/reckon-core/gradle/dependency-locks/runtime.lockfile +++ /dev/null @@ -1,14 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile b/reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/testAnnotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/testCompile.lockfile b/reckon-core/gradle/dependency-locks/testCompile.lockfile deleted file mode 100644 index a6b1ba47..00000000 --- a/reckon-core/gradle/dependency-locks/testCompile.lockfile +++ /dev/null @@ -1,28 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.codehaus.groovy:groovy-all:2.4.15 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.25 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile b/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile index a6b1ba47..5277ba6b 100644 --- a/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/reckon-core/gradle/dependency-locks/testCompileClasspath.lockfile @@ -16,7 +16,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-core/gradle/dependency-locks/testCompileOnly.lockfile b/reckon-core/gradle/dependency-locks/testCompileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-core/gradle/dependency-locks/testCompileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-core/gradle/dependency-locks/testRuntime.lockfile b/reckon-core/gradle/dependency-locks/testRuntime.lockfile deleted file mode 100644 index bca5d11b..00000000 --- a/reckon-core/gradle/dependency-locks/testRuntime.lockfile +++ /dev/null @@ -1,29 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.codehaus.groovy:groovy-all:2.4.15 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.25 -org.slf4j:slf4j-simple:1.7.25 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile b/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile index bca5d11b..f09b2657 100644 --- a/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/reckon-core/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -16,7 +16,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java index 7956e355..10048f19 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/GitInventorySupplier.java @@ -20,6 +20,7 @@ import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Constants; import org.eclipse.jgit.lib.ObjectId; +import org.eclipse.jgit.lib.ObjectReader; import org.eclipse.jgit.lib.Ref; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.revwalk.RevCommit; @@ -55,7 +56,7 @@ public GitInventorySupplier(Repository repo, Function> @Override public VcsInventory getInventory() { // share this walk throughout to benefit from its caching - try (RevWalk walk = new RevWalk(repo)) { + try (ObjectReader reader = repo.newObjectReader(); RevWalk walk = new RevWalk(reader)) { // saves on some performance as we don't really need the commit bodys walk.setRetainBody(false); @@ -94,7 +95,7 @@ public VcsInventory getInventory() { Set claimedVersions = taggedVersions.stream().map(TaggedVersion::getVersion).collect(Collectors.toSet()); return new VcsInventory( - headObjectId.getName(), + reader.abbreviate(headObjectId).name(), isClean(), currentVersion, baseVersion.getVersion(), diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java index ec4abe7c..129f34ab 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Reckoner.java @@ -1,5 +1,8 @@ package org.ajoberstar.reckon.core; +import java.time.Clock; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Collections; import java.util.Objects; @@ -19,13 +22,17 @@ public final class Reckoner { public static final String FINAL_STAGE = "final"; public static final String SNAPSHOT_STAGE = "snapshot"; + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssX"); + + private final Clock clock; private final VcsInventorySupplier inventorySupplier; private final Function> scopeCalc; private final BiFunction> stageCalc; private final Set stages; private final String defaultStage; - private Reckoner(VcsInventorySupplier inventorySupplier, Function> scopeCalc, BiFunction> stageCalc, Set stages, String defaultStage) { + private Reckoner(Clock clock, VcsInventorySupplier inventorySupplier, Function> scopeCalc, BiFunction> stageCalc, Set stages, String defaultStage) { + this.clock = clock; this.inventorySupplier = inventorySupplier; this.scopeCalc = scopeCalc; this.stageCalc = stageCalc; @@ -43,6 +50,10 @@ public Version reckon() { Version targetNormal = reckonNormal(inventory); Version reckoned = reckonTargetVersion(inventory, targetNormal); + if (reckoned.isSignificant() && !inventory.isClean()) { + throw new IllegalStateException("Cannot release a final or significant stage without a clean repo."); + } + if (inventory.getClaimedVersions().contains(reckoned) && !inventory.getCurrentVersion().map(reckoned::equals).orElse(false)) { throw new IllegalStateException("Reckoned version " + reckoned + " has already been released."); } @@ -89,6 +100,7 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal String stage = stageCalc.apply(inventory, targetNormal) .map(String::trim) .filter(s -> !s.isEmpty()) + .map(String::toLowerCase) .orElse(null); if (stage != null && !stages.contains(stage)) { @@ -96,10 +108,6 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal throw new IllegalArgumentException(message); } - if (stage != null && !inventory.isClean()) { - throw new IllegalStateException("Cannot release a final or significant stage without a clean repo."); - } - if (FINAL_STAGE.equals(stage)) { return targetNormal; } @@ -118,8 +126,8 @@ private Version reckonTargetVersion(VcsInventory inventory, Version targetNormal return Version.valueOf(String.format("%s-%s", targetBase.getNormal(), "SNAPSHOT")); } else if (stage == null) { String buildMetadata = inventory.getCommitId() - .map(sha -> inventory.isClean() ? sha : sha + ".uncommitted") - .orElse("uncommitted"); + .filter(sha -> inventory.isClean()) + .orElseGet(() -> DATE_FORMAT.format(ZonedDateTime.now(clock))); return Version.valueOf(String.format("%s-%s.%d.%d+%s", targetBase.getNormal(), baseStageName, baseStageNum, inventory.getCommitsSinceBase(), buildMetadata)); } else if (stage.equals(baseStageName)) { @@ -134,12 +142,18 @@ public static Builder builder() { } public static final class Builder { + private Clock clock; private VcsInventorySupplier inventorySupplier; private Function> scopeCalc; private BiFunction> stageCalc; private Set stages; private String defaultStage; + Builder clock(Clock clock) { + this.clock = clock; + return this; + } + Builder vcs(VcsInventorySupplier inventorySupplier) { this.inventorySupplier = inventorySupplier; return this; @@ -178,12 +192,19 @@ public Builder scopeCalc(Function> scopeCalc) { * @return this builder */ public Builder stages(String... stages) { - this.stages = Arrays.stream(stages).collect(Collectors.toSet()); + this.stages = Arrays.stream(stages) + .map(String::toLowerCase) + .collect(Collectors.toSet()); this.defaultStage = this.stages.stream() .filter(name -> !FINAL_STAGE.equals(name)) .sorted() .findFirst() .orElseThrow(() -> new IllegalArgumentException("No non-final stages provided.")); + + if (this.stages.contains(SNAPSHOT_STAGE)) { + throw new IllegalArgumentException("Snapshots are not supported in stage mode."); + } + return this; } @@ -216,11 +237,12 @@ public Builder stageCalc(BiFunction> sta * @return the reckoner */ public Reckoner build() { + Clock clock = Optional.ofNullable(this.clock).orElseGet(Clock::systemUTC); Objects.requireNonNull(inventorySupplier, "Must provide a vcs."); Objects.requireNonNull(scopeCalc, "Must provide a scope supplier."); Objects.requireNonNull(stages, "Must provide set of stages."); Objects.requireNonNull(stageCalc, "Must provide a stage supplier."); - return new Reckoner(inventorySupplier, scopeCalc, stageCalc, stages, defaultStage); + return new Reckoner(clock, inventorySupplier, scopeCalc, stageCalc, stages, defaultStage); } } } diff --git a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java index 4f5c5ddd..674c13e0 100644 --- a/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java +++ b/reckon-core/src/main/java/org/ajoberstar/reckon/core/Version.java @@ -33,7 +33,7 @@ private Version(com.github.zafarkhaja.semver.Version version) { /** * This is intentionally package private. - * + * * @return the internal JSemver version */ com.github.zafarkhaja.semver.Version getVersion() { @@ -75,7 +75,7 @@ public boolean isSignificant() { /** * Increments this version using the given scope to get a new normal version. - * + * * @param scope the scope to increment the version by * @return incremented version, with only the normal component */ @@ -155,18 +155,23 @@ private static Stage valueOf(com.github.zafarkhaja.semver.Version version) { /** * Gets the version represented by the given string. If the version is not SemVer compliant, an * exception will be thrown. Use {@code parse} if you don't trust that your input is valid. - * + * * @param versionString version to parse * @return the version */ public static Version valueOf(String versionString) { - return new Version(com.github.zafarkhaja.semver.Version.valueOf(versionString)); + try { + return new Version(com.github.zafarkhaja.semver.Version.valueOf(versionString)); + } catch (IllegalArgumentException | ParseException e) { + String message = String.format("Invalid version \"%s\": %s", versionString, e.getMessage()); + throw new IllegalArgumentException(message, e); + } } /** * Gets the version represented by the given string, if it's SemVer compliant. If not, an empty * Optional will be returned. - * + * * @param versionString version to parse * @return the version or an empty optional, if the string wasn't SemVer compliant */ diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy index 6a6a26b0..af7de832 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/GitInventorySupplierTest.groovy @@ -15,6 +15,11 @@ class GitInventorySupplierTest extends Specification { GitInventorySupplier supplier + def 'commit id is abbreviated, not full'() { + expect: + supplier.getInventory().commitId == Optional.of(grgit.head().abbreviatedId) + } + def 'if HEAD has no tagged versions, current version is empty'() { given: checkout('head-untagged') diff --git a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy index 27007479..20f4d8db 100644 --- a/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy +++ b/reckon-core/src/test/groovy/org/ajoberstar/reckon/core/ReckonerTest.groovy @@ -1,9 +1,51 @@ package org.ajoberstar.reckon.core +import java.time.Clock; +import java.time.Instant; +import java.time.ZoneId; + import spock.lang.Specification import spock.lang.Unroll class ReckonerTest extends Specification { + private static final Clock CLOCK = Clock.fixed(Instant.ofEpochSecond(1530724706), ZoneId.of('UTC')) + private static final String TIMESTAMP = '20180704T171826Z' + + def 'if snapshot provided to stages builder, throw'() { + when: + Reckoner.builder().stages('snapshot', 'beta', 'final') + then: + thrown(IllegalArgumentException) + } + + @Unroll + def 'stages are lowercased'(String stage) { + given: + VcsInventory inventory = new VcsInventory( + 'abcdef', + true, + null, + Version.valueOf('1.2.3-beta.1'), + Version.valueOf('1.2.2'), + 1, + [Version.valueOf('1.3.0')] as Set, + [Version.valueOf('2.0.0-rc.1')] as Set + ) + when: + Reckoner.builder() + .clock(CLOCK) + .vcs { -> inventory } + .scopeCalc { i -> Optional.empty() } + .stages('beTA', 'miLEStone', 'RC', 'Final') + .stageCalc { i, v -> Optional.ofNullable(stage) } + .build() + .reckon() + then: + notThrown(IllegalArgumentException) + where: + stage << ['BeTa', 'Milestone', 'rc', 'fINal'] + } + def 'if version is claimed, throw'() { given: VcsInventory inventory = new VcsInventory( @@ -84,7 +126,7 @@ class ReckonerTest extends Specification { [Version.valueOf('1.2.2'), Version.valueOf('1.2.3-milestone.1')] as Set ) expect: - reckonStage(inventory, null, null) == '1.2.3-milestone.1.1+abcdef.uncommitted' + reckonStage(inventory, null, null) == "1.2.3-milestone.1.1+${TIMESTAMP}" } def 'if current version is present and normal, repo is dirty, and no input provided, this is not a rebuild'() { @@ -100,7 +142,7 @@ class ReckonerTest extends Specification { [Version.valueOf('1.2.2'), Version.valueOf('1.2.3')] as Set ) expect: - reckonStage(inventory, null, null) == '1.3.0-beta.0.1+abcdef.uncommitted' + reckonStage(inventory, null, null) == "1.3.0-beta.0.1+${TIMESTAMP}" reckonSnapshot(inventory, null, null) == '1.3.0-SNAPSHOT' } @@ -452,7 +494,7 @@ class ReckonerTest extends Specification { [] as Set ) expect: - reckonStage(inventory, null, null) == '1.2.3-milestone.2.5+uncommitted' + reckonStage(inventory, null, null) == "1.2.3-milestone.2.5+${TIMESTAMP}" } @@ -469,7 +511,7 @@ class ReckonerTest extends Specification { [] as Set ) expect: - reckonStage(inventory, null, null) == '1.2.3-milestone.2.5+abcdef.uncommitted' + reckonStage(inventory, null, null) == "1.2.3-milestone.2.5+${TIMESTAMP}" } @Unroll @@ -493,6 +535,22 @@ class ReckonerTest extends Specification { stage << ['rc', 'final'] } + def 'if repo has uncommitted changes, succeed when calculating a snapshot'() { + given: + def inventory = new VcsInventory( + 'abcdef', + false, + null, + Version.valueOf('1.2.2'), + Version.valueOf('1.2.2'), + 5, + [] as Set, + [] as Set + ) + expect: + reckonSnapshot(inventory, null, 'snapshot') == '1.3.0-SNAPSHOT' + } + def 'if stage supplier returns an invalid stage, throw'() { given: def inventory = new VcsInventory( @@ -564,6 +622,7 @@ class ReckonerTest extends Specification { private String reckonStage(inventory, scope, stage) { return Reckoner.builder() + .clock(CLOCK) .vcs { -> inventory } .scopeCalc { i -> Optional.ofNullable(scope) } .stages('beta', 'milestone', 'rc', 'final') @@ -574,6 +633,7 @@ class ReckonerTest extends Specification { private String reckonSnapshot(inventory, scope, stage) { return Reckoner.builder() + .clock(CLOCK) .vcs { -> inventory } .scopeCalc { i -> Optional.ofNullable(scope) } .snapshots() diff --git a/reckon-gradle/.stutter/java8.lock b/reckon-gradle/.stutter/java8.lock index 441e286c..6ede8a3f 100644 --- a/reckon-gradle/.stutter/java8.lock +++ b/reckon-gradle/.stutter/java8.lock @@ -2,4 +2,4 @@ 3.0 3.5.1 4.0 -4.8-rc-3 +4.9-rc-1 diff --git a/reckon-gradle/.stutter/java9.lock b/reckon-gradle/.stutter/java9.lock index 3ce49c30..cf6e4266 100644 --- a/reckon-gradle/.stutter/java9.lock +++ b/reckon-gradle/.stutter/java9.lock @@ -1,3 +1,3 @@ # DO NOT MODIFY: Generated by Stutter plugin. 4.2.1 -4.8-rc-3 +4.9-rc-1 diff --git a/reckon-gradle/build.gradle b/reckon-gradle/build.gradle index f136d87d..5740d560 100644 --- a/reckon-gradle/build.gradle +++ b/reckon-gradle/build.gradle @@ -22,14 +22,14 @@ dependencies { compatTestCompile "org.ajoberstar:grgit:$grgitVersion" // util - compile 'com.google.guava:guava:[21.0,)' - compile 'com.github.zafarkhaja:java-semver:[0.9.0,)' + compile 'com.google.guava:guava:latest.release' + compile 'com.github.zafarkhaja:java-semver:latest.release' // testing compatTestCompile gradleTestKit() compatTestCompile 'org.spockframework:spock-core:1.1-groovy-2.4' compatTestCompile 'org.codehaus.groovy:groovy-all:2.4.15' - compatTestCompile 'junit:junit:4.12' + compatTestCompile 'junit:junit:latest.release' } stutter { diff --git a/reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile b/reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/annotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/archives.lockfile b/reckon-gradle/gradle/dependency-locks/archives.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/archives.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestAnnotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile deleted file mode 100644 index c7b1c4b2..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestCompile.lockfile +++ /dev/null @@ -1,25 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.2 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile index c7b1c4b2..e9ca6ae4 100644 --- a/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/compatTestCompileClasspath.lockfile @@ -15,7 +15,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r diff --git a/reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestCompileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile deleted file mode 100644 index c7b1c4b2..00000000 --- a/reckon-gradle/gradle/dependency-locks/compatTestRuntime.lockfile +++ /dev/null @@ -1,25 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -junit:junit:4.12 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.hamcrest:hamcrest-core:1.3 -org.slf4j:slf4j-api:1.7.2 -org.spockframework:spock-core:1.1-groovy-2.4 diff --git a/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile index c7b1c4b2..e9ca6ae4 100644 --- a/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/compatTestRuntimeClasspath.lockfile @@ -15,7 +15,7 @@ commons-logging:commons-logging:1.2 junit:junit:4.12 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r diff --git a/reckon-gradle/gradle/dependency-locks/compile.lockfile b/reckon-gradle/gradle/dependency-locks/compile.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/compile.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/compileClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/compileOnly.lockfile b/reckon-gradle/gradle/dependency-locks/compileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/compileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/default.lockfile b/reckon-gradle/gradle/dependency-locks/default.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/default.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/runtime.lockfile b/reckon-gradle/gradle/dependency-locks/runtime.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/runtime.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/runtimeClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile b/reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/testAnnotationProcessor.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/testCompile.lockfile b/reckon-gradle/gradle/dependency-locks/testCompile.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/testCompile.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/testCompileClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile b/reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile deleted file mode 100644 index 656c5dbc..00000000 --- a/reckon-gradle/gradle/dependency-locks/testCompileOnly.lockfile +++ /dev/null @@ -1,3 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. diff --git a/reckon-gradle/gradle/dependency-locks/testRuntime.lockfile b/reckon-gradle/gradle/dependency-locks/testRuntime.lockfile deleted file mode 100644 index 97b3b92c..00000000 --- a/reckon-gradle/gradle/dependency-locks/testRuntime.lockfile +++ /dev/null @@ -1,30 +0,0 @@ -# This is a Gradle generated file for dependency locking. -# Manual edits can break the build and are not advised. -# This file is expected to be part of source control. -com.github.zafarkhaja:java-semver:0.9.0 -com.google.code.findbugs:jsr305:3.0.2 -com.google.errorprone:error_prone_annotations:2.1.3 -com.google.guava:guava:25.1-jre -com.google.j2objc:j2objc-annotations:1.1 -com.googlecode.javaewah:JavaEWAH:1.1.6 -com.jcraft:jsch.agentproxy.core:0.0.9 -com.jcraft:jsch.agentproxy.jsch:0.0.9 -com.jcraft:jsch.agentproxy.pageant:0.0.9 -com.jcraft:jsch.agentproxy.sshagent:0.0.9 -com.jcraft:jsch.agentproxy.usocket-jna:0.0.9 -com.jcraft:jsch.agentproxy.usocket-nc:0.0.9 -com.jcraft:jsch:0.1.54 -com.jcraft:jzlib:1.1.1 -commons-codec:commons-codec:1.9 -commons-logging:commons-logging:1.2 -net.java.dev.jna:jna-platform:4.1.0 -net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 -org.apache.commons:commons-lang3:3.7 -org.apache.httpcomponents:httpclient:4.5.2 -org.apache.httpcomponents:httpcore:4.4.4 -org.checkerframework:checker-qual:2.0.0 -org.codehaus.mojo:animal-sniffer-annotations:1.14 -org.eclipse.jgit:org.eclipse.jgit.ui:4.11.0.201803080745-r -org.eclipse.jgit:org.eclipse.jgit:4.11.0.201803080745-r -org.slf4j:slf4j-api:1.7.25 diff --git a/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile b/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile index 97b3b92c..70598fa6 100644 --- a/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile +++ b/reckon-gradle/gradle/dependency-locks/testRuntimeClasspath.lockfile @@ -19,7 +19,7 @@ commons-codec:commons-codec:1.9 commons-logging:commons-logging:1.2 net.java.dev.jna:jna-platform:4.1.0 net.java.dev.jna:jna:4.1.0 -org.ajoberstar:grgit:2.2.1 +org.ajoberstar:grgit:2.3.0 org.apache.commons:commons-lang3:3.7 org.apache.httpcomponents:httpclient:4.5.2 org.apache.httpcomponents:httpcore:4.4.4 diff --git a/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy b/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy index e606a3d1..83123b7a 100644 --- a/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy +++ b/reckon-gradle/src/compatTest/groovy/org/ajoberstar/reckon/gradle/BaseCompatTest.groovy @@ -54,7 +54,8 @@ task printVersion { when: def result = build('printVersion', '-q') then: - result.output.normalize() == 'No git repository found for :. Accessing grgit will cause an NPE.\n0.1.0-alpha.0.0+uncommitted\n' + // version will end with a timestamp, so don't try to validate the whole thing + result.output.normalize().startsWith('No git repository found for :. Accessing grgit will cause an NPE.\n0.1.0-alpha.0.0+') } def 'if no strategies specified, build fails'() { diff --git a/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java b/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java index 3fee0c28..7d6c0355 100644 --- a/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java +++ b/reckon-gradle/src/main/java/org/ajoberstar/reckon/gradle/ReckonPlugin.java @@ -13,8 +13,8 @@ import org.gradle.api.Task; public class ReckonPlugin implements Plugin { - private static final String TAG_TASK = "reckonTagCreate"; - private static final String PUSH_TASK = "reckonTagPush"; + public static final String TAG_TASK = "reckonTagCreate"; + public static final String PUSH_TASK = "reckonTagPush"; @Override public void apply(Project project) {