mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 b957c3dbcb
			
		
	
	
		b957c3dbcb
		
	
	
	
	
		
			
			This changes "test/rubygems/test_case.rb" to "test/rubygems/helper.rb", and "test/rubygems/test_utilities.rb" to "test/rubygems/utilities.rb". The two files are a helper for tests, not test files. However, a file starting with "test_" prefix is handled as a test file directly loaded by test-unit because Rakefile specifies: ``` t.test_files = FileList['test/**/test_*.rb'] ``` Directly loading test/rubygems/test_utilities.rb caused "uninitialized constant Gem::TestCase". This issue was fixed by59c6820971, but the fix caused a "circular require" warning because test_utilities.rb and test_case.rb are now requiring each other. Anyway, adding "test_" prefix to a test helper file is confusing, so this changeset reverts the fix and solve the issue by renaming them.6460e018df
		
			
				
	
	
		
			264 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			264 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| require_relative 'helper'
 | |
| require 'rubygems/dependency_list'
 | |
| 
 | |
| class TestGemDependencyList < Gem::TestCase
 | |
|   def setup
 | |
|     super
 | |
| 
 | |
|     @deplist = Gem::DependencyList.new
 | |
| 
 | |
|     # TODO: switch to util_spec
 | |
|     @a1 = util_spec 'a', '1'
 | |
|     @a2 = util_spec 'a', '2'
 | |
|     @a3 = util_spec 'a', '3'
 | |
| 
 | |
|     @b1 = util_spec 'b', '1' do |s|
 | |
|       s.add_dependency 'a', '>= 1'
 | |
|     end
 | |
| 
 | |
|     @b2 = util_spec 'b', '2' do |s|
 | |
|       s.add_dependency 'a', '>= 1'
 | |
|     end
 | |
| 
 | |
|     @c1 = util_spec 'c', '1' do |s|
 | |
|       s.add_dependency 'b', '>= 1'
 | |
|     end
 | |
| 
 | |
|     @c2 = util_spec 'c', '2'
 | |
| 
 | |
|     @d1 = util_spec 'd', '1' do |s|
 | |
|       s.add_dependency 'c', '>= 1'
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def test_active_count
 | |
|     assert_equal 0, @deplist.send(:active_count, [], {})
 | |
|     assert_equal 1, @deplist.send(:active_count, [@a1], {})
 | |
|     assert_equal 0, @deplist.send(:active_count, [@a1],
 | |
|                                   { @a1.full_name => true })
 | |
|   end
 | |
| 
 | |
|   def test_add
 | |
|     assert_equal [], @deplist.dependency_order
 | |
| 
 | |
|     @deplist.add @a1, @b2
 | |
| 
 | |
|     assert_equal [@b2, @a1], @deplist.dependency_order
 | |
|   end
 | |
| 
 | |
|   def test_dependency_order
 | |
|     @deplist.add @a1, @b1, @c1, @d1
 | |
| 
 | |
|     order = @deplist.dependency_order
 | |
| 
 | |
|     assert_equal %w[d-1 c-1 b-1 a-1], order.map {|s| s.full_name }
 | |
|   end
 | |
| 
 | |
|   def test_dependency_order_circle
 | |
|     @a1.add_dependency 'c', '>= 1'
 | |
|     @deplist.add @a1, @b1, @c1
 | |
| 
 | |
|     order = @deplist.dependency_order
 | |
| 
 | |
|     assert_equal %w[b-1 c-1 a-1], order.map {|s| s.full_name }
 | |
|   end
 | |
| 
 | |
|   def test_dependency_order_development
 | |
|     e1 = util_spec 'e', '1'
 | |
|     f1 = util_spec 'f', '1'
 | |
|     g1 = util_spec 'g', '1'
 | |
| 
 | |
|     @a1.add_dependency 'e'
 | |
|     @a1.add_dependency 'f'
 | |
|     @a1.add_dependency 'g'
 | |
|     g1.add_development_dependency 'a'
 | |
| 
 | |
|     deplist = Gem::DependencyList.new true
 | |
|     deplist.add @a1, e1, f1, g1
 | |
| 
 | |
|     order = deplist.dependency_order
 | |
| 
 | |
|     assert_equal %w[g-1 a-1 f-1 e-1], order.map {|s| s.full_name },
 | |
|                  'development on'
 | |
| 
 | |
|     deplist2 = Gem::DependencyList.new
 | |
|     deplist2.add @a1, e1, f1, g1
 | |
| 
 | |
|     order = deplist2.dependency_order
 | |
| 
 | |
|     assert_equal %w[a-1 g-1 f-1 e-1], order.map {|s| s.full_name },
 | |
|                  'development off'
 | |
|   end
 | |
| 
 | |
|   def test_dependency_order_diamond
 | |
|     util_diamond
 | |
|     e1 = util_spec 'e', '1'
 | |
|     @deplist.add e1
 | |
|     @a1.add_dependency 'e', '>= 1'
 | |
| 
 | |
|     order = @deplist.dependency_order
 | |
| 
 | |
|     assert_equal %w[d-1 c-2 b-1 a-2 e-1], order.map {|s| s.full_name },
 | |
|                  'deps of trimmed specs not included'
 | |
|   end
 | |
| 
 | |
|   def test_dependency_order_no_dependencies
 | |
|     @deplist.add @a1, @c2
 | |
| 
 | |
|     order = @deplist.dependency_order
 | |
| 
 | |
|     assert_equal %w[c-2 a-1], order.map {|s| s.full_name }
 | |
|   end
 | |
| 
 | |
|   def test_find_name
 | |
|     @deplist.add @a1, @b2
 | |
| 
 | |
|     assert_equal "a-1", @deplist.find_name("a-1").full_name
 | |
|     assert_equal "b-2", @deplist.find_name("b-2").full_name
 | |
| 
 | |
|     assert_nil @deplist.find_name("c-2")
 | |
|   end
 | |
| 
 | |
|   def test_ok_eh
 | |
|     assert @deplist.ok?, 'no dependencies'
 | |
| 
 | |
|     @deplist.add @b2
 | |
| 
 | |
|     refute @deplist.ok?, 'unsatisfied dependency'
 | |
| 
 | |
|     @deplist.add @a1
 | |
| 
 | |
|     assert @deplist.ok?, 'satisfied dependency'
 | |
|   end
 | |
| 
 | |
|   def test_why_not_ok_eh
 | |
|     assert_equal({}, @deplist.why_not_ok?)
 | |
| 
 | |
|     @deplist.add @b2
 | |
| 
 | |
|     exp = {
 | |
|       "b" => [
 | |
|         Gem::Dependency.new("a", ">= 1"),
 | |
|       ],
 | |
|     }
 | |
| 
 | |
|     assert_equal exp, @deplist.why_not_ok?
 | |
|   end
 | |
| 
 | |
|   def test_why_not_ok_eh_old_dependency
 | |
|     a  = util_spec 'a', '1',
 | |
|                   'b' => '~> 1.0'
 | |
| 
 | |
|     b0 = util_spec 'b', '1.0',
 | |
|                   'd' => '>= 0'
 | |
| 
 | |
|     b1 = util_spec 'b', '1.1'
 | |
| 
 | |
|     util_clear_gems
 | |
| 
 | |
|     @deplist.clear
 | |
| 
 | |
|     @deplist.add a, b0, b1
 | |
| 
 | |
|     assert_equal({}, @deplist.why_not_ok?)
 | |
|   end
 | |
| 
 | |
|   def test_ok_eh_mismatch
 | |
|     a1 = util_spec 'a', '1'
 | |
|     a2 = util_spec 'a', '2'
 | |
| 
 | |
|     b = util_spec 'b', '1' do |s|
 | |
|       s.add_dependency 'a', '= 1'
 | |
|     end
 | |
| 
 | |
|     c = util_spec 'c', '1' do |s|
 | |
|       s.add_dependency 'a', '= 2'
 | |
|     end
 | |
| 
 | |
|     d = util_spec 'd', '1' do |s|
 | |
|       s.add_dependency 'b'
 | |
|       s.add_dependency 'c'
 | |
|     end
 | |
| 
 | |
|     @deplist.add a1, a2, b, c, d
 | |
| 
 | |
|     assert @deplist.ok?, 'this will break on require'
 | |
|   end
 | |
| 
 | |
|   def test_ok_eh_redundant
 | |
|     @deplist.add @a1, @a3, @b2
 | |
| 
 | |
|     @deplist.remove_by_name("a-1")
 | |
| 
 | |
|     assert @deplist.ok?
 | |
|   end
 | |
| 
 | |
|   def test_ok_to_remove_eh
 | |
|     @deplist.add @a1
 | |
| 
 | |
|     assert @deplist.ok_to_remove?("a-1")
 | |
| 
 | |
|     @deplist.add @b2
 | |
| 
 | |
|     refute @deplist.ok_to_remove?("a-1")
 | |
| 
 | |
|     @deplist.add @a2
 | |
| 
 | |
|     assert @deplist.ok_to_remove?("a-1")
 | |
|     assert @deplist.ok_to_remove?("a-2")
 | |
|     assert @deplist.ok_to_remove?("b-2")
 | |
|   end
 | |
| 
 | |
|   def test_ok_to_remove_eh_after_sibling_removed
 | |
|     @deplist.add @a1, @a2, @b2
 | |
| 
 | |
|     assert @deplist.ok_to_remove?("a-1")
 | |
|     assert @deplist.ok_to_remove?("a-2")
 | |
| 
 | |
|     @deplist.remove_by_name("a-1")
 | |
| 
 | |
|     refute @deplist.ok_to_remove?("a-2")
 | |
|   end
 | |
| 
 | |
|   def test_remove_by_name
 | |
|     @deplist.add @a1, @b2
 | |
| 
 | |
|     @deplist.remove_by_name "a-1"
 | |
| 
 | |
|     refute @deplist.ok?
 | |
|   end
 | |
| 
 | |
|   def test_tsort_each_node
 | |
|     util_diamond
 | |
| 
 | |
|     order = %w[a-1 a-2 b-1 c-2 d-1]
 | |
| 
 | |
|     @deplist.tsort_each_node do |node|
 | |
|       assert_equal order.shift, node.full_name
 | |
|     end
 | |
| 
 | |
|     assert_empty order
 | |
|   end
 | |
| 
 | |
|   def test_tsort_each_child
 | |
|     util_diamond
 | |
| 
 | |
|     order = %w[a-2]
 | |
| 
 | |
|     @deplist.tsort_each_child(@b1) do |node|
 | |
|       assert_equal order.shift, node.full_name
 | |
|     end
 | |
| 
 | |
|     assert_empty order
 | |
|   end
 | |
| 
 | |
|   # d1 -> b1 -> a1
 | |
|   # d1 -> c2 -> a2
 | |
|   def util_diamond
 | |
|     @c2.add_dependency 'a', '>= 2'
 | |
|     @d1.add_dependency 'b'
 | |
| 
 | |
|     @deplist.add @a1, @a2, @b1, @c2, @d1
 | |
|   end
 | |
| end
 |