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 348dd1e9..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 @@ -100,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)) { @@ -191,7 +192,9 @@ 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() 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 1dc4e17d..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 @@ -18,6 +18,34 @@ class ReckonerTest extends Specification { 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(