cmp different from the string representation
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Stack technique
- ruby
- Domaine
- operating-systems
Piste de recherche
Lisez l’implémentation de cmp dans ext/pathname/pathname.c ainsi que les cas associés dans test/pathname/test_pathname.rb, puis reproduisez les différents résultats de Pathname#<=> et de l’ordre des chaînes décrits dans l’issue. C’est terminé lorsque le comportement de tri attendu est établi et que les tests ou la documentation concernés reflètent clairement cette conclusion.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
There's an ordering difference when using the built-in <=> vs the string representation one:
> Pathname.new(File.expand_path('.')).glob('**/*.rb').sort.first(5)
=> [#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/chain.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/error_generator.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/expect_chain_chain.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/expectation_chain.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/message_chains.rb>]
> Pathname.new(File.expand_path('.')).glob('**/*.rb').sort_by(&:to_s).first(5)
=> [#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/chain.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/error_generator.rb>,
#<Pathname:/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/expect_chain_chain.rb>]
And the latter corresponds to the classic alternative:
> Dir[File.expand_path('**/*.rb')].sort.first(5)
=> ["/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks.rb",
"/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance.rb",
"/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/chain.rb",
"/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/error_generator.rb",
"/Users/pirj/source/rspec-dev/repos/rspec-mocks/lib/rspec/mocks/any_instance/expect_chain_chain.rb"]
Just by looking at the cmp implementation and tests I couldn't understand, is this the designed behaviour, or the behaviour is undefined?
Semantically, it would make sense to load rspec/mocks.rb first, and then rspec/mocks/any_instance.rb, not the other way around.
Some discussion in rspec-rails regarding the issues it may cause.
rspec-rails PR to change the helper template to use Pathname#glob instead of Dir.[].
A workaround rspec-rails plans to take is to sort_by(&:to_s) to get back to the string representation-like ordering.
(semi-)Related cops:
- Langage dominant
- Ruby
- Étoiles
- 32
- Forks
- 24
- Merge moyen
- 13 h 2 min
- PR mergées (30 j)
- 1
Guide de contribution
Aucun guide de contribution indexé pour ce dépôt
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de ruby/pathname
-
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
-
A means to add an extension Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
-
Add puts Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 38/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
Toutes les issues de ruby/pathname
Issues similaires
-
バグ
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
-
Version bump for OpenVox 9 Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
voxpupuli/puppet-epel#186 · 1 commentaire ·
-
external_created_at is no longer used for the message timestamp since the new message UI (v4.4.0) OuverteBug Frontend
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
TheOdinProject/curriculum#31402 · 1 commentaire ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100