diff options
author | Arnstein Ressem <aressem@verizonmedia.com> | 2023-06-10 10:26:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-10 10:26:52 +0200 |
commit | e9ccfa72400a8d6d83f64cb1045b6c64cdb88760 (patch) | |
tree | 9b7d5fc7c0dc27469795cebcbe45a16592450573 /config-model | |
parent | 3d16727641d36fcdad5d5850735c61bd82faa10a (diff) | |
parent | 7f13594d6595b81a291018f902c438d3aaea057b (diff) |
Merge pull request #27365 from vespa-engine/hmusum/fix-test
Make error message deterministic by sorting rule names MERGEOK
Diffstat (limited to 'config-model')
2 files changed, 8 insertions, 4 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java b/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java index b184861c102..4a295d49a32 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/container/search/SemanticRuleBuilder.java @@ -12,7 +12,9 @@ import com.yahoo.prelude.semantics.parser.ParseException; import java.io.File; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -60,9 +62,11 @@ public class SemanticRuleBuilder { private void ensureZeroOrOneDefaultRule(SemanticRulesConfig config) { String defaultName = null; for (SemanticRulesConfig.Rulebase ruleBase : config.rulebase()) { - if (defaultName != null && ruleBase.isdefault()) - throw new IllegalArgumentException("Both '" + defaultName + "' and '" + ruleBase.name() + - "' is marked as default rule, there can only be one"); + if (defaultName != null && ruleBase.isdefault()) { + List<String> defaultRules = new ArrayList<>(List.of(defaultName, ruleBase.name())); + defaultRules.sort(String::compareTo); + throw new IllegalArgumentException("Rules " + defaultRules + " are both marked as the default rule, there can only be one"); + } if (ruleBase.isdefault()) defaultName = ruleBase.name(); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java index f0e28f9df09..e20e14f9465 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/SemanticRulesTest.java @@ -60,7 +60,7 @@ public class SemanticRulesTest { new SemanticRuleBuilder().build(FilesApplicationPackage.fromFile(new File(rootWithDuplicateDefault))); fail("should fail with exception"); } catch (Exception e) { - assertEquals("Both 'one' and 'other' is marked as default rule, there can only be one", e.getMessage()); + assertEquals("Rules [one, other] are both marked as the default rule, there can only be one", e.getMessage()); } } |