rubygems-update 3.2.0 → 3.2.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/{History.txt → CHANGELOG.md} +482 -457
  3. data/Manifest.txt +31 -27
  4. data/POLICIES.md +4 -3
  5. data/Rakefile +23 -18
  6. data/bundler/CHANGELOG.md +67 -20
  7. data/bundler/bundler.gemspec +1 -1
  8. data/bundler/lib/bundler.rb +8 -2
  9. data/bundler/lib/bundler/build_metadata.rb +2 -2
  10. data/bundler/lib/bundler/cli.rb +3 -6
  11. data/bundler/lib/bundler/cli/gem.rb +2 -0
  12. data/bundler/lib/bundler/cli/install.rb +14 -5
  13. data/bundler/lib/bundler/cli/outdated.rb +2 -2
  14. data/bundler/lib/bundler/cli/update.rb +1 -1
  15. data/bundler/lib/bundler/compact_index_client/cache.rb +5 -13
  16. data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
  17. data/bundler/lib/bundler/compact_index_client/updater.rb +0 -8
  18. data/bundler/lib/bundler/definition.rb +24 -21
  19. data/bundler/lib/bundler/dependency.rb +3 -1
  20. data/bundler/lib/bundler/gem_helper.rb +3 -3
  21. data/bundler/lib/bundler/gem_helpers.rb +30 -24
  22. data/bundler/lib/bundler/lazy_specification.rb +16 -3
  23. data/bundler/{man → lib/bundler/man}/bundle-add.1 +0 -0
  24. data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +0 -0
  25. data/bundler/{man → lib/bundler/man}/bundle-cache.1 +0 -0
  26. data/bundler/{man → lib/bundler/man}/bundle-check.1 +0 -0
  27. data/bundler/{man → lib/bundler/man}/bundle-clean.1 +0 -0
  28. data/bundler/{man → lib/bundler/man}/bundle-config.1 +0 -0
  29. data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +0 -0
  30. data/bundler/{man → lib/bundler/man}/bundle-exec.1 +0 -0
  31. data/bundler/{man → lib/bundler/man}/bundle-gem.1 +0 -0
  32. data/bundler/{man → lib/bundler/man}/bundle-info.1 +0 -0
  33. data/bundler/{man → lib/bundler/man}/bundle-init.1 +0 -0
  34. data/bundler/{man → lib/bundler/man}/bundle-inject.1 +0 -0
  35. data/bundler/{man → lib/bundler/man}/bundle-install.1 +0 -0
  36. data/bundler/{man → lib/bundler/man}/bundle-list.1 +0 -0
  37. data/bundler/{man → lib/bundler/man}/bundle-lock.1 +0 -0
  38. data/bundler/{man → lib/bundler/man}/bundle-open.1 +0 -0
  39. data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +0 -0
  40. data/bundler/{man → lib/bundler/man}/bundle-platform.1 +0 -0
  41. data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +0 -0
  42. data/bundler/{man → lib/bundler/man}/bundle-remove.1 +0 -0
  43. data/bundler/{man → lib/bundler/man}/bundle-show.1 +0 -0
  44. data/bundler/{man → lib/bundler/man}/bundle-update.1 +0 -0
  45. data/bundler/{man → lib/bundler/man}/bundle-viz.1 +0 -0
  46. data/bundler/{man → lib/bundler/man}/bundle.1 +0 -0
  47. data/bundler/{man → lib/bundler/man}/gemfile.5 +0 -0
  48. data/bundler/{man → lib/bundler/man}/index.txt +0 -0
  49. data/bundler/lib/bundler/resolver.rb +29 -27
  50. data/bundler/lib/bundler/resolver/spec_group.rb +19 -25
  51. data/bundler/lib/bundler/rubygems_integration.rb +0 -6
  52. data/bundler/lib/bundler/source/git.rb +18 -16
  53. data/bundler/lib/bundler/source/git/git_proxy.rb +54 -49
  54. data/bundler/lib/bundler/source/path/installer.rb +2 -0
  55. data/bundler/lib/bundler/source/rubygems.rb +10 -1
  56. data/bundler/lib/bundler/spec_set.rb +5 -8
  57. data/bundler/lib/bundler/stub_specification.rb +0 -2
  58. data/bundler/lib/bundler/templates/newgem/Gemfile.tt +1 -1
  59. data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
  60. data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +3 -0
  61. data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +8 -1
  62. data/bundler/lib/bundler/version.rb +1 -1
  63. data/lib/rubygems.rb +1 -1
  64. data/lib/rubygems/commands/owner_command.rb +0 -1
  65. data/lib/rubygems/commands/push_command.rb +0 -1
  66. data/lib/rubygems/commands/setup_command.rb +16 -62
  67. data/lib/rubygems/commands/yank_command.rb +0 -1
  68. data/lib/rubygems/dependency_installer.rb +1 -0
  69. data/lib/rubygems/ext/builder.rb +3 -3
  70. data/lib/rubygems/ext/cmake_builder.rb +1 -2
  71. data/lib/rubygems/ext/configure_builder.rb +1 -2
  72. data/lib/rubygems/ext/rake_builder.rb +1 -1
  73. data/lib/rubygems/gemcutter_utilities.rb +22 -17
  74. data/lib/rubygems/installer.rb +0 -23
  75. data/lib/rubygems/remote_fetcher.rb +4 -2
  76. data/lib/rubygems/request_set.rb +2 -13
  77. data/lib/rubygems/resolver.rb +6 -1
  78. data/lib/rubygems/resolver/api_set.rb +29 -20
  79. data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
  80. data/lib/rubygems/resolver/api_specification.rb +4 -3
  81. data/lib/rubygems/resolver/best_set.rb +2 -2
  82. data/lib/rubygems/resolver/index_specification.rb +18 -0
  83. data/lib/rubygems/resolver/installer_set.rb +57 -7
  84. data/lib/rubygems/resolver/spec_specification.rb +14 -0
  85. data/lib/rubygems/resolver/specification.rb +12 -0
  86. data/lib/rubygems/server.rb +6 -1
  87. data/lib/rubygems/source.rb +11 -6
  88. data/lib/rubygems/specification.rb +18 -14
  89. data/lib/rubygems/test_case.rb +17 -4
  90. data/lib/rubygems/test_utilities.rb +6 -5
  91. data/rubygems-update.gemspec +2 -2
  92. data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
  93. data/test/rubygems/test_gem_commands_install_command.rb +131 -0
  94. data/test/rubygems/test_gem_commands_push_command.rb +41 -2
  95. data/test/rubygems/test_gem_commands_setup_command.rb +21 -37
  96. data/test/rubygems/test_gem_dependency_installer.rb +27 -47
  97. data/test/rubygems/test_gem_ext_builder.rb +6 -6
  98. data/test/rubygems/test_gem_ext_cmake_builder.rb +2 -4
  99. data/test/rubygems/test_gem_ext_configure_builder.rb +2 -2
  100. data/test/rubygems/test_gem_ext_rake_builder.rb +25 -0
  101. data/test/rubygems/test_gem_installer.rb +6 -60
  102. data/test/rubygems/test_gem_remote_fetcher.rb +1 -1
  103. data/test/rubygems/test_gem_resolver_api_set.rb +54 -51
  104. data/test/rubygems/test_gem_resolver_api_specification.rb +3 -3
  105. data/test/rubygems/test_gem_resolver_best_set.rb +26 -3
  106. data/test/rubygems/test_gem_source.rb +2 -2
  107. data/test/rubygems/test_gem_source_subpath_problem.rb +2 -2
  108. data/test/rubygems/test_gem_specification.rb +9 -3
  109. data/test/test_changelog_generator.rb +17 -0
  110. metadata +38 -58
@@ -946,6 +946,31 @@ class TestGemDependencyInstaller < Gem::TestCase
946
946
  assert_equal %w[d-2], inst.installed_gems.map {|s| s.full_name }
947
947
  end
948
948
 
949
+ def test_install_legacy_spec_with_nil_required_rubygems_version
950
+ path = File.expand_path "../data/null-required-rubygems-version.gemspec.rz", __FILE__
951
+ spec = Marshal.load Gem.read_binary(path)
952
+ def spec.validate(*args); end
953
+
954
+ util_build_gem spec
955
+
956
+ cache_file = File.join @tempdir, 'gems', "#{spec.original_name}.gem"
957
+ FileUtils.mkdir_p File.dirname cache_file
958
+ FileUtils.mv spec.cache_file, cache_file
959
+
960
+ util_setup_spec_fetcher spec
961
+
962
+ data = Gem.read_binary(cache_file)
963
+
964
+ @fetcher.data['http://gems.example.com/gems/activesupport-1.0.0.gem'] = data
965
+
966
+ dep = Gem::Dependency.new 'activesupport'
967
+
968
+ inst = Gem::DependencyInstaller.new
969
+ inst.install dep
970
+
971
+ assert_equal %w[activesupport-1.0.0], Gem::Specification.map(&:full_name)
972
+ end
973
+
949
974
  def test_find_gems_gems_with_sources
950
975
  util_setup_gems
951
976
 
@@ -1102,21 +1127,6 @@ class TestGemDependencyInstaller < Gem::TestCase
1102
1127
  assert_equal %w[a-1], requests
1103
1128
  end
1104
1129
 
1105
- def util_write_a1_bin
1106
- write_file File.join('gems', 'a-1', 'bin', 'a_bin') do |fp|
1107
- fp.puts "#!/usr/bin/ruby"
1108
- end
1109
- end
1110
-
1111
- def util_setup_c1_pre
1112
- @c1_pre, @c1_pre_gem = util_spec 'c', '1.a' do |s|
1113
- s.add_dependency 'a', '1.a'
1114
- s.add_dependency 'b', '1'
1115
- end
1116
-
1117
- util_reset_gems
1118
- end
1119
-
1120
1130
  def util_setup_d
1121
1131
  @d1, @d1_gem = util_gem 'd', '1'
1122
1132
  @d2, @d2_gem = util_gem 'd', '2'
@@ -1124,43 +1134,13 @@ class TestGemDependencyInstaller < Gem::TestCase
1124
1134
  util_reset_gems
1125
1135
  end
1126
1136
 
1127
- def util_setup_wxyz
1128
- @x1_m, @x1_m_gem = util_spec 'x', '1' do |s|
1129
- s.platform = Gem::Platform.new %w[cpu my_platform 1]
1130
- end
1131
-
1132
- @x1_o, @x1_o_gem = util_spec 'x', '1' do |s|
1133
- s.platform = Gem::Platform.new %w[cpu other_platform 1]
1134
- end
1135
-
1136
- @w1, @w1_gem = util_spec 'w', '1', 'x' => nil
1137
-
1138
- @y1, @y1_gem = util_spec 'y', '1'
1139
- @y1_1_p, @y1_1_p_gem = util_spec 'y', '1.1' do |s|
1140
- s.platform = Gem::Platform.new %w[cpu my_platform 1]
1141
- end
1142
-
1143
- @z1, @z1_gem = util_spec 'z', '1', 'y' => nil
1144
-
1145
- util_reset_gems
1146
- end
1147
-
1148
1137
  def util_reset_gems
1149
1138
  @a1 ||= nil
1150
1139
  @b1 ||= nil
1151
1140
  @a1_pre ||= nil
1152
- @c1_pre ||= nil
1153
1141
  @d1 ||= nil
1154
1142
  @d2 ||= nil
1155
- @w1 ||= nil
1156
- @x1_m ||= nil
1157
- @x1_o ||= nil
1158
- @y1 ||= nil
1159
- @y1_1_p ||= nil
1160
- @z1 ||= nil
1161
-
1162
- util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @c1_pre,
1163
- @d1, @d2, @x1_m, @x1_o, @w1, @y1,
1164
- @y1_1_p, @z1].compact)
1143
+
1144
+ util_setup_spec_fetcher(*[@a1, @a1_pre, @b1, @d1, @d2].compact)
1165
1145
  end
1166
1146
  end
@@ -47,9 +47,9 @@ install:
47
47
 
48
48
  results = results.join("\n").b
49
49
 
50
- assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" clean$}, results
51
- assert_match %r{"DESTDIR=#{ENV['DESTDIR']}"$}, results
52
- assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" install$}, results
50
+ assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} clean$}, results
51
+ assert_match %r{DESTDIR\\=#{ENV['DESTDIR']}$}, results
52
+ assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} install$}, results
53
53
 
54
54
  if /nmake/ !~ results
55
55
  assert_match %r{^clean: destination$}, results
@@ -76,9 +76,9 @@ install:
76
76
 
77
77
  results = results.join("\n").b
78
78
 
79
- assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" clean$}, results
80
- assert_match %r{"DESTDIR=#{ENV['DESTDIR']}"$}, results
81
- assert_match %r{"DESTDIR=#{ENV['DESTDIR']}" install$}, results
79
+ assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} clean$}, results
80
+ assert_match %r{DESTDIR\\=#{ENV['DESTDIR']}$}, results
81
+ assert_match %r{DESTDIR\\=#{ENV['DESTDIR']} install$}, results
82
82
  end
83
83
 
84
84
  def test_build_extensions
@@ -40,8 +40,7 @@ install (FILES test.txt DESTINATION bin)
40
40
 
41
41
  output = output.join "\n"
42
42
 
43
- assert_match \
44
- %r{^cmake \. -DCMAKE_INSTALL_PREFIX=#{Regexp.escape @dest_path}}, output
43
+ assert_match %r{^cmake \. -DCMAKE_INSTALL_PREFIX\\=#{Regexp.escape @dest_path}}, output
45
44
  assert_match %r{#{Regexp.escape @ext}}, output
46
45
  assert_contains_make_command '', output
47
46
  assert_contains_make_command 'install', output
@@ -58,11 +57,10 @@ install (FILES test.txt DESTINATION bin)
58
57
  output = output.join "\n"
59
58
 
60
59
  shell_error_msg = %r{(CMake Error: .*)}
61
- sh_prefix_cmake = "cmake . -DCMAKE_INSTALL_PREFIX="
62
60
 
63
61
  assert_match 'cmake failed', error.message
64
62
 
65
- assert_match %r{^#{sh_prefix_cmake}#{Regexp.escape @dest_path}}, output
63
+ assert_match %r{^cmake . -DCMAKE_INSTALL_PREFIX\\=#{Regexp.escape @dest_path}}, output
66
64
  assert_match %r{#{shell_error_msg}}, output
67
65
  end
68
66
 
@@ -28,7 +28,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
28
28
  Gem::Ext::ConfigureBuilder.build nil, @dest_path, output, [], nil, @ext
29
29
 
30
30
  assert_match(/^current directory:/, output.shift)
31
- assert_equal "sh ./configure --prefix=#{@dest_path}", output.shift
31
+ assert_equal "sh ./configure --prefix\\=#{@dest_path}", output.shift
32
32
  assert_equal "", output.shift
33
33
  assert_match(/^current directory:/, output.shift)
34
34
  assert_contains_make_command 'clean', output.shift
@@ -50,7 +50,7 @@ class TestGemExtConfigureBuilder < Gem::TestCase
50
50
  end
51
51
 
52
52
  shell_error_msg = %r{(\./configure: .*)|((?:[Cc]an't|cannot) open '?\./configure'?(?:: No such file or directory)?)}
53
- sh_prefix_configure = "sh ./configure --prefix="
53
+ sh_prefix_configure = "sh ./configure --prefix\\="
54
54
 
55
55
  assert_match 'configure failed', error.message
56
56
 
@@ -47,6 +47,31 @@ class TestGemExtRakeBuilder < Gem::TestCase
47
47
  end
48
48
  end
49
49
 
50
+ def test_class_no_openssl_override
51
+ create_temp_mkrf_file('task :default')
52
+
53
+ rake = util_spec 'rake' do |s|
54
+ s.executables = %w[rake]
55
+ s.files = %w[bin/rake]
56
+ end
57
+
58
+ output = []
59
+
60
+ write_file File.join(@tempdir, 'bin', 'rake') do |fp|
61
+ fp.puts "#!/usr/bin/ruby"
62
+ fp.puts "require 'openssl'; puts OpenSSL"
63
+ end
64
+
65
+ install_gem rake
66
+
67
+ Gem::Ext::RakeBuilder.build 'mkrf_conf.rb', @dest_path, output, [''], nil, @ext
68
+
69
+ output = output.join "\n"
70
+
71
+ assert_match "OpenSSL", output
72
+ assert_match %r{^#{Regexp.escape Gem.ruby} mkrf_conf\.rb}, output
73
+ end
74
+
50
75
  def test_class_build_no_mkrf_passes_args
51
76
  output = []
52
77
 
@@ -1172,12 +1172,16 @@ gem 'other', version
1172
1172
  end
1173
1173
 
1174
1174
  def test_install_force
1175
+ _, missing_dep_gem = util_gem 'missing_dep', '1' do |s|
1176
+ s.add_dependency 'doesnt_exist', '1'
1177
+ end
1178
+
1175
1179
  use_ui @ui do
1176
- installer = Gem::Installer.at old_ruby_required('= 1.4.6'), :force => true
1180
+ installer = Gem::Installer.at missing_dep_gem, :force => true
1177
1181
  installer.install
1178
1182
  end
1179
1183
 
1180
- gem_dir = File.join(@gemhome, 'gems', 'old_ruby_required-1')
1184
+ gem_dir = File.join(@gemhome, 'gems', 'missing_dep-1')
1181
1185
  assert_path_exists gem_dir
1182
1186
  end
1183
1187
 
@@ -1620,54 +1624,6 @@ gem 'other', version
1620
1624
  end
1621
1625
  end
1622
1626
 
1623
- def test_pre_install_checks_ruby_version
1624
- use_ui @ui do
1625
- installer = Gem::Installer.at old_ruby_required('= 1.4.6')
1626
- e = assert_raises Gem::RuntimeRequirementNotMetError do
1627
- installer.pre_install_checks
1628
- end
1629
- rv = Gem.ruby_version
1630
- assert_equal "old_ruby_required requires Ruby version = 1.4.6. The current ruby version is #{rv}.",
1631
- e.message
1632
- end
1633
- end
1634
-
1635
- def test_pre_install_checks_ruby_version_with_prereleases
1636
- util_set_RUBY_VERSION '2.6.0', -1, '63539', 'ruby 2.6.0preview2 (2018-05-31 trunk 63539) [x86_64-linux]'
1637
-
1638
- installer = Gem::Installer.at old_ruby_required('>= 2.6.0.preview2')
1639
- assert installer.pre_install_checks
1640
-
1641
- installer = Gem::Installer.at old_ruby_required('> 2.6.0.preview2')
1642
- e = assert_raises Gem::RuntimeRequirementNotMetError do
1643
- assert installer.pre_install_checks
1644
- end
1645
- assert_equal "old_ruby_required requires Ruby version > 2.6.0.preview2. The current ruby version is 2.6.0.preview2.",
1646
- e.message
1647
- ensure
1648
- util_restore_RUBY_VERSION
1649
- end
1650
-
1651
- def test_pre_install_checks_wrong_rubygems_version
1652
- spec = util_spec 'old_rubygems_required', '1' do |s|
1653
- s.required_rubygems_version = '< 0'
1654
- end
1655
-
1656
- util_build_gem spec
1657
-
1658
- gem = File.join(@gemhome, 'cache', spec.file_name)
1659
-
1660
- use_ui @ui do
1661
- installer = Gem::Installer.at gem
1662
- e = assert_raises Gem::RuntimeRequirementNotMetError do
1663
- installer.pre_install_checks
1664
- end
1665
- rgv = Gem::VERSION
1666
- assert_equal "old_rubygems_required requires RubyGems version < 0. The current RubyGems version is #{rgv}. " +
1667
- "Try 'gem update --system' to update RubyGems itself.", e.message
1668
- end
1669
- end
1670
-
1671
1627
  def test_pre_install_checks_malicious_name
1672
1628
  spec = util_spec '../malicious', '1'
1673
1629
  def spec.full_name # so the spec is buildable
@@ -2252,16 +2208,6 @@ gem 'other', version
2252
2208
  assert_kind_of(String, installer.gem)
2253
2209
  end
2254
2210
 
2255
- def old_ruby_required(requirement)
2256
- spec = util_spec 'old_ruby_required', '1' do |s|
2257
- s.required_ruby_version = requirement
2258
- end
2259
-
2260
- util_build_gem spec
2261
-
2262
- spec.cache_file
2263
- end
2264
-
2265
2211
  def util_execless
2266
2212
  @spec = util_spec 'z'
2267
2213
  util_build_gem @spec
@@ -205,7 +205,7 @@ PeIQQkFng2VVot/WAQbv3ePqWq07g1BBcwIBAg==
205
205
  @test_data
206
206
  end
207
207
 
208
- raise Gem::RemoteFetcher::FetchError.new("haha!", nil)
208
+ raise Gem::RemoteFetcher::FetchError.new("haha!", '')
209
209
  end
210
210
  end
211
211
 
@@ -6,29 +6,29 @@ class TestGemResolverAPISet < Gem::TestCase
6
6
  super
7
7
 
8
8
  @DR = Gem::Resolver
9
- @dep_uri = URI "#{@gem_repo}api/v1/dependencies"
9
+ @dep_uri = URI "#{@gem_repo}info/"
10
10
  end
11
11
 
12
12
  def test_initialize
13
13
  set = @DR::APISet.new
14
14
 
15
- assert_equal URI('https://rubygems.org/api/v1/dependencies'), set.dep_uri
16
- assert_equal URI('https://rubygems.org'), set.uri
17
- assert_equal Gem::Source.new(URI('https://rubygems.org')), set.source
15
+ assert_equal URI('https://index.rubygems.org/info/'), set.dep_uri
16
+ assert_equal URI('https://index.rubygems.org/'), set.uri
17
+ assert_equal Gem::Source.new(URI('https://index.rubygems.org')), set.source
18
18
  end
19
19
 
20
20
  def test_initialize_deeper_uri
21
- set = @DR::APISet.new 'https://rubygemsserver.com/mygems/api/v1/dependencies'
21
+ set = @DR::APISet.new 'https://rubygemsserver.com/mygems/info'
22
22
 
23
- assert_equal URI('https://rubygemsserver.com/mygems/api/v1/dependencies'), set.dep_uri
24
- assert_equal URI('https://rubygemsserver.com/mygems/'), set.uri
25
- assert_equal Gem::Source.new(URI('https://rubygemsserver.com/mygems/')), set.source
23
+ assert_equal URI('https://rubygemsserver.com/mygems/info'), set.dep_uri
24
+ assert_equal URI('https://rubygemsserver.com/'), set.uri
25
+ assert_equal Gem::Source.new(URI('https://rubygemsserver.com/')), set.source
26
26
  end
27
27
 
28
28
  def test_initialize_uri
29
29
  set = @DR::APISet.new @dep_uri
30
30
 
31
- assert_equal URI("#{@gem_repo}api/v1/dependencies"), set.dep_uri
31
+ assert_equal URI("#{@gem_repo}info/"), set.dep_uri
32
32
  assert_equal URI("#{@gem_repo}"), set.uri
33
33
  end
34
34
 
@@ -42,7 +42,7 @@ class TestGemResolverAPISet < Gem::TestCase
42
42
  :dependencies => [] },
43
43
  ]
44
44
 
45
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
45
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 "
46
46
 
47
47
  set = @DR::APISet.new @dep_uri
48
48
 
@@ -55,6 +55,35 @@ class TestGemResolverAPISet < Gem::TestCase
55
55
  assert_equal expected, set.find_all(a_dep)
56
56
  end
57
57
 
58
+ def test_find_all_prereleases
59
+ spec_fetcher
60
+
61
+ data = [
62
+ { :name => 'a',
63
+ :number => '1',
64
+ :platform => 'ruby',
65
+ :dependencies => [] },
66
+ { :name => 'a',
67
+ :number => '2.a',
68
+ :platform => 'ruby',
69
+ :dependencies => [] },
70
+ ]
71
+
72
+ @fetcher.data["#{@dep_uri}a"] = "---\n1\n2.a"
73
+
74
+ set = @DR::APISet.new @dep_uri
75
+ set.prerelease = true
76
+
77
+ a_dep = @DR::DependencyRequest.new dep('a'), nil
78
+
79
+ expected = [
80
+ @DR::APISpecification.new(set, data.first),
81
+ @DR::APISpecification.new(set, data.last),
82
+ ]
83
+
84
+ assert_equal expected, set.find_all(a_dep)
85
+ end
86
+
58
87
  def test_find_all_cache
59
88
  spec_fetcher
60
89
 
@@ -65,7 +94,7 @@ class TestGemResolverAPISet < Gem::TestCase
65
94
  :dependencies => [] },
66
95
  ]
67
96
 
68
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
97
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 "
69
98
 
70
99
  set = @DR::APISet.new @dep_uri
71
100
 
@@ -79,7 +108,7 @@ class TestGemResolverAPISet < Gem::TestCase
79
108
 
80
109
  assert_equal expected, set.find_all(a_dep)
81
110
 
82
- @fetcher.data.delete "#{@dep_uri}?gems=a"
111
+ @fetcher.data.delete "#{@dep_uri}a"
83
112
  end
84
113
 
85
114
  def test_find_all_local
@@ -94,7 +123,7 @@ class TestGemResolverAPISet < Gem::TestCase
94
123
  def test_find_all_missing
95
124
  spec_fetcher
96
125
 
97
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump []
126
+ @fetcher.data["#{@dep_uri}a"] = "---"
98
127
 
99
128
  set = @DR::APISet.new @dep_uri
100
129
 
@@ -102,7 +131,7 @@ class TestGemResolverAPISet < Gem::TestCase
102
131
 
103
132
  assert_empty set.find_all(a_dep)
104
133
 
105
- @fetcher.data.delete "#{@dep_uri}?gems=a"
134
+ @fetcher.data.delete "#{@dep_uri}a"
106
135
 
107
136
  assert_empty set.find_all(a_dep)
108
137
  end
@@ -110,15 +139,8 @@ class TestGemResolverAPISet < Gem::TestCase
110
139
  def test_prefetch
111
140
  spec_fetcher
112
141
 
113
- data = [
114
- { :name => 'a',
115
- :number => '1',
116
- :platform => 'ruby',
117
- :dependencies => [] },
118
- ]
119
-
120
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
121
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
142
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
143
+ @fetcher.data["#{@dep_uri}b"] = "---"
122
144
 
123
145
  set = @DR::APISet.new @dep_uri
124
146
 
@@ -134,14 +156,7 @@ class TestGemResolverAPISet < Gem::TestCase
134
156
  def test_prefetch_cache
135
157
  spec_fetcher
136
158
 
137
- data = [
138
- { :name => 'a',
139
- :number => '1',
140
- :platform => 'ruby',
141
- :dependencies => [] },
142
- ]
143
-
144
- @fetcher.data["#{@dep_uri}?gems=a"] = Marshal.dump data
159
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
145
160
 
146
161
  set = @DR::APISet.new @dep_uri
147
162
 
@@ -150,8 +165,8 @@ class TestGemResolverAPISet < Gem::TestCase
150
165
 
151
166
  set.prefetch [a_dep]
152
167
 
153
- @fetcher.data.delete "#{@dep_uri}?gems=a"
154
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
168
+ @fetcher.data.delete "#{@dep_uri}a"
169
+ @fetcher.data["#{@dep_uri}?b"] = "---"
155
170
 
156
171
  set.prefetch [a_dep, b_dep]
157
172
  end
@@ -159,14 +174,8 @@ class TestGemResolverAPISet < Gem::TestCase
159
174
  def test_prefetch_cache_missing
160
175
  spec_fetcher
161
176
 
162
- data = [
163
- { :name => 'a',
164
- :number => '1',
165
- :platform => 'ruby',
166
- :dependencies => [] },
167
- ]
168
-
169
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
177
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
178
+ @fetcher.data["#{@dep_uri}b"] = "---"
170
179
 
171
180
  set = @DR::APISet.new @dep_uri
172
181
 
@@ -175,7 +184,8 @@ class TestGemResolverAPISet < Gem::TestCase
175
184
 
176
185
  set.prefetch [a_dep, b_dep]
177
186
 
178
- @fetcher.data.delete "#{@dep_uri}?gems=a,b"
187
+ @fetcher.data.delete "#{@dep_uri}a"
188
+ @fetcher.data.delete "#{@dep_uri}b"
179
189
 
180
190
  set.prefetch [a_dep, b_dep]
181
191
  end
@@ -183,15 +193,8 @@ class TestGemResolverAPISet < Gem::TestCase
183
193
  def test_prefetch_local
184
194
  spec_fetcher
185
195
 
186
- data = [
187
- { :name => 'a',
188
- :number => '1',
189
- :platform => 'ruby',
190
- :dependencies => [] },
191
- ]
192
-
193
- @fetcher.data["#{@dep_uri}?gems=a,b"] = Marshal.dump data
194
- @fetcher.data["#{@dep_uri}?gems=b"] = Marshal.dump []
196
+ @fetcher.data["#{@dep_uri}a"] = "---\n1 \n"
197
+ @fetcher.data["#{@dep_uri}b"] = "---"
195
198
 
196
199
  set = @DR::APISet.new @dep_uri
197
200
  set.remote = false