mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* lib/rake: Import Rake 0.9.2
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32217 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									3fbc9440fe
								
							
						
					
					
						commit
						d001539a05
					
				
					 119 changed files with 6777 additions and 4774 deletions
				
			
		
							
								
								
									
										162
									
								
								test/rake/test_rake_task_with_arguments.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										162
									
								
								test/rake/test_rake_task_with_arguments.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,162 @@
 | 
			
		|||
require File.expand_path('../helper', __FILE__)
 | 
			
		||||
 | 
			
		||||
class TestRakeTaskWithArguments < Rake::TestCase
 | 
			
		||||
  include Rake
 | 
			
		||||
 | 
			
		||||
  def setup
 | 
			
		||||
    super
 | 
			
		||||
 | 
			
		||||
    Task.clear
 | 
			
		||||
    Rake::TaskManager.record_task_metadata = true
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def teardown
 | 
			
		||||
    Rake::TaskManager.record_task_metadata = false
 | 
			
		||||
 | 
			
		||||
    super
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_no_args_given
 | 
			
		||||
    t = task :t
 | 
			
		||||
    assert_equal [], t.arg_names
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_args_given
 | 
			
		||||
    t = task :t, :a, :b
 | 
			
		||||
    assert_equal [:a, :b], t.arg_names
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_name_and_needs
 | 
			
		||||
    t = task(:t => [:pre])
 | 
			
		||||
    assert_equal "t", t.name
 | 
			
		||||
    assert_equal [], t.arg_names
 | 
			
		||||
    assert_equal ["pre"], t.prerequisites
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_name_args_and_explicit_needs
 | 
			
		||||
    ignore_deprecations do
 | 
			
		||||
      t = task(:t, :x, :y, :needs => [:pre])
 | 
			
		||||
      assert_equal "t", t.name
 | 
			
		||||
      assert_equal [:x, :y], t.arg_names
 | 
			
		||||
      assert_equal ["pre"], t.prerequisites
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_illegal_keys_in_task_name_hash
 | 
			
		||||
    ignore_deprecations do
 | 
			
		||||
      assert_raises RuntimeError do
 | 
			
		||||
        t = task(:t, :x, :y => 1, :needs => [:pre])
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_arg_list_is_empty_if_no_args_given
 | 
			
		||||
    t = task(:t) { |tt, args| assert_equal({}, args.to_hash) }
 | 
			
		||||
    t.invoke(1, 2, 3)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_tasks_can_access_arguments_as_hash
 | 
			
		||||
    t = task :t, :a, :b, :c do |tt, args|
 | 
			
		||||
      assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash)
 | 
			
		||||
      assert_equal 1, args[:a]
 | 
			
		||||
      assert_equal 2, args[:b]
 | 
			
		||||
      assert_equal 3, args[:c]
 | 
			
		||||
      assert_equal 1, args.a
 | 
			
		||||
      assert_equal 2, args.b
 | 
			
		||||
      assert_equal 3, args.c
 | 
			
		||||
    end
 | 
			
		||||
    t.invoke(1, 2, 3)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_actions_of_various_arity_are_ok_with_args
 | 
			
		||||
    notes = []
 | 
			
		||||
    t = task(:t, :x) do
 | 
			
		||||
      notes << :a
 | 
			
		||||
    end
 | 
			
		||||
    t.enhance do | |
 | 
			
		||||
      notes << :b
 | 
			
		||||
    end
 | 
			
		||||
    t.enhance do |task|
 | 
			
		||||
      notes << :c
 | 
			
		||||
      assert_kind_of Task, task
 | 
			
		||||
    end
 | 
			
		||||
    t.enhance do |t2, args|
 | 
			
		||||
      notes << :d
 | 
			
		||||
      assert_equal t, t2
 | 
			
		||||
      assert_equal({:x => 1}, args.to_hash)
 | 
			
		||||
    end
 | 
			
		||||
    t.invoke(1)
 | 
			
		||||
    assert_equal [:a, :b, :c, :d], notes
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_arguments_are_passed_to_block
 | 
			
		||||
    t = task(:t, :a, :b) { |tt, args|
 | 
			
		||||
      assert_equal( { :a => 1, :b => 2 }, args.to_hash )
 | 
			
		||||
    }
 | 
			
		||||
    t.invoke(1, 2)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_extra_parameters_are_ignored
 | 
			
		||||
    t = task(:t, :a) { |tt, args|
 | 
			
		||||
      assert_equal 1, args.a
 | 
			
		||||
      assert_nil args.b
 | 
			
		||||
    }
 | 
			
		||||
    t.invoke(1, 2)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_arguments_are_passed_to_all_blocks
 | 
			
		||||
    counter = 0
 | 
			
		||||
    t = task :t, :a
 | 
			
		||||
    task :t do |tt, args|
 | 
			
		||||
      assert_equal 1, args.a
 | 
			
		||||
      counter += 1
 | 
			
		||||
    end
 | 
			
		||||
    task :t do |tt, args|
 | 
			
		||||
      assert_equal 1, args.a
 | 
			
		||||
      counter += 1
 | 
			
		||||
    end
 | 
			
		||||
    t.invoke(1)
 | 
			
		||||
    assert_equal 2, counter
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_block_with_no_parameters_is_ok
 | 
			
		||||
    t = task(:t) { }
 | 
			
		||||
    t.invoke(1, 2)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_name_with_args
 | 
			
		||||
    desc "T"
 | 
			
		||||
    t = task(:tt, :a, :b)
 | 
			
		||||
    assert_equal "tt", t.name
 | 
			
		||||
    assert_equal "T", t.comment
 | 
			
		||||
    assert_equal "[a,b]", t.arg_description
 | 
			
		||||
    assert_equal "tt[a,b]", t.name_with_args
 | 
			
		||||
    assert_equal [:a, :b],t.arg_names
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_named_args_are_passed_to_prereqs
 | 
			
		||||
    value = nil
 | 
			
		||||
    pre = task(:pre, :rev) { |t, args| value = args.rev }
 | 
			
		||||
    t = task(:t, [:name, :rev] => [:pre])
 | 
			
		||||
    t.invoke("bill", "1.2")
 | 
			
		||||
    assert_equal "1.2", value
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_args_not_passed_if_no_prereq_names
 | 
			
		||||
    pre = task(:pre) { |t, args|
 | 
			
		||||
      assert_equal({}, args.to_hash)
 | 
			
		||||
      assert_equal "bill", args.name
 | 
			
		||||
    }
 | 
			
		||||
    t = task(:t, [:name, :rev] => [:pre])
 | 
			
		||||
    t.invoke("bill", "1.2")
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_args_not_passed_if_no_arg_names
 | 
			
		||||
    pre = task(:pre, :rev) { |t, args|
 | 
			
		||||
      assert_equal({}, args.to_hash)
 | 
			
		||||
    }
 | 
			
		||||
    t = task(:t  => [:pre])
 | 
			
		||||
    t.invoke("bill", "1.2")
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue