summaryrefslogtreecommitdiff
path: root/test/rubygems/test_gem_commands_setup_command.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/rubygems/test_gem_commands_setup_command.rb')
-rw-r--r--test/rubygems/test_gem_commands_setup_command.rb245
1 files changed, 134 insertions, 111 deletions
diff --git a/test/rubygems/test_gem_commands_setup_command.rb b/test/rubygems/test_gem_commands_setup_command.rb
index ab563b28ee..43f695f147 100644
--- a/test/rubygems/test_gem_commands_setup_command.rb
+++ b/test/rubygems/test_gem_commands_setup_command.rb
@@ -1,23 +1,24 @@
# frozen_string_literal: true
-require_relative 'helper'
-require 'rubygems/commands/setup_command'
+require_relative "helper"
+require "rubygems/commands/setup_command"
class TestGemCommandsSetupCommand < Gem::TestCase
- bundler_gemspec = File.expand_path('../../bundler/lib/bundler/version.rb', __dir__)
+ bundler_gemspec = File.expand_path("../../bundler/lib/bundler/version.rb", __dir__)
if File.exist?(bundler_gemspec)
BUNDLER_VERS = File.read(bundler_gemspec).match(/VERSION = "(#{Gem::Version::VERSION_PATTERN})"/)[1]
else
- BUNDLER_VERS = "2.0.1".freeze
+ BUNDLER_VERS = "2.0.1"
end
def setup
super
@cmd = Gem::Commands::SetupCommand.new
+ @cmd.options[:document] = []
filelist = %w[
- bin/gem
+ exe/gem
lib/rubygems.rb
lib/rubygems/requirement.rb
lib/rubygems/ssl_certs/rubygems.org/foo.pem
@@ -30,23 +31,20 @@ class TestGemCommandsSetupCommand < Gem::TestCase
bundler/lib/bundler/man/gemfile.5
bundler/lib/bundler/man/gemfile.5.ronn
bundler/lib/bundler/templates/.circleci/config.yml
- bundler/lib/bundler/templates/.travis.yml
]
create_dummy_files(filelist)
- gemspec = Gem::Specification.new
- gemspec.author = "Us"
- gemspec.name = "bundler"
- gemspec.version = BUNDLER_VERS
- gemspec.bindir = "exe"
- gemspec.executables = ["bundle", "bundler"]
+ gemspec = util_spec "bundler", BUNDLER_VERS do |s|
+ s.bindir = "exe"
+ s.executables = ["bundle", "bundler"]
+ end
- File.open 'bundler/bundler.gemspec', 'w' do |io|
+ File.open "bundler/bundler.gemspec", "w" do |io|
io.puts gemspec.to_ruby
end
- File.open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"), 'w') do |io|
+ File.open(File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec"), "w") do |io|
gemspec.version = "1.15.4"
io.puts gemspec.to_ruby
end
@@ -54,31 +52,29 @@ class TestGemCommandsSetupCommand < Gem::TestCase
spec_fetcher do |fetcher|
fetcher.download "bundler", "1.15.4"
- fetcher.gem "bundler", BUNDLER_VERS
+ fetcher.gem "bundler", bundler_version
fetcher.gem "bundler-audit", "1.0.0"
end
end
def test_execute_regenerate_binstubs
- gem_bin_path = gem_install 'a'
+ gem_bin_path = gem_install "a"
write_file gem_bin_path do |io|
- io.puts 'I changed it!'
+ io.puts "I changed it!"
end
- @cmd.options[:document] = []
@cmd.execute
- assert_match %r{\A#!}, File.read(gem_bin_path)
+ assert_match(/\A#!/, File.read(gem_bin_path))
end
def test_execute_no_regenerate_binstubs
- gem_bin_path = gem_install 'a'
+ gem_bin_path = gem_install "a"
write_file gem_bin_path do |io|
- io.puts 'I changed it!'
+ io.puts "I changed it!"
end
- @cmd.options[:document] = []
@cmd.options[:regenerate_binstubs] = false
@cmd.execute
@@ -86,24 +82,22 @@ class TestGemCommandsSetupCommand < Gem::TestCase
end
def test_execute_regenerate_plugins
- gem_plugin_path = gem_install_with_plugin 'a'
+ gem_plugin_path = gem_install_with_plugin "a"
write_file gem_plugin_path do |io|
- io.puts 'I changed it!'
+ io.puts "I changed it!"
end
- @cmd.options[:document] = []
@cmd.execute
- assert_match %r{\Arequire}, File.read(gem_plugin_path)
+ assert_match(/\Arequire/, File.read(gem_plugin_path))
end
def test_execute_no_regenerate_plugins
- gem_plugin_path = gem_install_with_plugin 'a'
+ gem_plugin_path = gem_install_with_plugin "a"
write_file gem_plugin_path do |io|
- io.puts 'I changed it!'
+ io.puts "I changed it!"
end
- @cmd.options[:document] = []
@cmd.options[:regenerate_plugins] = false
@cmd.execute
@@ -111,20 +105,17 @@ class TestGemCommandsSetupCommand < Gem::TestCase
end
def test_execute_regenerate_plugins_creates_plugins_dir_if_not_there
- gem_plugin_path = gem_install_with_plugin 'a'
+ gem_plugin_path = gem_install_with_plugin "a"
# Simulate gem installed with an older rubygems without a plugins layout
FileUtils.rm_rf Gem.plugindir
- @cmd.options[:document] = []
@cmd.execute
- assert_match %r{\Arequire}, File.read(gem_plugin_path)
+ assert_match(/\Arequire/, File.read(gem_plugin_path))
end
def test_execute_informs_about_installed_executables
- @cmd.options[:document] = []
-
use_ui @ui do
@cmd.execute
end
@@ -138,68 +129,63 @@ class TestGemCommandsSetupCommand < Gem::TestCase
end
def test_env_shebang_flag
- gem_bin_path = gem_install 'a'
+ gem_bin_path = gem_install "a"
write_file gem_bin_path do |io|
- io.puts 'I changed it!'
+ io.puts "I changed it!"
end
- @cmd.options[:document] = []
@cmd.options[:env_shebang] = true
@cmd.execute
- ruby_exec = sprintf Gem.default_exec_format, 'ruby'
+ ruby_exec = format Gem.default_exec_format, "ruby"
- bin_env = win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
- assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_gem_bin_path)
- assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_bundle_bin_path)
- assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(default_bundler_bin_path)
- assert_match %r{\A#!\s*#{bin_env}#{ruby_exec}}, File.read(gem_bin_path)
+ bin_env = Gem.win_platform? ? "" : %w[/usr/bin/env /bin/env].find {|f| File.executable?(f) } + " "
+ assert_match(/\A#!\s*#{bin_env}#{ruby_exec}/, File.read(default_gem_bin_path))
+ assert_match(/\A#!\s*#{bin_env}#{ruby_exec}/, File.read(default_bundle_bin_path))
+ assert_match(/\A#!\s*#{bin_env}#{ruby_exec}/, File.read(default_bundler_bin_path))
+ assert_match(/\A#!\s*#{bin_env}#{ruby_exec}/, File.read(gem_bin_path))
end
def test_destdir_flag_does_not_try_to_write_to_the_default_gem_home
FileUtils.chmod "-w", File.join(@gemhome, "plugins")
- destdir = File.join(@tempdir, 'foo')
+ destdir = File.join(@tempdir, "foo")
@cmd.options[:destdir] = destdir
@cmd.execute
- spec = Gem::Specification.load("bundler/bundler.gemspec")
-
- spec.executables.each do |e|
- assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e
+ bundler_spec.executables.each do |e|
+ assert_path_exist prepend_destdir(destdir, File.join(@gemhome, "gems", bundler_spec.full_name, bundler_spec.bindir, e))
end
end
def test_files_in
assert_equal %w[rubygems.rb rubygems/requirement.rb rubygems/ssl_certs/rubygems.org/foo.pem],
- @cmd.files_in('lib').sort
+ @cmd.files_in("lib").sort
end
def test_install_lib
@cmd.extend FileUtils
- Dir.mktmpdir 'lib' do |dir|
+ Dir.mktmpdir "lib" do |dir|
@cmd.install_lib dir
- assert_path_exist File.join(dir, 'rubygems.rb')
- assert_path_exist File.join(dir, 'rubygems/ssl_certs/rubygems.org/foo.pem')
+ assert_path_exist File.join(dir, "rubygems.rb")
+ assert_path_exist File.join(dir, "rubygems/ssl_certs/rubygems.org/foo.pem")
- assert_path_exist File.join(dir, 'bundler.rb')
- assert_path_exist File.join(dir, 'bundler/b.rb')
+ assert_path_exist File.join(dir, "bundler.rb")
+ assert_path_exist File.join(dir, "bundler/b.rb")
- assert_path_exist File.join(dir, 'bundler/templates/.circleci/config.yml')
- assert_path_exist File.join(dir, 'bundler/templates/.travis.yml')
+ assert_path_exist File.join(dir, "bundler/templates/.circleci/config.yml")
end
end
def test_install_default_bundler_gem
@cmd.extend FileUtils
- bin_dir = File.join(@gemhome, 'bin')
+ bin_dir = File.join(@gemhome, "bin")
@cmd.install_default_bundler_gem bin_dir
- bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
spec = Gem::Specification.load(default_spec_path)
@@ -211,32 +197,46 @@ class TestGemCommandsSetupCommand < Gem::TestCase
assert_path_exist File.join bin_dir, e
end
- default_dir = Gem.default_specifications_dir
-
# expect to remove other versions of bundler gemspecs on default specification directory.
- assert_path_not_exist File.join(default_dir, "bundler-1.15.4.gemspec")
- assert_path_exist File.join(default_dir, "bundler-#{BUNDLER_VERS}.gemspec")
+ assert_path_not_exist previous_bundler_specification_path
+ assert_path_exist new_bundler_specification_path
# expect to not remove bundler-* gemspecs.
assert_path_exist File.join(Gem.dir, "specifications", "bundler-audit-1.0.0.gemspec")
# expect to remove normal gem that was same version. because it's promoted default gems.
- assert_path_not_exist File.join(Gem.dir, "specifications", "bundler-#{BUNDLER_VERS}.gemspec")
+ assert_path_not_exist File.join(Gem.dir, "specifications", "bundler-#{bundler_version}.gemspec")
- assert_path_exist "#{Gem.dir}/gems/bundler-#{BUNDLER_VERS}"
+ assert_path_exist "#{Gem.dir}/gems/bundler-#{bundler_version}"
assert_path_exist "#{Gem.dir}/gems/bundler-1.15.4"
assert_path_exist "#{Gem.dir}/gems/bundler-audit-1.0.0"
end
+ def test_install_default_bundler_gem_with_default_gems_not_installed_at_default_dir
+ @cmd.extend FileUtils
+
+ gemhome2 = File.join(@tempdir, "gemhome2")
+ Gem.instance_variable_set(:@default_dir, gemhome2)
+
+ FileUtils.mkdir_p gemhome2
+ bin_dir = File.join(gemhome2, "bin")
+
+ @cmd.install_default_bundler_gem bin_dir
+
+ # expect to remove other versions of bundler gemspecs on default specification directory.
+ assert_path_not_exist previous_bundler_specification_path
+ assert_path_exist new_bundler_specification_path
+ end
+
def test_install_default_bundler_gem_with_force_flag
@cmd.extend FileUtils
- bin_dir = File.join(@gemhome, 'bin')
- bundle_bin = File.join(bin_dir, 'bundle')
+ bin_dir = File.join(@gemhome, "bin")
+ bundle_bin = File.join(bin_dir, "bundle")
write_file bundle_bin do |f|
- f.puts '#!/usr/bin/ruby'
- f.puts ''
+ f.puts "#!/usr/bin/ruby"
+ f.puts ""
f.puts 'echo "hello"'
end
@@ -244,7 +244,6 @@ class TestGemCommandsSetupCommand < Gem::TestCase
@cmd.install_default_bundler_gem bin_dir
- bundler_spec = Gem::Specification.load("bundler/bundler.gemspec")
default_spec_path = File.join(Gem.default_specifications_dir, "#{bundler_spec.full_name}.gemspec")
spec = Gem::Specification.load(default_spec_path)
@@ -262,17 +261,23 @@ class TestGemCommandsSetupCommand < Gem::TestCase
FileUtils.chmod "-w", @gemhome
- destdir = File.join(@tempdir, 'foo')
- bin_dir = File.join(destdir, 'bin')
+ destdir = File.join(@tempdir, "foo")
+ bin_dir = File.join(destdir, "bin")
@cmd.options[:destdir] = destdir
@cmd.install_default_bundler_gem bin_dir
- spec = Gem::Specification.load("bundler/bundler.gemspec")
+ # leaves other versions of bundler gemspecs on default specification directory.
+ assert_path_exist previous_bundler_specification_path
+ assert_path_not_exist new_bundler_specification_path
- spec.executables.each do |e|
- assert_path_exist File.join destdir, @gemhome.gsub(/^[a-zA-Z]:/, ''), 'gems', spec.full_name, spec.bindir, e
+ # installs the updated bundler gemspec to destdir
+ assert_path_not_exist prepend_destdir(destdir, previous_bundler_specification_path)
+ assert_path_exist prepend_destdir(destdir, new_bundler_specification_path)
+
+ bundler_spec.executables.each do |e|
+ assert_path_exist prepend_destdir(destdir, File.join(@gemhome, "gems", bundler_spec.full_name, bundler_spec.bindir, e))
end
ensure
FileUtils.chmod "+w", @gemhome
@@ -281,39 +286,37 @@ class TestGemCommandsSetupCommand < Gem::TestCase
def test_install_default_bundler_gem_with_destdir_and_prefix_flags
@cmd.extend FileUtils
- destdir = File.join(@tempdir, 'foo')
- bin_dir = File.join(destdir, 'bin')
+ destdir = File.join(@tempdir, "foo")
+ bin_dir = File.join(destdir, "bin")
@cmd.options[:destdir] = destdir
@cmd.options[:prefix] = "/"
@cmd.install_default_bundler_gem bin_dir
- spec = Gem::Specification.load("bundler/bundler.gemspec")
-
- spec.executables.each do |e|
- assert_path_exist File.join destdir, 'gems', spec.full_name, spec.bindir, e
+ bundler_spec.executables.each do |e|
+ assert_path_exist File.join destdir, "gems", bundler_spec.full_name, bundler_spec.bindir, e
end
end
def test_remove_old_lib_files
lib = RbConfig::CONFIG["sitelibdir"]
- lib_rubygems = File.join lib, 'rubygems'
- lib_bundler = File.join lib, 'bundler'
- lib_rubygems_defaults = File.join lib_rubygems, 'defaults'
- lib_bundler_templates = File.join lib_bundler, 'templates'
+ lib_rubygems = File.join lib, "rubygems"
+ lib_bundler = File.join lib, "bundler"
+ lib_rubygems_defaults = File.join lib_rubygems, "defaults"
+ lib_bundler_templates = File.join lib_bundler, "templates"
- securerandom_rb = File.join lib, 'securerandom.rb'
+ securerandom_rb = File.join lib, "securerandom.rb"
- engine_defaults_rb = File.join lib_rubygems_defaults, 'jruby.rb'
- os_defaults_rb = File.join lib_rubygems_defaults, 'operating_system.rb'
+ engine_defaults_rb = File.join lib_rubygems_defaults, "jruby.rb"
+ os_defaults_rb = File.join lib_rubygems_defaults, "operating_system.rb"
- old_gauntlet_rubygems_rb = File.join lib, 'gauntlet_rubygems.rb'
+ old_gauntlet_rubygems_rb = File.join lib, "gauntlet_rubygems.rb"
- old_builder_rb = File.join lib_rubygems, 'builder.rb'
- old_format_rb = File.join lib_rubygems, 'format.rb'
- old_bundler_c_rb = File.join lib_bundler, 'c.rb'
- old_bundler_ci = File.join lib_bundler_templates, '.lecacy_ci', 'config.yml'
+ old_builder_rb = File.join lib_rubygems, "builder.rb"
+ old_format_rb = File.join lib_rubygems, "format.rb"
+ old_bundler_c_rb = File.join lib_bundler, "c.rb"
+ old_bundler_ci = File.join lib_bundler_templates, ".lecacy_ci", "config.yml"
files_that_go = [old_gauntlet_rubygems_rb, old_builder_rb, old_format_rb, old_bundler_c_rb, old_bundler_ci]
files_that_stay = [securerandom_rb, engine_defaults_rb, os_defaults_rb]
@@ -328,15 +331,15 @@ class TestGemCommandsSetupCommand < Gem::TestCase
end
def test_remove_old_man_files
- man = File.join RbConfig::CONFIG['mandir'], 'man'
+ man = File.join RbConfig::CONFIG["mandir"], "man"
- ruby_1 = File.join man, 'man1', 'ruby.1'
- bundle_b_1 = File.join man, 'man1', 'bundle-b.1'
- bundle_b_1_ronn = File.join man, 'man1', 'bundle-b.1.ronn'
- bundle_b_1_txt = File.join man, 'man1', 'bundle-b.1.txt'
- gemfile_5 = File.join man, 'man5', 'gemfile.5'
- gemfile_5_ronn = File.join man, 'man5', 'gemfile.5.ronn'
- gemfile_5_txt = File.join man, 'man5', 'gemfile.5.txt'
+ ruby_1 = File.join man, "man1", "ruby.1"
+ bundle_b_1 = File.join man, "man1", "bundle-b.1"
+ bundle_b_1_ronn = File.join man, "man1", "bundle-b.1.ronn"
+ bundle_b_1_txt = File.join man, "man1", "bundle-b.1.txt"
+ gemfile_5 = File.join man, "man5", "gemfile.5"
+ gemfile_5_ronn = File.join man, "man5", "gemfile.5.ronn"
+ gemfile_5_txt = File.join man, "man5", "gemfile.5.txt"
files_that_go = [bundle_b_1, bundle_b_1_txt, bundle_b_1_ronn, gemfile_5, gemfile_5_txt, gemfile_5_ronn]
files_that_stay = [ruby_1]
@@ -354,9 +357,9 @@ class TestGemCommandsSetupCommand < Gem::TestCase
@default_external = @ui.outs.external_encoding
@ui.outs.set_encoding Encoding::US_ASCII
- @cmd.options[:previous_version] = Gem::Version.new '2.0.2'
+ @cmd.options[:previous_version] = Gem::Version.new "2.0.2"
- File.open 'CHANGELOG.md', 'w' do |io|
+ File.open "CHANGELOG.md", "w" do |io|
io.puts <<-HISTORY_TXT
# #{Gem::VERSION} / 2013-03-26
@@ -403,7 +406,7 @@ class TestGemCommandsSetupCommand < Gem::TestCase
list.each do |file|
FileUtils.mkdir_p File.dirname(file)
- File.open file, 'w' do |io|
+ File.open file, "w" do |io|
io.puts "# #{File.basename(file)}"
end
end
@@ -414,19 +417,19 @@ class TestGemCommandsSetupCommand < Gem::TestCase
s.executables = [name]
s.files = %W[bin/#{name}]
end
- write_file File.join @tempdir, 'bin', name do |f|
- f.puts '#!/usr/bin/ruby'
+ write_file File.join @tempdir, "bin", name do |f|
+ f.puts "#!/usr/bin/ruby"
end
install_gem gem
- File.join @gemhome, 'bin', name
+ File.join @gemhome, "bin", name
end
def gem_install_with_plugin(name)
gem = util_spec name do |s|
s.files = %W[lib/rubygems_plugin.rb]
end
- write_file File.join @tempdir, 'lib', 'rubygems_plugin.rb' do |f|
- f.puts "require '#{gem.plugins.first}'"
+ write_file File.join @tempdir, "lib", "rubygems_plugin.rb" do |f|
+ f.puts "# do nothing"
end
install_gem gem
@@ -434,14 +437,34 @@ class TestGemCommandsSetupCommand < Gem::TestCase
end
def default_gem_bin_path
- File.join RbConfig::CONFIG['bindir'], 'gem'
+ File.join RbConfig::CONFIG["bindir"], "gem"
end
def default_bundle_bin_path
- File.join RbConfig::CONFIG['bindir'], 'bundle'
+ File.join RbConfig::CONFIG["bindir"], "bundle"
end
def default_bundler_bin_path
- File.join RbConfig::CONFIG['bindir'], 'bundler'
+ File.join RbConfig::CONFIG["bindir"], "bundler"
+ end
+
+ def previous_bundler_specification_path
+ File.join(Gem.default_specifications_dir, "bundler-1.15.4.gemspec")
+ end
+
+ def new_bundler_specification_path
+ File.join(Gem.default_specifications_dir, "bundler-#{bundler_version}.gemspec")
+ end
+
+ def bundler_spec
+ Gem::Specification.load("bundler/bundler.gemspec")
+ end
+
+ def bundler_version
+ bundler_spec.version
+ end
+
+ def prepend_destdir(destdir, path)
+ File.join(destdir, path.gsub(/^[a-zA-Z]:/, ""))
end
end unless Gem.java_platform?