on long strings, rspec may not display the part of the string that does not match
Nobody has claimed this yet.
- Dominant language
- Ruby
- Stars
- 117
- Forks
- 51
- Avg merge
- 59m
- Merged PRs (30d)
- 3
Description
I'm trying to track down an error in a flaky test. Unfortunately the string output presented by rspec does not display the problem.
The following test should be enough to demonstrate the problem:
describe 'a long string' do
it 'shows the right part of the diff' do
got = "a"*100 + "Z" + "a"*100
want = "a" * (1 + 100*2)
expect(got).to eq(want)
end
end
Yields the following output:
Failures:
1) a long string shows the right part of the diff
Failure/Error: expect(got).to eq(want)
expected: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
got: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
(compared using ==)
# ./longstring_spec.rb:5:in `block (2 levels) in <top (required)>'
The strings displayed by rspec are identical; the diff is in the truncated part. If the string is any shorter, the diff appears correctly.
Running on a Mac in iTerm2.
$ rspec --version
RSpec 3.7
- rspec-core 3.7.1
- rspec-expectations 3.7.0
- rspec-mocks 3.7.0
- rspec-support 3.7.1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the reproduction in longstring_spec.rb with the reported RSpec 3.7 versions and inspect the failure output for the differing character. Trace how RSpec formats and truncates expected and actual strings. Done means long-string failures expose the differing section instead of showing identical truncated values.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ruby
- Domain
- testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100