~ubuntu-branches/ubuntu/quantal/ruby1.9.1/quantal

« back to all changes in this revision

Viewing changes to test/rake/test_rake_multi_task.rb

  • Committer: Bazaar Package Importer
  • Author(s): Lucas Nussbaum
  • Date: 2011-09-24 19:16:17 UTC
  • mfrom: (1.1.8 upstream) (13.1.7 experimental)
  • Revision ID: james.westby@ubuntu.com-20110924191617-o1qz4rcmqjot8zuy
Tags: 1.9.3~rc1-1
* New upstream release: 1.9.3 RC1.
  + Includes load.c fixes. Closes: #639959.
* Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
require File.expand_path('../helper', __FILE__)
 
2
require 'thread'
 
3
 
 
4
class TestRakeMultiTask < Rake::TestCase
 
5
  include Rake
 
6
  include Rake::DSL
 
7
 
 
8
  def setup
 
9
    super
 
10
 
 
11
    Task.clear
 
12
    @runs = Array.new
 
13
    @mutex = Mutex.new
 
14
  end
 
15
 
 
16
  def add_run(obj)
 
17
    @mutex.synchronize do
 
18
      @runs << obj
 
19
    end
 
20
  end
 
21
 
 
22
  def test_running_multitasks
 
23
    task :a do 3.times do |i| add_run("A#{i}"); sleep 0.01; end end
 
24
    task :b do 3.times do |i| add_run("B#{i}"); sleep 0.01;  end end
 
25
    multitask :both => [:a, :b]
 
26
    Task[:both].invoke
 
27
    assert_equal 6, @runs.size
 
28
    assert @runs.index("A0") < @runs.index("A1")
 
29
    assert @runs.index("A1") < @runs.index("A2")
 
30
    assert @runs.index("B0") < @runs.index("B1")
 
31
    assert @runs.index("B1") < @runs.index("B2")
 
32
  end
 
33
 
 
34
  def test_all_multitasks_wait_on_slow_prerequisites
 
35
    task :slow do 3.times do |i| add_run("S#{i}"); sleep 0.05 end end
 
36
    task :a => [:slow] do 3.times do |i| add_run("A#{i}"); sleep 0.01 end end
 
37
    task :b => [:slow] do 3.times do |i| add_run("B#{i}"); sleep 0.01 end end
 
38
    multitask :both => [:a, :b]
 
39
    Task[:both].invoke
 
40
    assert_equal 9, @runs.size
 
41
    assert @runs.index("S0") < @runs.index("S1")
 
42
    assert @runs.index("S1") < @runs.index("S2")
 
43
    assert @runs.index("S2") < @runs.index("A0")
 
44
    assert @runs.index("S2") < @runs.index("B0")
 
45
    assert @runs.index("A0") < @runs.index("A1")
 
46
    assert @runs.index("A1") < @runs.index("A2")
 
47
    assert @runs.index("B0") < @runs.index("B1")
 
48
    assert @runs.index("B1") < @runs.index("B2")
 
49
  end
 
50
end
 
51