Skip to content
This repository was archived by the owner on Nov 30, 2024. It is now read-only.
This repository was archived by the owner on Nov 30, 2024. It is now read-only.

Windowed comparison for differences in the middle of long strings #9

@cohuman

Description

@cohuman

When two strings fail to match, if the difference is somewhere in the middle of the strings, it can be annoying/impossible to track down the actual difference. I've written a little Comparison object that provides this kind of error message:

Strings differ at position 12:
expected: ..."efghijklmnopqrst"...
actual: ..."efghijklXnopqrst"...

It shows a "prelude" of a few characters, then the difference, on successive lines so they're easy to visually scan. It also does the right thing (or tries to) if the difference is near the beginning or end of the string (i.e. does or doesn't show ellipses).

http://gist.github.com/474363

For people who can't wait for this to get incorporated into RSpec proper, you can require comparison.rb and it'll override the existing RSpec == matcher.

One open question is whether the exception message should show the full actual string as well as the comparison... On one hand, it adds to screen clutter, but on the other hand, it can be important in tracking down the problem, especially if the prelude is ambiguous.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions