ruby-changes:47386
From: ko1 <ko1@a...>
Date: Fri, 4 Aug 2017 23:57:36 +0900 (JST)
Subject: [ruby-changes:47386] ko1:r59502 (trunk): use stable sort.
ko1 2017-08-04 23:57:31 +0900 (Fri, 04 Aug 2017) New Revision: 59502 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=59502 Log: use stable sort. * lib/rubygems/resolver.rb (sort_dependencies): use stable sort. TestGemRequestSetLockfile#test_to_s_gem_dependency_non_default fails because this method return unstable results. Note that Enumerable#sort_by is unstable. I'm not sure the "stable" nature is required for RubyGems. The fact is that using stable sort, the test passed on mswin64+VS2017 where the sort results was reverse (unstable) order. Also using `-i` instead of `i` (it means forcing unstable sort) this test fails on other platform where the test successed before. Modified files: trunk/lib/rubygems/resolver.rb Index: lib/rubygems/resolver.rb =================================================================== --- lib/rubygems/resolver.rb (revision 59501) +++ lib/rubygems/resolver.rb (revision 59502) @@ -254,13 +254,14 @@ class Gem::Resolver https://github.com/ruby/ruby/blob/trunk/lib/rubygems/resolver.rb#L254 end def sort_dependencies(dependencies, activated, conflicts) - dependencies.sort_by do |dependency| + dependencies.sort_by.with_index do |dependency, i| name = name_for(dependency) [ activated.vertex_named(name).payload ? 0 : 1, amount_constrained(dependency), conflicts[name] ? 0 : 1, activated.vertex_named(name).payload ? 0 : search_for(dependency).count, + i # for stable sort ] end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/