Replace most matchers by `obj.should.foo`
@eregon ci sta già lavorando.
Dal 7/5/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Looking at this list we'd remove (or maybe deprecate first? but seems unnecessary) in MSpec and migrate usages in ruby/spec for:
be_an_instance_of(C) -> .should.instance_of?(C)
be_ancestor_of -> .ancestors.should.include?
be_empty -> .should.empty?
be_false -> .should == false
be_kind_of(C) -> .should.is_a?(C) or .should.kind_of?(C)
be_nan -> .should.nan?
be_nil -> .should == nil
be_true -> .should == true
eql -> .should.eql?
equal -> .should.equal?
have_class_variable -> .class_variables(false).should.include? BTW the matcher used inherit=true, a bug
have_constant -> .constants(false).should.include? BTW the matcher used inherit=true, a bug
have_instance_method -> .instance_methods(false).should.include? BTW the matcher used inherit=true, a bug
have_instance_variable -> .instance_variables.should.include?
have_method -> .methods(false).should.include? BTW the matcher used inherit=true, a bug
have_private_instance_method -> .private_instance_methods(false).should.include? BTW the matcher used inherit=true, a bug
have_private_method -> .private_methods(false).should.include? BTW the matcher used inherit=true, a bug
have_protected_instance_method -> .protected_instance_methods(false).should.include? BTW the matcher used inherit=true, a bug
have_public_instance_method -> .public_instance_methods(false).should.include? BTW the matcher used inherit=true, a bug
have_singleton_method -> .singleton_methods(false).should.include? BTW the matcher used inherit=true, a bug
include -> .should.include?
be_positive_infinity -> .should.infinite? == 1
be_negative_infinity -> .should.infinite? == -1
respond_to -> .should.respond_to?
We'd keep (because they cannot be expressed easily as .should.foo):
be_close
be_computed_by
be_true_or_false # maybe we should have something like `be_either(true, false)`/`be_one_of(true, false)`
block_caller
complain
include_any_of # 0 usages in ruby/spec, only used in spec/truffle/interop, probably could be replaced or moved there and then removed
match_yaml # only used in library/yaml should be moved there
output_to_fd
output
raise_error # though I would love to find a more consistent syntax, maybe `-> { ... }.should.raise(ArgumentError, "message")` since it wouldn't make sense to do `.should.raise` before and BTW Kernel#raise is a private method.
be_positive_zero # 0.0.equal? 0.0 works but relies on Flonum
be_negative_zero # (-0.0).equal?(-0.0) doesn't work on CRuby (but does on TruffleRuby). Too bad there isn't Float#signum or so
skip
Others:
equal_element -> should move to library/cgi/spec_helper.rb or so since it's only used there
The reasoning is those matchers to be removed do nothing more than just .should.foo and it's far clearer to have the method call literally in the code vs having to "deserialize RSpec notation". See this discussion and this blog post for more thoughts on this.
Right now we use a mix of both but it'd be good to be consistent.
- Lingua principale
- Ruby
- Stelle
- 622
- Fork
- 402
- Merge medio
- 14h 51m
- PR unite (30g)
- 6
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ruby/spec
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 52/100
-
Improving Marshal specs Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 38/100
-
Hacktoberfest help wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
palladius/rails8-app-on-gcp#145 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
rubocop/rubocop-rspec#2236 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
riscv/riscv-unified-db#2624 · 1 reazione ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100