/test/rubygems/test_gem_commands_dependency_command.rb
Ruby | 230 lines | 159 code | 71 blank | 0 comment | 1 complexity | cb64fb0ad5c162ea02379fd76ab7cc12 MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-3.0, GPL-2.0, BSD-3-Clause
- require_relative 'gemutilities'
- require 'rubygems/commands/dependency_command'
- class TestGemCommandsDependencyCommand < RubyGemTestCase
- def setup
- super
- @cmd = Gem::Commands::DependencyCommand.new
- @cmd.options[:domain] = :local
- util_setup_fake_fetcher
- end
- def test_execute
- quick_gem 'foo' do |gem|
- gem.add_dependency 'bar', '> 1'
- end
- Gem.source_index = nil
- @cmd.options[:args] = %w[foo]
- use_ui @ui do
- @cmd.execute
- end
- assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_no_args
- Gem.source_index = nil
- @cmd.options[:args] = []
- use_ui @ui do
- @cmd.execute
- end
- expected = <<-EOF
- Gem a-1
- Gem a-2
- Gem a-3.a
- Gem a_evil-9
- Gem b-2
- Gem c-1.2
- Gem pl-1-x86-linux
- EOF
- assert_equal expected, @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_no_match
- @cmd.options[:args] = %w[foo]
- assert_raises MockGemUi::TermError do
- use_ui @ui do
- @cmd.execute
- end
- end
- assert_equal "No gems found matching foo (>= 0)\n", @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_pipe_format
- quick_gem 'foo' do |gem|
- gem.add_dependency 'bar', '> 1'
- end
- @cmd.options[:args] = %w[foo]
- @cmd.options[:pipe_format] = true
- use_ui @ui do
- @cmd.execute
- end
- assert_equal "bar --version '> 1'\n", @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_regexp
- Gem.source_index = nil
- @cmd.options[:args] = %w[/[ab]/]
- use_ui @ui do
- @cmd.execute
- end
- expected = <<-EOF
- Gem a-1
- Gem a-2
- Gem a-3.a
- Gem a_evil-9
- Gem b-2
- EOF
- assert_equal expected, @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_reverse
- quick_gem 'foo' do |gem|
- gem.add_dependency 'bar', '> 1'
- end
- quick_gem 'baz' do |gem|
- gem.add_dependency 'foo'
- end
- Gem.source_index = nil
- @cmd.options[:args] = %w[foo]
- @cmd.options[:reverse_dependencies] = true
- use_ui @ui do
- @cmd.execute
- end
- expected = <<-EOF
- Gem foo-2
- bar (> 1, runtime)
- Used by
- baz-2 (foo (>= 0, runtime))
- EOF
- assert_equal expected, @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_reverse_remote
- @cmd.options[:args] = %w[foo]
- @cmd.options[:reverse_dependencies] = true
- @cmd.options[:domain] = :remote
- assert_raises MockGemUi::TermError do
- use_ui @ui do
- @cmd.execute
- end
- end
- expected = <<-EOF
- ERROR: Only reverse dependencies for local gems are supported.
- EOF
- assert_equal '', @ui.output
- assert_equal expected, @ui.error
- end
- def test_execute_remote
- foo = quick_gem 'foo' do |gem|
- gem.add_dependency 'bar', '> 1'
- end
- @fetcher = Gem::FakeFetcher.new
- Gem::RemoteFetcher.fetcher = @fetcher
- util_setup_spec_fetcher foo
- FileUtils.rm File.join(@gemhome, 'specifications',
- "#{foo.full_name}.gemspec")
- @cmd.options[:args] = %w[foo]
- @cmd.options[:domain] = :remote
- use_ui @ui do
- @cmd.execute
- end
- assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
- assert_equal '', @ui.error
- end
- def test_execute_remote_legacy
- foo = quick_gem 'foo' do |gem|
- gem.add_dependency 'bar', '> 1'
- end
- @fetcher = Gem::FakeFetcher.new
- Gem::RemoteFetcher.fetcher = @fetcher
- Gem::SpecFetcher.fetcher = nil
- si = util_setup_source_info_cache foo
- @fetcher.data["#{@gem_repo}yaml"] = YAML.dump si
- @fetcher.data["#{@gem_repo}Marshal.#{Gem.marshal_version}"] =
- si.dump
- @fetcher.data.delete "#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"
- FileUtils.rm File.join(@gemhome, 'specifications',
- "#{foo.full_name}.gemspec")
- @cmd.options[:args] = %w[foo]
- @cmd.options[:domain] = :remote
- use_ui @ui do
- @cmd.execute
- end
- assert_equal "Gem foo-2\n bar (> 1, runtime)\n\n", @ui.output
- expected = <<-EOF
- WARNING: RubyGems 1.2+ index not found for:
- \t#{@gem_repo}
- RubyGems will revert to legacy indexes degrading performance.
- EOF
- assert_equal expected, @ui.error
- end
- end