PageRenderTime 70ms CodeModel.GetById 38ms RepoModel.GetById 1ms app.codeStats 0ms

/TDDBC_Yokohama2_PCUnit/Ruby/doc/ruby/ruby-1.9.2/test/rake/test_task_manager.rb

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