Skip to content

Commit 58620f6

Browse files
committed
Make string difference more readable
With this patch: ``` assertEquals "deadbeef" "deadbuff" ``` will output like this ``` ASSERT: expected:<deadbeef> ---------------^ but was :<deadbuff> ```
1 parent 07bb329 commit 58620f6

1 file changed

Lines changed: 31 additions & 1 deletion

File tree

shunit2

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -521,6 +521,35 @@ fail() {
521521
# shellcheck disable=SC2016,SC2034
522522
_FAIL_='eval fail --lineno "${LINENO:-}"'
523523

524+
__different(){
525+
expected="$1"
526+
actually="$2"
527+
len1=${#expected}
528+
len2=${#actually}
529+
min_len=$len1
530+
if [ "$min_len" -gt "$len2" ]; then
531+
min_len=$len2;
532+
fi
533+
534+
i=1;
535+
while [ "$i" -le "$min_len" ];
536+
do
537+
charA=$(echo "$expected"|cut -c$i);
538+
charB=$(echo "$actually"|cut -c$i);
539+
if [ "$charA" = "$charB" ]; then
540+
printf "-";
541+
else
542+
printf "^";
543+
break;
544+
fi
545+
i=$((i + 1));
546+
done
547+
if [ $i -gt "$min_len" ]; then
548+
printf "^";
549+
fi
550+
551+
}
552+
524553
# Records a test failure, stating two values were not equal.
525554
#
526555
# Args:
@@ -547,7 +576,8 @@ failNotEquals() {
547576
shunit_actual_=$2
548577

549578
shunit_message_=${shunit_message_%% }
550-
_shunit_assertFail "${shunit_message_:+${shunit_message_} }expected:<${shunit_expected_}> but was:<${shunit_actual_}>"
579+
different=$(__different "${shunit_expected_}" "${shunit_actual_})")
580+
_shunit_assertFail "${shunit_message_:+${shunit_message_} }\\nexpected:<${shunit_expected_}>\\n----------${different}\\nbut was :<${shunit_actual_}>"
551581

552582
unset shunit_message_ shunit_expected_ shunit_actual_
553583
return ${SHUNIT_FALSE}

0 commit comments

Comments
 (0)