From 0dc342de848a642ecce8db697b8fecd83a63e117 Mon Sep 17 00:00:00 2001 From: yugui Date: Mon, 25 Aug 2008 15:02:05 +0000 Subject: added tag v1_9_0_4 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_0_4@18845 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- .../test_gem_commands_dependency_command.rb | 227 +++++++++++++++++++++ 1 file changed, 227 insertions(+) create mode 100644 trunk/test/rubygems/test_gem_commands_dependency_command.rb (limited to 'trunk/test/rubygems/test_gem_commands_dependency_command.rb') diff --git a/trunk/test/rubygems/test_gem_commands_dependency_command.rb b/trunk/test/rubygems/test_gem_commands_dependency_command.rb new file mode 100644 index 0000000000..e143110a71 --- /dev/null +++ b/trunk/test/rubygems/test_gem_commands_dependency_command.rb @@ -0,0 +1,227 @@ +require 'test/unit' +require File.join(File.expand_path(File.dirname(__FILE__)), '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_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_raise 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_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_raise 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["#{@gem_repo}latest_specs.#{Gem.marshal_version}.gz"] = nil + + 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 + -- cgit v1.2.3