PageRenderTime 50ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/jruby-1.1.6RC1/lib/ruby/gems/1.8/gems/rake-0.8.3/test/test_task_manager.rb

https://bitbucket.org/nicksieger/advent-jruby
Ruby | 170 lines | 142 code | 27 blank | 1 comment | 0 complexity | 840ae7b1f0271027f846580eb5b246fe MD5 | raw file
Possible License(s): CPL-1.0, AGPL-1.0, LGPL-2.1, JSON
  1. #!/usr/bin/env ruby
  2. require 'test/unit'
  3. require 'rake'
  4. class TaskManager
  5. include Rake::TaskManager
  6. end
  7. class TestTaskManager < Test::Unit::TestCase
  8. def setup
  9. @tm = TaskManager.new
  10. end
  11. def test_create_task_manager
  12. assert_not_nil @tm
  13. assert_equal [], @tm.tasks
  14. end
  15. def test_define_task
  16. t = @tm.define_task(Rake::Task, :t)
  17. assert_equal "t", t.name
  18. assert_equal @tm, t.application
  19. end
  20. def test_name_lookup
  21. t = @tm.define_task(Rake::Task, :t)
  22. assert_equal t, @tm[:t]
  23. end
  24. def test_namespace_task_create
  25. @tm.in_namespace("x") do
  26. t = @tm.define_task(Rake::Task, :t)
  27. assert_equal "x:t", t.name
  28. end
  29. assert_equal ["x:t"], @tm.tasks.collect { |t| t.name }
  30. end
  31. def test_anonymous_namespace
  32. anon_ns = @tm.in_namespace(nil) do
  33. t = @tm.define_task(Rake::Task, :t)
  34. assert_equal "_anon_1:t", t.name
  35. end
  36. task = anon_ns[:t]
  37. assert_equal "_anon_1:t", task.name
  38. end
  39. def test_create_filetask_in_namespace
  40. @tm.in_namespace("x") do
  41. t = @tm.define_task(Rake::FileTask, "fn")
  42. assert_equal "fn", t.name
  43. end
  44. assert_equal ["fn"], @tm.tasks.collect { |t| t.name }
  45. end
  46. def test_namespace_yields_same_namespace_as_returned
  47. yielded_namespace = nil
  48. returned_namespace = @tm.in_namespace("x") do |ns|
  49. yielded_namespace = ns
  50. end
  51. assert_equal returned_namespace, yielded_namespace
  52. end
  53. def test_name_lookup_with_implicit_file_tasks
  54. t = @tm["README"]
  55. assert_equal "README", t.name
  56. assert Rake::FileTask === t
  57. end
  58. def test_name_lookup_with_nonexistent_task
  59. assert_raise(RuntimeError) {
  60. t = @tm["DOES NOT EXIST"]
  61. }
  62. end
  63. def test_name_lookup_in_multiple_scopes
  64. aa = nil
  65. bb = nil
  66. xx = @tm.define_task(Rake::Task, :xx)
  67. top_z = @tm.define_task(Rake::Task, :z)
  68. @tm.in_namespace("a") do
  69. aa = @tm.define_task(Rake::Task, :aa)
  70. mid_z = @tm.define_task(Rake::Task, :z)
  71. @tm.in_namespace("b") do
  72. bb = @tm.define_task(Rake::Task, :bb)
  73. bot_z = @tm.define_task(Rake::Task, :z)
  74. assert_equal ["a", "b"], @tm.current_scope
  75. assert_equal bb, @tm["a:b:bb"]
  76. assert_equal aa, @tm["a:aa"]
  77. assert_equal xx, @tm["xx"]
  78. assert_equal bot_z, @tm["z"]
  79. assert_equal mid_z, @tm["^z"]
  80. assert_equal top_z, @tm["^^z"]
  81. assert_equal top_z, @tm["rake:z"]
  82. end
  83. assert_equal ["a"], @tm.current_scope
  84. assert_equal bb, @tm["a:b:bb"]
  85. assert_equal aa, @tm["a:aa"]
  86. assert_equal xx, @tm["xx"]
  87. assert_equal bb, @tm["b:bb"]
  88. assert_equal aa, @tm["aa"]
  89. assert_equal mid_z, @tm["z"]
  90. assert_equal top_z, @tm["^z"]
  91. assert_equal top_z, @tm["rake:z"]
  92. end
  93. assert_equal [], @tm.current_scope
  94. assert_equal [], xx.scope
  95. assert_equal ['a'], aa.scope
  96. assert_equal ['a', 'b'], bb.scope
  97. end
  98. def test_lookup_with_explicit_scopes
  99. t1, t2, t3, s = (0...4).collect { nil }
  100. t1 = @tm.define_task(Rake::Task, :t)
  101. @tm.in_namespace("a") do
  102. t2 = @tm.define_task(Rake::Task, :t)
  103. s = @tm.define_task(Rake::Task, :s)
  104. @tm.in_namespace("b") do
  105. t3 = @tm.define_task(Rake::Task, :t)
  106. end
  107. end
  108. assert_equal t1, @tm[:t, []]
  109. assert_equal t2, @tm[:t, ["a"]]
  110. assert_equal t3, @tm[:t, ["a", "b"]]
  111. assert_equal s, @tm[:s, ["a", "b"]]
  112. assert_equal s, @tm[:s, ["a"]]
  113. end
  114. def test_correctly_scoped_prerequisites_are_invoked
  115. values = []
  116. @tm = Rake::Application.new
  117. @tm.define_task(Rake::Task, :z) do values << "top z" end
  118. @tm.in_namespace("a") do
  119. @tm.define_task(Rake::Task, :z) do values << "next z" end
  120. @tm.define_task(Rake::Task, :x => :z)
  121. end
  122. @tm["a:x"].invoke
  123. assert_equal ["next z"], values
  124. end
  125. end
  126. class TestTaskManagerArgumentResolution < Test::Unit::TestCase
  127. def test_good_arg_patterns
  128. assert_equal [:t, [], []], task(:t)
  129. assert_equal [:t, [], [:x]], task(:t => :x)
  130. assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y])
  131. assert_equal [:t, [:a, :b], []], task(:t, :a, :b)
  132. assert_equal [:t, [], [:x]], task(:t, :needs => :x)
  133. assert_equal [:t, [:a, :b], [:x]], task(:t, :a, :b, :needs => :x)
  134. assert_equal [:t, [:a, :b], [:x, :y]], task(:t, :a, :b, :needs => [:x, :y])
  135. assert_equal [:t, [:a, :b], []], task(:t, [:a, :b])
  136. assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x)
  137. assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y])
  138. end
  139. def task(*args)
  140. tm = TaskManager.new
  141. tm.resolve_args(args)
  142. end
  143. end