Konrad Windszus created SLING-12833: ---------------------------------------
Summary: Better description of mismatch in ResourcePropertiesMatcher Key: SLING-12833 URL: https://issues.apache.org/jira/browse/SLING-12833 Project: Sling Issue Type: Improvement Components: Testing Affects Versions: Testing Hamcrest 1.0.2 Reporter: Konrad Windszus When using ResourcePropertiesMatcher with lots of properties it is hard to spot the actual difference from the output message. It should highlight - the first property name where a difference occurs - the expected value and type vs the actual value and type for that property Current example output of 1.0.2 {code} java.lang.AssertionError: Expected: Resource with properties [<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test %&special test characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>] but: was Resource with properties [<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test %&special test characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>] (resource: <ValueMapResource, type=aem-dictionary-translator/components/combining-message-entry, path=/mnt/dictionary/content/dictionaries/fruit/i18n/test\u000D\u000A\u0025&special test characters>) at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8) at be.orbinson.aem.dictionarytranslator.services.impl.CombiningMessageEntryResourceProviderTest.syntheticMessageEntryPathShouldReturnProperResource(CombiningMessageEntryResourceProviderTest.java:109) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) {code} Proposed improved Output {code} java.lang.AssertionError: Expected: Resource with properties [<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test %&special test characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>] but: was Resource with properties [<dictionaryPath=/content/dictionaries/fruit/i18n>,<editable=true>,<en=foo>,<escapedKey=test\r\n%&special··test\t·characters>,<key=test %&special test characters>,<languages=[en,nl_BE]>,<messageEntryPaths=[/content/dictionaries/fruit/i18n/en/specialkey]>,<validationMessages=[]>] (resource: <ValueMapResource, type=aem-dictionary-translator/components/combining-message-entry, path=/mnt/dictionary/content/dictionaries/fruit/i18n/test\u000D\u000A\u0025&special test characters>) First mismatch in property "validationMessages": expected value [] of type "[Ljava.lang.String;" but was value <[]> of type "java.util.TreeSet" at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20) at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:6) at be.orbinson.aem.dictionarytranslator.services.impl.CombiningMessageEntryResourceProviderTest.syntheticMessageEntryPathShouldReturnProperResource(CombiningMessageEntryResourceProviderTest.java:109) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)