mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 a21d403f21
			
		
	
	
		a21d403f21
		
	
	
	
	
		
			
			It supports to enable frozen string literal and add `--norc` option for
  disable to `.gemrc` configuration.
  See 2.5.2 release notes for other fixes and enhancements.
  a8aa3bac72/History.txt (L3)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53707 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
	
			
		
			
				
	
	
		
			251 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| require 'rubygems/test_case'
 | |
| require 'rubygems/commands/specification_command'
 | |
| 
 | |
| class TestGemCommandsSpecificationCommand < Gem::TestCase
 | |
| 
 | |
|   def setup
 | |
|     super
 | |
| 
 | |
|     @cmd = Gem::Commands::SpecificationCommand.new
 | |
|   end
 | |
| 
 | |
|   def test_execute
 | |
|     foo = util_spec 'foo'
 | |
| 
 | |
|     install_specs foo
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
|     assert_equal '', @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_all
 | |
|     install_specs util_spec 'foo', '0.0.1'
 | |
|     install_specs util_spec 'foo', '0.0.2'
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:all] = true
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
|     assert_match %r|version: 0.0.1|, @ui.output
 | |
|     assert_match %r|version: 0.0.2|, @ui.output
 | |
|     assert_equal '', @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_all_conflicts_with_version
 | |
|     util_spec 'foo', '0.0.1'
 | |
|     util_spec 'foo', '0.0.2'
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:all] = true
 | |
|     @cmd.options[:version] = "1"
 | |
| 
 | |
|     assert_raises Gem::MockGemUi::TermError do
 | |
|       use_ui @ui do
 | |
|         @cmd.execute
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     assert_equal '', @ui.output
 | |
|     assert_equal "ERROR:  Specify --all or -v, not both\n", @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_bad_name
 | |
|     @cmd.options[:args] = %w[foo]
 | |
| 
 | |
|     assert_raises Gem::MockGemUi::TermError do
 | |
|       use_ui @ui do
 | |
|         @cmd.execute
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     assert_equal '', @ui.output
 | |
|     assert_equal "ERROR:  No gem matching 'foo (>= 0)' found\n", @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_bad_name_with_version
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:version] = "1.3.2"
 | |
| 
 | |
|     assert_raises Gem::MockGemUi::TermError do
 | |
|       use_ui @ui do
 | |
|         @cmd.execute
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     assert_equal '', @ui.output
 | |
|     assert_equal "ERROR:  No gem matching 'foo (= 1.3.2)' found\n", @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_exact_match
 | |
|     install_specs util_spec 'foo'
 | |
|     install_specs util_spec 'foo_bar'
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
|     assert_equal '', @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_field
 | |
|     foo = new_spec 'foo', '2'
 | |
| 
 | |
|     install_specs foo
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo name]
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_equal "foo", YAML.load(@ui.output)
 | |
|   end
 | |
| 
 | |
|   def test_execute_file
 | |
|     foo = util_spec 'foo' do |s|
 | |
|       s.files = %w[lib/code.rb]
 | |
|     end
 | |
| 
 | |
|     util_build_gem foo
 | |
| 
 | |
|     @cmd.options[:args] = [foo.cache_file]
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
|     assert_equal '', @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_marshal
 | |
|     foo = new_spec 'foo', '2'
 | |
| 
 | |
|     install_specs foo
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:format] = :marshal
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_equal foo, Marshal.load(@ui.output)
 | |
|     assert_equal '', @ui.error
 | |
|   end
 | |
| 
 | |
|   def test_execute_remote
 | |
|     spec_fetcher do |fetcher|
 | |
|       fetcher.spec 'foo', 1
 | |
|     end
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:domain] = :remote
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|\A--- !ruby/object:Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
|   end
 | |
| 
 | |
|   def test_execute_remote_with_version
 | |
|     spec_fetcher do |fetcher|
 | |
|       fetcher.spec 'foo', "1"
 | |
|       fetcher.spec 'foo', "2"
 | |
|     end
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:version] = "1"
 | |
|     @cmd.options[:domain] = :remote
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     spec = Gem::Specification.from_yaml @ui.output
 | |
| 
 | |
|     assert_equal Gem::Version.new("1"), spec.version
 | |
|   end
 | |
| 
 | |
|   def test_execute_remote_without_prerelease
 | |
|     spec_fetcher do |fetcher|
 | |
|       fetcher.spec 'foo', '2.0.0'
 | |
|       fetcher.spec 'foo', '2.0.1.pre'
 | |
|     end
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:domain] = :remote
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|\A--- !ruby/object:Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
| 
 | |
|     spec = YAML.load @ui.output
 | |
| 
 | |
|     assert_equal Gem::Version.new("2.0.0"), spec.version
 | |
|   end
 | |
| 
 | |
|   def test_execute_remote_with_prerelease
 | |
|     spec_fetcher do |fetcher|
 | |
|       fetcher.spec 'foo', '2.0.0'
 | |
|       fetcher.spec 'foo', '2.0.1.pre'
 | |
|     end
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:domain] = :remote
 | |
|     @cmd.options[:prerelease] = true
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|\A--- !ruby/object:Gem::Specification|, @ui.output
 | |
|     assert_match %r|name: foo|, @ui.output
 | |
| 
 | |
|     spec = YAML.load @ui.output
 | |
| 
 | |
|     assert_equal Gem::Version.new("2.0.1.pre"), spec.version
 | |
|   end
 | |
| 
 | |
|   def test_execute_ruby
 | |
|     foo = util_spec 'foo'
 | |
| 
 | |
|     install_specs foo
 | |
| 
 | |
|     @cmd.options[:args] = %w[foo]
 | |
|     @cmd.options[:format] = :ruby
 | |
| 
 | |
|     use_ui @ui do
 | |
|       @cmd.execute
 | |
|     end
 | |
| 
 | |
|     assert_match %r|Gem::Specification.new|, @ui.output
 | |
|     assert_match %r|s.name = "foo"|, @ui.output
 | |
|     assert_equal '', @ui.error
 | |
|   end
 | |
| 
 | |
| end
 | |
| 
 |