Move remaining core specs to use fewer shared examples#1369
Conversation
f311e61 to
f51cf1d
Compare
|
Let me split this up in two PRs then |
f51cf1d to
304b83a
Compare
|
|
||
| describe "Enumerable#map" do | ||
| it_behaves_like :enumerable_collect, :map | ||
| it "is an alias of Enumerable#collect" do |
There was a problem hiding this comment.
I would prefer the other way around, i.e. map/select/include? are way more used than collect/find_all/member? so I think they should have the specs and the less used aliases should just check they are aliases of the most-used methods.
The other aliases in Enumerable look good in terms of the most-used having the specs.
There was a problem hiding this comment.
This is something that could be fixed later, we could merge both PRs and I could review all usages of is an alias of to see which don't match that rule.
There was a problem hiding this comment.
No need to put this in the blame, I'll take care of it in this PR. It's what rdoc considers the alias but I don't mind choosing the more popular version instead.
I'll do that tomorrow or so, already pretty late for me now.
304b83a to
83885f1
Compare
This shared example didn't even care about the method. So I just mentioned in one of the methods that tests are found in a different file
83885f1 to
a62129f
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 150 out of 150 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (5)
core/io/tty_spec.rb:1
- This spec can be flaky across CI/container environments because
/dev/ttymay be missing or inaccessible (e.g.,Errno::ENOENT,Errno::EACCES,Errno::ENODEV), not justErrno::ENXIO. Consider broadening the rescued errors (or guarding by checking existence/permissions) so the spec reliably skips when TTY access is not available.
core/file/to_path_spec.rb:1 - This
platform_is/guardblock definesbefore/afterhooks but contains no examples that use@dir. Either add the missing TMPFILE-related examples within this scope or remove the unused hooks to avoid dead setup code.
core/float/fdiv_spec.rb:1 - The second example’s description duplicates the first one verbatim, which makes failures harder to interpret. Rename the second description to reflect the distinct intent (e.g., division by a very large Integer).
core/kernel/dup_spec.rb:1 - The spec that verified
#dupcalls#initialize_copywas removed, which drops coverage for an important and observable part of Ruby’s object-copying semantics. Consider re-adding an explicit example assertinginitialize_copyis invoked (or adding equivalent coverage elsewhere in the same spec suite) so regressions induphooks are caught.
core/kernel/clone_spec.rb:1 - Similarly to
dup_spec, removing theinitialize_copyexpectation for#clonereduces coverage for clone’s copy hook behavior. Re-introduce an example that assertsinitialize_copyis called duringcloneto keep coverage of this user-visible contract.
It's quite chonky but mostly more of the same for #1364. This converts the entirety of core specs.
Before:
3805 files, 35698 examples, 273269 expectations, 0 failure, 0 errors, 0 tagged
After:
3805 files, 34586 examples, 256944 expectations, 0 failure, 0 errors, 0 tagged
1112 fewer specs.