-
Notifications
You must be signed in to change notification settings - Fork 33
Comparing changes
Open a pull request
base repository: ruby/net-imap
base: v0.4.20
head repository: ruby/net-imap
compare: v0.4.21
- 10 commits
- 3 files changed
- 1 contributor
Commits on Apr 29, 2025
-
🐛 Fix
SequenceSet#slice
with range(start...0)
The bug was that exclusive ranges ending in zero would be converted to end on `-1`, which would be interpretted as the last value in the range.
Configuration menu - View commit details
-
Copy full SHA for ee2b40c - Browse repository at this point
Copy the full SHA ee2b40cView commit details -
🐛 Fix inconsistently frozen SequenceSet#[] result
This maybe isn't actually documented very well (or at all...) but most SequenceSet transform methods return a frozen result when +self+ is frozen and a mutable result when +self+ is mutable. Except +limit+ which always returns a frozen result. And (before this commit) +slice+, which inconsistently returned with matching frozen status when the result wasn't empty, but always returned a frozen set when the result _was_ empty. Adding these tests exposed a much more significant bug: `SequenceSet#xor` mutates the reciever.
Configuration menu - View commit details
-
Copy full SHA for 14d698e - Browse repository at this point
Copy the full SHA 14d698eView commit details -
🐛
SequenceSet#xor
should not modifyself
`set ^ other` and `set.xor other` are supposed to be safe transforms. But, unfortunately, they modified the receiver if it wasn't frozen, and crashed when it was! The fix is trivial: convert `self` to `dup`.
Configuration menu - View commit details
-
Copy full SHA for 33367bb - Browse repository at this point
Copy the full SHA 33367bbView commit details -
🐛 Fix SequenceSet#slice when length > result size
The goal is for `#[]` (aliased as `#slice`) to behave similarly to `Array#[]`/`Array#slice`. When `Array#slice` has a length or range that extends beyond the end of the array, they simply return everything up to the end.
Configuration menu - View commit details
-
Copy full SHA for da1390c - Browse repository at this point
Copy the full SHA da1390cView commit details -
Configuration menu - View commit details
-
Copy full SHA for 06fb071 - Browse repository at this point
Copy the full SHA 06fb071View commit details -
🔀 Merge pull request #461 from ruby/backport/v0.4-seqset-bugfixes
🐛 Backport v0.4 SequenceSet bugfixes
Configuration menu - View commit details
-
Copy full SHA for e0f997c - Browse repository at this point
Copy the full SHA e0f997cView commit details -
✅ Add tests for
SequenceSet#xor
I'm not sure how this escaped testing before, but yikes!
Configuration menu - View commit details
-
Copy full SHA for 4b3270c - Browse repository at this point
Copy the full SHA 4b3270cView commit details -
✅ Add basic fuzz tests for SequenceSet operators
I almost accidentally committed a big bug for `#xor`. Yikes! I decided to take that opportunity to simply add some randomized tests on all of the set operators, based on set identities that should always hold true. These can also be used for microbenchmarks and profiling of SequenceSet.
Configuration menu - View commit details
-
Copy full SHA for 45e39d1 - Browse repository at this point
Copy the full SHA 45e39d1View commit details -
🔀 Merge pull request #466 from ruby/backport/0.4-seqset-tests
✅ Backport `SequenceSet` tests to 0.4
Configuration menu - View commit details
-
Copy full SHA for 8b09881 - Browse repository at this point
Copy the full SHA 8b09881View commit details -
Configuration menu - View commit details
-
Copy full SHA for 644a5d1 - Browse repository at this point
Copy the full SHA 644a5d1View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.4.20...v0.4.21