From e852141ce4f7e16cb95c3c57598556c0f6408e62 Mon Sep 17 00:00:00 2001 From: Sylvain Guillope Date: Mon, 1 Feb 2021 23:43:20 +1100 Subject: [PATCH] Select value of an `anyOf()` property at random (#1599) The current implementation of `anyOf()` always only selects the first value when generating a property. It means that other possible enum values are always ignored when producing a value for the property. This changes the behaviour so that the value is picked at random from any of the provided values. It could be considered a breaking changes because of the change of behaviour although it shouldn't be from the contract perspective. Fixes #1424 Co-authored-by: Sylvain Guillope --- .../cloud/contract/spec/internal/PatternValueDslProperty.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/spring-cloud-contract-spec-java/src/main/java/org/springframework/cloud/contract/spec/internal/PatternValueDslProperty.java b/specs/spring-cloud-contract-spec-java/src/main/java/org/springframework/cloud/contract/spec/internal/PatternValueDslProperty.java index 17341ce87b..7f102ad6c7 100644 --- a/specs/spring-cloud-contract-spec-java/src/main/java/org/springframework/cloud/contract/spec/internal/PatternValueDslProperty.java +++ b/specs/spring-cloud-contract-spec-java/src/main/java/org/springframework/cloud/contract/spec/internal/PatternValueDslProperty.java @@ -168,7 +168,7 @@ abstract class PatternValueDslProperty implements RegexCr @Override public T anyOf(String... values) { - return createAndValidateProperty(RegexPatterns.anyOf(values), values[0]); + return createAndValidateProperty(RegexPatterns.anyOf(values), values[this.random.nextInt(values.length)]); } }