Skip to content

Commit

Permalink
Refactor reseting RUBYGEMS_GEMDEPS in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
deivid-rodriguez committed Aug 4, 2021
1 parent 320fdc1 commit 91dca11
Showing 1 changed file with 130 additions and 138 deletions.
268 changes: 130 additions & 138 deletions test/rubygems/test_gem.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ def setup

common_installer_setup

ENV.delete 'RUBYGEMS_GEMDEPS'
@additional = %w[a b].map {|d| File.join @tempdir, d }

util_remove_interrupt_command
Expand Down Expand Up @@ -663,24 +662,22 @@ def test_self_default_sources
end

def test_self_use_gemdeps
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'
with_rubygems_gemdeps('-') do
FileUtils.mkdir_p 'detect/a/b'
FileUtils.mkdir_p 'detect/a/Isolate'

FileUtils.mkdir_p 'detect/a/b'
FileUtils.mkdir_p 'detect/a/Isolate'
FileUtils.touch 'detect/Isolate'

FileUtils.touch 'detect/Isolate'

begin
Dir.chdir 'detect/a/b'
begin
Dir.chdir 'detect/a/b'

Gem.use_gemdeps
Gem.use_gemdeps

assert_equal add_bundler_full_name([]), loaded_spec_names
ensure
Dir.chdir @tempdir
assert_equal add_bundler_full_name([]), loaded_spec_names
ensure
Dir.chdir @tempdir
end
end
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
end

def test_self_dir
Expand Down Expand Up @@ -1690,11 +1687,11 @@ def test_auto_activation_of_specific_gemdeps_file
f.puts "gem 'c'"
end

ENV['RUBYGEMS_GEMDEPS'] = path

Gem.use_gemdeps
with_rubygems_gemdeps(path) do
Gem.use_gemdeps

assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
assert_equal add_bundler_full_name(%W[a-1 b-1 c-1]), loaded_spec_names
end
end

def test_auto_activation_of_used_gemdeps_file
Expand All @@ -1712,13 +1709,13 @@ def test_auto_activation_of_used_gemdeps_file
f.puts "gem 'c'"
end

ENV['RUBYGEMS_GEMDEPS'] = "-"

expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact.map(&:full_name)
with_rubygems_gemdeps("-") do
expected_specs = [a, b, util_spec("bundler", Bundler::VERSION), c].compact.map(&:full_name)

Gem.use_gemdeps
Gem.use_gemdeps

assert_equal expected_specs, loaded_spec_names
assert_equal expected_specs, loaded_spec_names
end
end

BUNDLER_LIB_PATH = File.expand_path $LOAD_PATH.find {|lp| File.file?(File.join(lp, "bundler.rb")) }
Expand Down Expand Up @@ -1753,29 +1750,30 @@ def test_looks_for_gemdeps_files_automatically_from_binstubs
install_gem c, :install_dir => path

ENV['GEM_PATH'] = path
ENV['RUBYGEMS_GEMDEPS'] = "-"

new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
with_rubygems_gemdeps("-") do
new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"

path = File.join @tempdir, "gem.deps.rb"
path = File.join @tempdir, "gem.deps.rb"

File.open path, "w" do |f|
f.puts "gem 'a'"
end
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", &:read).split(/\n/)
end
File.open path, "w" do |f|
f.puts "gem 'a'"
end
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", &:read).split(/\n/)
end

File.open path, "a" do |f|
f.puts "gem 'b'"
f.puts "gem 'c'"
end
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", &:read).split(/\n/)
end
File.open path, "a" do |f|
f.puts "gem 'b'"
f.puts "gem 'c'"
end
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", &:read).split(/\n/)
end

assert_equal ["b-1", "c-1"], out - out0
assert_equal ["b-1", "c-1"], out - out0
end
end

def test_looks_for_gemdeps_files_automatically_from_binstubs_in_parent_dir
Expand All @@ -1801,33 +1799,34 @@ def test_looks_for_gemdeps_files_automatically_from_binstubs_in_parent_dir
install_gem c, :install_dir => path

ENV['GEM_PATH'] = path
ENV['RUBYGEMS_GEMDEPS'] = "-"

Dir.mkdir "sub1"
with_rubygems_gemdeps("-") do
Dir.mkdir "sub1"

new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"
new_PATH = [File.join(path, "bin"), ENV["PATH"]].join(File::PATH_SEPARATOR)
new_RUBYOPT = "-I#{rubygems_path} -I#{BUNDLER_LIB_PATH}"

path = File.join @tempdir, "gem.deps.rb"
path = File.join @tempdir, "gem.deps.rb"

File.open path, "w" do |f|
f.puts "gem 'a'"
end
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
end
File.open path, "w" do |f|
f.puts "gem 'a'"
end
out0 = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
end

File.open path, "a" do |f|
f.puts "gem 'b'"
f.puts "gem 'c'"
end
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
end
File.open path, "a" do |f|
f.puts "gem 'b'"
f.puts "gem 'c'"
end
out = with_path_and_rubyopt(new_PATH, new_RUBYOPT) do
IO.popen("foo", :chdir => "sub1", &:read).split(/\n/)
end

Dir.rmdir "sub1"
Dir.rmdir "sub1"

assert_equal ["b-1", "c-1"], out - out0
assert_equal ["b-1", "c-1"], out - out0
end
end

def test_register_default_spec
Expand Down Expand Up @@ -1891,21 +1890,19 @@ def test_use_gemdeps
end

def test_use_gemdeps_ENV
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], nil

spec = util_spec 'a', 1
with_rubygems_gemdeps(nil) do
spec = util_spec 'a', 1

refute spec.activated?
refute spec.activated?

File.open 'gem.deps.rb', 'w' do |io|
io.write 'gem "a"'
end
File.open 'gem.deps.rb', 'w' do |io|
io.write 'gem "a"'
end

Gem.use_gemdeps
Gem.use_gemdeps

refute spec.activated?
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
refute spec.activated?
end
end

def test_use_gemdeps_argument_missing
Expand All @@ -1918,109 +1915,96 @@ def test_use_gemdeps_argument_missing
end

def test_use_gemdeps_argument_missing_match_ENV
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] =
ENV['RUBYGEMS_GEMDEPS'], 'gem.deps.rb'
with_rubygems_gemdeps('gem.deps.rb') do
e = assert_raise ArgumentError do
Gem.use_gemdeps 'gem.deps.rb'
end

e = assert_raise ArgumentError do
Gem.use_gemdeps 'gem.deps.rb'
assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
e.message
end

assert_equal 'Unable to find gem dependencies file at gem.deps.rb',
e.message
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
end

def test_use_gemdeps_automatic
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'

spec = util_spec 'a', 1
install_specs spec
spec = Gem::Specification.find {|s| s == spec }
with_rubygems_gemdeps('-') do
spec = util_spec 'a', 1
install_specs spec
spec = Gem::Specification.find {|s| s == spec }

refute spec.activated?
refute spec.activated?

File.open 'Gemfile', 'w' do |io|
io.write 'gem "a"'
end
File.open 'Gemfile', 'w' do |io|
io.write 'gem "a"'
end

Gem.use_gemdeps
Gem.use_gemdeps

assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
end
end

def test_use_gemdeps_automatic_missing
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], '-'

Gem.use_gemdeps
with_rubygems_gemdeps('-') do
Gem.use_gemdeps

assert true # count
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
assert true # count
end
end

def test_use_gemdeps_disabled
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], ''
with_rubygems_gemdeps('') do
spec = util_spec 'a', 1

spec = util_spec 'a', 1
refute spec.activated?

refute spec.activated?

File.open 'gem.deps.rb', 'w' do |io|
io.write 'gem "a"'
end
File.open 'gem.deps.rb', 'w' do |io|
io.write 'gem "a"'
end

Gem.use_gemdeps
Gem.use_gemdeps

refute spec.activated?
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
refute spec.activated?
end
end

def test_use_gemdeps_missing_gem
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'

File.open 'x', 'w' do |io|
io.write 'gem "a"'
end
with_rubygems_gemdeps('x') do
File.open 'x', 'w' do |io|
io.write 'gem "a"'
end

expected = <<-EXPECTED
expected = <<-EXPECTED
Could not find gem 'a' in locally installed gems.
You may need to `gem install -g` to install missing gems
EXPECTED
EXPECTED

Gem::Deprecate.skip_during do
actual_stdout, actual_stderr = capture_output do
Gem.use_gemdeps
Gem::Deprecate.skip_during do
actual_stdout, actual_stderr = capture_output do
Gem.use_gemdeps
end
assert_empty actual_stdout
assert_equal(expected, actual_stderr)
end
assert_empty actual_stdout
assert_equal(expected, actual_stderr)
end
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
end

def test_use_gemdeps_specific
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], 'x'
with_rubygems_gemdeps('x') do
spec = util_spec 'a', 1
install_specs spec

spec = util_spec 'a', 1
install_specs spec

spec = Gem::Specification.find {|s| s == spec }
refute spec.activated?
spec = Gem::Specification.find {|s| s == spec }
refute spec.activated?

File.open 'x', 'w' do |io|
io.write 'gem "a"'
end
File.open 'x', 'w' do |io|
io.write 'gem "a"'
end

Gem.use_gemdeps
Gem.use_gemdeps

assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
assert_equal add_bundler_full_name(%W[a-1]), loaded_spec_names
end
end

def test_operating_system_defaults
Expand Down Expand Up @@ -2148,4 +2132,12 @@ def with_path_and_rubyopt(path_value, rubyopt_value)
ENV['PATH'] = path
ENV['RUBYOPT'] = rubyopt
end

def with_rubygems_gemdeps(value)
rubygems_gemdeps, ENV['RUBYGEMS_GEMDEPS'] = ENV['RUBYGEMS_GEMDEPS'], value

yield
ensure
ENV['RUBYGEMS_GEMDEPS'] = rubygems_gemdeps
end
end

0 comments on commit 91dca11

Please sign in to comment.