rubygems-update 3.3.5 → 3.3.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/bundler/CHANGELOG.md +15 -0
  4. data/bundler/lib/bundler/build_metadata.rb +2 -2
  5. data/bundler/lib/bundler/cli/doctor.rb +9 -1
  6. data/bundler/lib/bundler/cli/gem.rb +11 -1
  7. data/bundler/lib/bundler/cli/platform.rb +1 -1
  8. data/bundler/lib/bundler/definition.rb +2 -1
  9. data/bundler/lib/bundler/env.rb +1 -1
  10. data/bundler/lib/bundler/remote_specification.rb +7 -0
  11. data/bundler/lib/bundler/resolver.rb +5 -4
  12. data/bundler/lib/bundler/templates/newgem/standard.yml.tt +1 -0
  13. data/bundler/lib/bundler/templates/newgem/test/minitest/test_newgem.rb.tt +1 -1
  14. data/bundler/lib/bundler/version.rb +1 -1
  15. data/lib/rubygems/basic_specification.rb +8 -8
  16. data/lib/rubygems/bundler_version_finder.rb +3 -3
  17. data/lib/rubygems/command.rb +4 -4
  18. data/lib/rubygems/commands/cleanup_command.rb +6 -6
  19. data/lib/rubygems/commands/dependency_command.rb +20 -30
  20. data/lib/rubygems/commands/list_command.rb +1 -1
  21. data/lib/rubygems/commands/pristine_command.rb +12 -12
  22. data/lib/rubygems/commands/push_command.rb +8 -8
  23. data/lib/rubygems/commands/query_command.rb +1 -1
  24. data/lib/rubygems/commands/rdoc_command.rb +6 -6
  25. data/lib/rubygems/commands/search_command.rb +1 -1
  26. data/lib/rubygems/commands/setup_command.rb +8 -8
  27. data/lib/rubygems/commands/specification_command.rb +4 -4
  28. data/lib/rubygems/commands/update_command.rb +8 -6
  29. data/lib/rubygems/config_file.rb +4 -4
  30. data/lib/rubygems/doctor.rb +5 -5
  31. data/lib/rubygems/gem_runner.rb +5 -5
  32. data/lib/rubygems/install_update_options.rb +4 -4
  33. data/lib/rubygems/installer.rb +51 -12
  34. data/lib/rubygems/package.rb +10 -10
  35. data/lib/rubygems/platform.rb +42 -42
  36. data/lib/rubygems/query_utils.rb +16 -18
  37. data/lib/rubygems/remote_fetcher.rb +4 -4
  38. data/lib/rubygems/request_set/lockfile.rb +4 -4
  39. data/lib/rubygems/source.rb +6 -6
  40. data/lib/rubygems/source_list.rb +7 -7
  41. data/lib/rubygems/spec_fetcher.rb +25 -25
  42. data/lib/rubygems/specification.rb +46 -46
  43. data/lib/rubygems/specification_policy.rb +16 -16
  44. data/lib/rubygems/stub_specification.rb +16 -16
  45. data/lib/rubygems/uninstaller.rb +7 -7
  46. data/lib/rubygems/user_interaction.rb +12 -12
  47. data/lib/rubygems/version.rb +9 -7
  48. data/lib/rubygems.rb +7 -7
  49. data/rubygems-update.gemspec +1 -1
  50. data/test/rubygems/helper.rb +4 -4
  51. data/test/rubygems/test_gem.rb +2 -0
  52. data/test/rubygems/test_gem_command_manager.rb +1 -1
  53. data/test/rubygems/test_gem_commands_update_command.rb +34 -0
  54. data/test/rubygems/test_gem_installer.rb +170 -58
  55. data/test/rubygems/test_gem_stream_ui.rb +1 -1
  56. data/test/rubygems/test_gem_version.rb +4 -0
  57. data/test/rubygems/utilities.rb +4 -4
  58. metadata +3 -3
@@ -36,18 +36,18 @@ class Gem::StubSpecification < Gem::BasicSpecification
36
36
  parts = data[PREFIX.length..-1].split(" ".freeze, 4)
37
37
  @name = parts[0].freeze
38
38
  @version = if Gem::Version.correct?(parts[1])
39
- Gem::Version.new(parts[1])
40
- else
41
- Gem::Version.new(0)
42
- end
39
+ Gem::Version.new(parts[1])
40
+ else
41
+ Gem::Version.new(0)
42
+ end
43
43
 
44
44
  @platform = Gem::Platform.new parts[2]
45
45
  @extensions = extensions
46
46
  @full_name = if platform == Gem::Platform::RUBY
47
- "#{name}-#{version}"
48
- else
49
- "#{name}-#{version}-#{platform}"
50
- end
47
+ "#{name}-#{version}"
48
+ else
49
+ "#{name}-#{version}-#{platform}"
50
+ end
51
51
 
52
52
  path_list = parts.last
53
53
  @require_paths = REQUIRE_PATH_LIST[path_list] || path_list.split("\0".freeze).map! do |x|
@@ -110,16 +110,16 @@ class Gem::StubSpecification < Gem::BasicSpecification
110
110
  begin
111
111
  saved_lineno = $.
112
112
 
113
- Gem.open_with_flock loaded_from, OPEN_MODE do |file|
113
+ Gem.open_file loaded_from, OPEN_MODE do |file|
114
114
  begin
115
115
  file.readline # discard encoding line
116
116
  stubline = file.readline.chomp
117
117
  if stubline.start_with?(PREFIX)
118
118
  extensions = if /\A#{PREFIX}/ =~ file.readline.chomp
119
- $'.split "\0"
120
- else
121
- StubLine::NO_EXTENSIONS
122
- end
119
+ $'.split "\0"
120
+ else
121
+ StubLine::NO_EXTENSIONS
122
+ end
123
123
 
124
124
  @data = StubLine.new stubline, extensions
125
125
  end
@@ -185,9 +185,9 @@ class Gem::StubSpecification < Gem::BasicSpecification
185
185
 
186
186
  def to_spec
187
187
  @spec ||= if @data
188
- loaded = Gem.loaded_specs[name]
189
- loaded if loaded && loaded.version == version
190
- end
188
+ loaded = Gem.loaded_specs[name]
189
+ loaded if loaded && loaded.version == version
190
+ end
191
191
 
192
192
  @spec ||= Gem::Specification.load(loaded_from)
193
193
  end
@@ -200,13 +200,13 @@ class Gem::Uninstaller
200
200
  executables = executables.map {|exec| formatted_program_filename exec }
201
201
 
202
202
  remove = if @force_executables.nil?
203
- ask_yes_no("Remove executables:\n" +
204
- "\t#{executables.join ', '}\n\n" +
205
- "in addition to the gem?",
206
- true)
207
- else
208
- @force_executables
209
- end
203
+ ask_yes_no("Remove executables:\n" +
204
+ "\t#{executables.join ', '}\n\n" +
205
+ "in addition to the gem?",
206
+ true)
207
+ else
208
+ @force_executables
209
+ end
210
210
 
211
211
  if remove
212
212
  bin_dir = @bin_dir || Gem.bindir(spec.base_dir)
@@ -258,23 +258,23 @@ class Gem::StreamUI
258
258
  end
259
259
 
260
260
  default_answer = case default
261
- when nil
262
- 'yn'
263
- when true
264
- 'Yn'
265
- else
266
- 'yN'
267
- end
261
+ when nil
262
+ 'yn'
263
+ when true
264
+ 'Yn'
265
+ else
266
+ 'yN'
267
+ end
268
268
 
269
269
  result = nil
270
270
 
271
271
  while result.nil? do
272
272
  result = case ask "#{question} [#{default_answer}]"
273
- when /^y/i then true
274
- when /^n/i then false
275
- when /^$/ then default
276
- else nil
277
- end
273
+ when /^y/i then true
274
+ when /^n/i then false
275
+ when /^$/ then default
276
+ else nil
277
+ end
278
278
  end
279
279
 
280
280
  return result
@@ -310,12 +310,12 @@ class Gem::Version
310
310
 
311
311
  def release
312
312
  @@release[self] ||= if prerelease?
313
- segments = self.segments
314
- segments.pop while segments.any? {|s| String === s }
315
- self.class.new segments.join('.')
316
- else
317
- self
318
- end
313
+ segments = self.segments
314
+ segments.pop while segments.any? {|s| String === s }
315
+ self.class.new segments.join('.')
316
+ else
317
+ self
318
+ end
319
319
  end
320
320
 
321
321
  def segments # :nodoc:
@@ -341,9 +341,11 @@ class Gem::Version
341
341
  # Compares this version with +other+ returning -1, 0, or 1 if the
342
342
  # other version is larger, the same, or smaller than this
343
343
  # one. Attempts to compare to something that's not a
344
- # <tt>Gem::Version</tt> return +nil+.
344
+ # <tt>Gem::Version</tt> or a valid version String return +nil+.
345
345
 
346
346
  def <=>(other)
347
+ return self <=> self.class.new(other) if (String === other) && self.class.correct?(other)
348
+
347
349
  return unless Gem::Version === other
348
350
  return 0 if @version == other._version || canonical_segments == other.canonical_segments
349
351
 
data/lib/rubygems.rb CHANGED
@@ -8,7 +8,7 @@
8
8
  require 'rbconfig'
9
9
 
10
10
  module Gem
11
- VERSION = "3.3.5".freeze
11
+ VERSION = "3.3.6".freeze
12
12
  end
13
13
 
14
14
  # Must be first since it unloads the prelude from 1.9.2
@@ -759,11 +759,11 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
759
759
  # Safely read a file in binary mode on all platforms.
760
760
 
761
761
  def self.read_binary(path)
762
- open_with_flock(path, 'rb+') do |io|
762
+ open_file(path, 'rb+') do |io|
763
763
  io.read
764
764
  end
765
765
  rescue Errno::EACCES, Errno::EROFS
766
- open_with_flock(path, 'rb') do |io|
766
+ open_file(path, 'rb') do |io|
767
767
  io.read
768
768
  end
769
769
  end
@@ -771,17 +771,17 @@ An Array (#{env.inspect}) was passed in from #{caller[3]}
771
771
  ##
772
772
  # Safely write a file in binary mode on all platforms.
773
773
  def self.write_binary(path, data)
774
- open_with_flock(path, 'wb') do |io|
774
+ open_file(path, 'wb') do |io|
775
775
  io.write data
776
776
  end
777
777
  end
778
778
 
779
779
  ##
780
- # Open a file with given flags, and protect access with flock
780
+ # Open a file with given flags, and on Windows protect access with flock
781
781
 
782
- def self.open_with_flock(path, flags, &block)
782
+ def self.open_file(path, flags, &block)
783
783
  File.open(path, flags) do |io|
784
- if !java_platform? && !solaris_platform?
784
+ if !java_platform? && win_platform?
785
785
  begin
786
786
  io.flock(File::LOCK_EX)
787
787
  rescue Errno::ENOSYS, Errno::ENOTSUP
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "rubygems-update"
5
- s.version = "3.3.5"
5
+ s.version = "3.3.6"
6
6
  s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
7
7
  s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
8
8
 
@@ -339,10 +339,10 @@ class Gem::TestCase < Test::Unit::TestCase
339
339
  ENV["GEM_SPEC_CACHE"] = File.join @tempdir, 'spec_cache'
340
340
 
341
341
  @orig_ruby = if ENV['RUBY']
342
- ruby = Gem.ruby
343
- Gem.ruby = ENV['RUBY']
344
- ruby
345
- end
342
+ ruby = Gem.ruby
343
+ Gem.ruby = ENV['RUBY']
344
+ ruby
345
+ end
346
346
 
347
347
  @git = ENV['GIT'] || (win_platform? ? 'git.exe' : 'git')
348
348
 
@@ -2022,6 +2022,8 @@ You may need to `bundle install` to install missing gems
2022
2022
  ENV['SOURCE_DATE_EPOCH'] = old_epoch
2023
2023
  end
2024
2024
 
2025
+ private
2026
+
2025
2027
  def ruby_install_name(name)
2026
2028
  with_clean_path_to_ruby do
2027
2029
  orig_RUBY_INSTALL_NAME = RbConfig::CONFIG['ruby_install_name']
@@ -252,7 +252,7 @@ class TestGemCommandManager < Gem::TestCase
252
252
  Gem::Deprecate.skip_during do
253
253
  @command_manager.process_args %w[query]
254
254
  end
255
- assert_equal(//, check_options[:name])
255
+ assert_nil(check_options[:name])
256
256
  assert_equal :local, check_options[:domain]
257
257
  assert_equal false, check_options[:details]
258
258
 
@@ -157,6 +157,40 @@ class TestGemCommandsUpdateCommand < Gem::TestCase
157
157
  assert_empty out
158
158
  end
159
159
 
160
+ def test_execute_system_update_installed
161
+ spec_fetcher do |fetcher|
162
+ fetcher.download 'rubygems-update', 8 do |s|
163
+ s.files = %w[setup.rb]
164
+ end
165
+ end
166
+
167
+ @cmd.options[:args] = []
168
+ @cmd.options[:system] = true
169
+
170
+ @cmd.execute
171
+
172
+ spec_fetcher do |fetcher|
173
+ fetcher.download 'rubygems-update', 9 do |s|
174
+ s.files = %w[setup.rb]
175
+ end
176
+ end
177
+
178
+ @cmd = Gem::Commands::UpdateCommand.new
179
+ @cmd.options[:args] = []
180
+ @cmd.options[:system] = true
181
+
182
+ use_ui @ui do
183
+ @cmd.execute
184
+ end
185
+
186
+ out = @ui.output.split "\n"
187
+ assert_equal "Updating rubygems-update", out.shift
188
+ assert_equal "Installing RubyGems 9", out.shift
189
+ assert_equal "RubyGems system software updated", out.shift
190
+
191
+ assert_empty out
192
+ end
193
+
160
194
  def test_execute_system_specific
161
195
  spec_fetcher do |fetcher|
162
196
  fetcher.download 'rubygems-update', 8 do |s|
@@ -18,11 +18,12 @@ class TestGemInstaller < Gem::InstallerTestCase
18
18
  end
19
19
 
20
20
  def test_app_script_text
21
- installer = setup_base_installer
21
+ load_relative "no" do
22
+ installer = setup_base_installer
22
23
 
23
- util_make_exec @spec, ''
24
+ util_make_exec @spec, ''
24
25
 
25
- expected = <<-EOF
26
+ expected = <<-EOF
26
27
  #!#{Gem.ruby}
27
28
  #
28
29
  # This file was generated by RubyGems.
@@ -52,10 +53,11 @@ else
52
53
  gem "a", version
53
54
  load Gem.bin_path("a", "executable", version)
54
55
  end
55
- EOF
56
+ EOF
56
57
 
57
- wrapper = installer.app_script_text 'executable'
58
- assert_equal expected, wrapper
58
+ wrapper = installer.app_script_text 'executable'
59
+ assert_equal expected, wrapper
60
+ end
59
61
  end
60
62
 
61
63
  def test_check_executable_overwrite
@@ -724,17 +726,19 @@ gem 'other', version
724
726
  def test_generate_bin_uses_default_shebang
725
727
  pend "Symlinks not supported or not enabled" unless symlink_supported?
726
728
 
727
- installer = setup_base_installer
729
+ load_relative 'no' do
730
+ installer = setup_base_installer
728
731
 
729
- installer.wrappers = true
730
- util_make_exec
732
+ installer.wrappers = true
733
+ util_make_exec
731
734
 
732
- installer.generate_bin
735
+ installer.generate_bin
733
736
 
734
- default_shebang = Gem.ruby
735
- shebang_line = File.open("#{@gemhome}/bin/executable") {|f| f.readlines.first }
736
- assert_match(/\A#!/, shebang_line)
737
- assert_match(/#{default_shebang}/, shebang_line)
737
+ default_shebang = Gem.ruby
738
+ shebang_line = File.open("#{@gemhome}/bin/executable") {|f| f.readlines.first }
739
+ assert_match(/\A#!/, shebang_line)
740
+ assert_match(/#{default_shebang}/, shebang_line)
741
+ end
738
742
  end
739
743
 
740
744
  def test_generate_bin_with_dangling_symlink
@@ -1804,13 +1808,15 @@ gem 'other', version
1804
1808
  end
1805
1809
 
1806
1810
  def test_shebang
1807
- installer = setup_base_installer
1811
+ load_relative "no" do
1812
+ installer = setup_base_installer
1808
1813
 
1809
- util_make_exec @spec, "#!/usr/bin/ruby"
1814
+ util_make_exec @spec, "#!/usr/bin/ruby"
1810
1815
 
1811
- shebang = installer.shebang 'executable'
1816
+ shebang = installer.shebang 'executable'
1812
1817
 
1813
- assert_equal "#!#{Gem.ruby}", shebang
1818
+ assert_equal "#!#{Gem.ruby}", shebang
1819
+ end
1814
1820
  end
1815
1821
 
1816
1822
  def test_process_options
@@ -1844,42 +1850,80 @@ gem 'other', version
1844
1850
  end
1845
1851
 
1846
1852
  def test_shebang_arguments
1847
- installer = setup_base_installer
1853
+ load_relative 'no' do
1854
+ installer = setup_base_installer
1848
1855
 
1849
- util_make_exec @spec, "#!/usr/bin/ruby -ws"
1856
+ util_make_exec @spec, "#!/usr/bin/ruby -ws"
1850
1857
 
1851
- shebang = installer.shebang 'executable'
1858
+ shebang = installer.shebang 'executable'
1852
1859
 
1853
- assert_equal "#!#{Gem.ruby} -ws", shebang
1860
+ assert_equal "#!#{Gem.ruby} -ws", shebang
1861
+ end
1862
+ end
1863
+
1864
+ def test_shebang_arguments_with_load_relative
1865
+ load_relative 'yes' do
1866
+ installer = setup_base_installer
1867
+
1868
+ util_make_exec @spec, "#!/usr/bin/ruby -ws"
1869
+
1870
+ shebang = installer.shebang 'executable'
1871
+
1872
+ shebang_lines = shebang.split "\n"
1873
+
1874
+ assert_equal "#!/bin/sh", shebang_lines.shift
1875
+ assert_includes shebang_lines, "#!#{Gem.ruby} -ws"
1876
+ end
1854
1877
  end
1855
1878
 
1856
1879
  def test_shebang_empty
1857
- installer = setup_base_installer
1880
+ load_relative 'no' do
1881
+ installer = setup_base_installer
1858
1882
 
1859
- util_make_exec @spec, ''
1883
+ util_make_exec @spec, ''
1860
1884
 
1861
- shebang = installer.shebang 'executable'
1862
- assert_equal "#!#{Gem.ruby}", shebang
1885
+ shebang = installer.shebang 'executable'
1886
+ assert_equal "#!#{Gem.ruby}", shebang
1887
+ end
1863
1888
  end
1864
1889
 
1865
1890
  def test_shebang_env
1866
- installer = setup_base_installer
1891
+ load_relative 'no' do
1892
+ installer = setup_base_installer
1867
1893
 
1868
- util_make_exec @spec, "#!/usr/bin/env ruby"
1894
+ util_make_exec @spec, "#!/usr/bin/env ruby"
1869
1895
 
1870
- shebang = installer.shebang 'executable'
1896
+ shebang = installer.shebang 'executable'
1871
1897
 
1872
- assert_equal "#!#{Gem.ruby}", shebang
1898
+ assert_equal "#!#{Gem.ruby}", shebang
1899
+ end
1873
1900
  end
1874
1901
 
1875
1902
  def test_shebang_env_arguments
1876
- installer = setup_base_installer
1903
+ load_relative 'no' do
1904
+ installer = setup_base_installer
1877
1905
 
1878
- util_make_exec @spec, "#!/usr/bin/env ruby -ws"
1906
+ util_make_exec @spec, "#!/usr/bin/env ruby -ws"
1879
1907
 
1880
- shebang = installer.shebang 'executable'
1908
+ shebang = installer.shebang 'executable'
1881
1909
 
1882
- assert_equal "#!#{Gem.ruby} -ws", shebang
1910
+ assert_equal "#!#{Gem.ruby} -ws", shebang
1911
+ end
1912
+ end
1913
+
1914
+ def test_shebang_env_arguments_with_load_relative
1915
+ load_relative 'yes' do
1916
+ installer = setup_base_installer
1917
+
1918
+ util_make_exec @spec, "#!/usr/bin/env ruby -ws"
1919
+
1920
+ shebang = installer.shebang 'executable'
1921
+
1922
+ shebang_lines = shebang.split "\n"
1923
+
1924
+ assert_equal "#!/bin/sh", shebang_lines.shift
1925
+ assert_includes shebang_lines, "#!#{Gem.ruby} -ws"
1926
+ end
1883
1927
  end
1884
1928
 
1885
1929
  def test_shebang_env_shebang
@@ -1897,63 +1941,120 @@ gem 'other', version
1897
1941
  end
1898
1942
 
1899
1943
  def test_shebang_nested
1900
- installer = setup_base_installer
1944
+ load_relative 'no' do
1945
+ installer = setup_base_installer
1901
1946
 
1902
- util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
1947
+ util_make_exec @spec, "#!/opt/local/ruby/bin/ruby"
1903
1948
 
1904
- shebang = installer.shebang 'executable'
1949
+ shebang = installer.shebang 'executable'
1905
1950
 
1906
- assert_equal "#!#{Gem.ruby}", shebang
1951
+ assert_equal "#!#{Gem.ruby}", shebang
1952
+ end
1907
1953
  end
1908
1954
 
1909
1955
  def test_shebang_nested_arguments
1910
- installer = setup_base_installer
1956
+ load_relative 'no' do
1957
+ installer = setup_base_installer
1911
1958
 
1912
- util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
1959
+ util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
1913
1960
 
1914
- shebang = installer.shebang 'executable'
1961
+ shebang = installer.shebang 'executable'
1962
+
1963
+ assert_equal "#!#{Gem.ruby} -ws", shebang
1964
+ end
1965
+ end
1915
1966
 
1916
- assert_equal "#!#{Gem.ruby} -ws", shebang
1967
+ def test_shebang_nested_arguments_with_load_relative
1968
+ load_relative 'yes' do
1969
+ installer = setup_base_installer
1970
+
1971
+ util_make_exec @spec, "#!/opt/local/ruby/bin/ruby -ws"
1972
+
1973
+ shebang = installer.shebang 'executable'
1974
+
1975
+ shebang_lines = shebang.split "\n"
1976
+
1977
+ assert_equal "#!/bin/sh", shebang_lines.shift
1978
+ assert_includes shebang_lines, "#!#{Gem.ruby} -ws"
1979
+ end
1917
1980
  end
1918
1981
 
1919
1982
  def test_shebang_version
1920
- installer = setup_base_installer
1983
+ load_relative 'no' do
1984
+ installer = setup_base_installer
1921
1985
 
1922
- util_make_exec @spec, "#!/usr/bin/ruby18"
1986
+ util_make_exec @spec, "#!/usr/bin/ruby18"
1923
1987
 
1924
- shebang = installer.shebang 'executable'
1988
+ shebang = installer.shebang 'executable'
1925
1989
 
1926
- assert_equal "#!#{Gem.ruby}", shebang
1990
+ assert_equal "#!#{Gem.ruby}", shebang
1991
+ end
1927
1992
  end
1928
1993
 
1929
1994
  def test_shebang_version_arguments
1930
- installer = setup_base_installer
1995
+ load_relative 'no' do
1996
+ installer = setup_base_installer
1931
1997
 
1932
- util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
1998
+ util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
1933
1999
 
1934
- shebang = installer.shebang 'executable'
2000
+ shebang = installer.shebang 'executable'
2001
+
2002
+ assert_equal "#!#{Gem.ruby} -ws", shebang
2003
+ end
2004
+ end
2005
+
2006
+ def test_shebang_version_arguments_with_load_relative
2007
+ load_relative 'yes' do
2008
+ installer = setup_base_installer
2009
+
2010
+ util_make_exec @spec, "#!/usr/bin/ruby18 -ws"
1935
2011
 
1936
- assert_equal "#!#{Gem.ruby} -ws", shebang
2012
+ shebang = installer.shebang 'executable'
2013
+
2014
+ shebang_lines = shebang.split "\n"
2015
+
2016
+ assert_equal "#!/bin/sh", shebang_lines.shift
2017
+ assert_includes shebang_lines, "#!#{Gem.ruby} -ws"
2018
+ end
1937
2019
  end
1938
2020
 
1939
2021
  def test_shebang_version_env
1940
- installer = setup_base_installer
2022
+ load_relative 'no' do
2023
+ installer = setup_base_installer
1941
2024
 
1942
- util_make_exec @spec, "#!/usr/bin/env ruby18"
2025
+ util_make_exec @spec, "#!/usr/bin/env ruby18"
1943
2026
 
1944
- shebang = installer.shebang 'executable'
2027
+ shebang = installer.shebang 'executable'
1945
2028
 
1946
- assert_equal "#!#{Gem.ruby}", shebang
2029
+ assert_equal "#!#{Gem.ruby}", shebang
2030
+ end
1947
2031
  end
1948
2032
 
1949
2033
  def test_shebang_version_env_arguments
1950
- installer = setup_base_installer
2034
+ load_relative 'no' do
2035
+ installer = setup_base_installer
1951
2036
 
1952
- util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
2037
+ util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
1953
2038
 
1954
- shebang = installer.shebang 'executable'
2039
+ shebang = installer.shebang 'executable'
1955
2040
 
1956
- assert_equal "#!#{Gem.ruby} -ws", shebang
2041
+ assert_equal "#!#{Gem.ruby} -ws", shebang
2042
+ end
2043
+ end
2044
+
2045
+ def test_shebang_version_env_arguments_with_load_relative
2046
+ load_relative 'yes' do
2047
+ installer = setup_base_installer
2048
+
2049
+ util_make_exec @spec, "#!/usr/bin/env ruby18 -ws"
2050
+
2051
+ shebang = installer.shebang 'executable'
2052
+
2053
+ shebang_lines = shebang.split "\n"
2054
+
2055
+ assert_equal "#!/bin/sh", shebang_lines.shift
2056
+ assert_includes shebang_lines, "#!#{Gem.ruby} -ws"
2057
+ end
1957
2058
  end
1958
2059
 
1959
2060
  def test_shebang_custom
@@ -2259,6 +2360,8 @@ gem 'other', version
2259
2360
  assert_kind_of(String, installer.gem)
2260
2361
  end
2261
2362
 
2363
+ private
2364
+
2262
2365
  def util_execless
2263
2366
  @spec = util_spec 'z'
2264
2367
  util_build_gem @spec
@@ -2281,4 +2384,13 @@ gem 'other', version
2281
2384
  def mask
2282
2385
  0100755
2283
2386
  end
2387
+
2388
+ def load_relative(value)
2389
+ orig_LIBRUBY_RELATIVE = RbConfig::CONFIG['LIBRUBY_RELATIVE']
2390
+ RbConfig::CONFIG['LIBRUBY_RELATIVE'] = value
2391
+
2392
+ yield
2393
+ ensure
2394
+ RbConfig::CONFIG['LIBRUBY_RELATIVE'] = orig_LIBRUBY_RELATIVE
2395
+ end
2284
2396
  end
@@ -5,7 +5,7 @@ require 'timeout'
5
5
 
6
6
  class TestGemStreamUI < Gem::TestCase
7
7
  # increase timeout with MJIT for --jit-wait testing
8
- mjit_enabled = defined?(RubyVM::MJIT) ? RubyVM::MJIT.enabled? : defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
8
+ mjit_enabled = defined?(RubyVM::MJIT) && RubyVM::MJIT.enabled?
9
9
  SHORT_TIMEOUT = (RUBY_ENGINE == "ruby" && !mjit_enabled) ? 0.1 : 1.0
10
10
 
11
11
  module IsTty
@@ -154,6 +154,10 @@ class TestGemVersion < Gem::TestCase
154
154
  assert_equal(-1, v("5.a") <=> v("5.0.0.rc2"))
155
155
  assert_equal(1, v("5.x") <=> v("5.0.0.rc2"))
156
156
 
157
+ assert_equal(0, v("1.9.3") <=> "1.9.3")
158
+ assert_equal(1, v("1.9.3") <=> "1.9.2.99")
159
+ assert_equal(-1, v("1.9.3") <=> "1.9.3.1")
160
+
157
161
  assert_nil v("1.0") <=> "whatever"
158
162
  end
159
163
 
@@ -135,10 +135,10 @@ class Gem::FakeFetcher
135
135
  def download(spec, source_uri, install_dir = Gem.dir)
136
136
  name = File.basename spec.cache_file
137
137
  path = if Dir.pwd == install_dir # see fetch_command
138
- install_dir
139
- else
140
- File.join install_dir, "cache"
141
- end
138
+ install_dir
139
+ else
140
+ File.join install_dir, "cache"
141
+ end
142
142
 
143
143
  path = File.join path, name
144
144