/tools/Ruby/lib/ruby/gems/1.8/gems/rake-0.9.2/test/test_rake_definitions.rb

http://github.com/agross/netopenspace · Ruby · 80 lines · 66 code · 14 blank · 0 comment · 0 complexity · dd659454d89319591d97eafbc32d9a14 MD5 · raw file

  1. require File.expand_path('../helper', __FILE__)
  2. require 'fileutils'
  3. class TestRakeDefinitions < Rake::TestCase
  4. include Rake
  5. EXISTINGFILE = "testdata/existing"
  6. def setup
  7. super
  8. Task.clear
  9. end
  10. def test_task
  11. done = false
  12. task :one => [:two] do done = true end
  13. task :two
  14. task :three => [:one, :two]
  15. check_tasks(:one, :two, :three)
  16. assert done, "Should be done"
  17. end
  18. def test_file_task
  19. done = false
  20. file "testdata/one" => "testdata/two" do done = true end
  21. file "testdata/two"
  22. file "testdata/three" => ["testdata/one", "testdata/two"]
  23. check_tasks("testdata/one", "testdata/two", "testdata/three")
  24. assert done, "Should be done"
  25. end
  26. def check_tasks(n1, n2, n3)
  27. t = Task[n1]
  28. assert Task === t, "Should be a Task"
  29. assert_equal n1.to_s, t.name
  30. assert_equal [n2.to_s], t.prerequisites.collect{|n| n.to_s}
  31. t.invoke
  32. t2 = Task[n2]
  33. assert_equal FileList[], t2.prerequisites
  34. t3 = Task[n3]
  35. assert_equal [n1.to_s, n2.to_s], t3.prerequisites.collect{|n|n.to_s}
  36. end
  37. def test_incremental_definitions
  38. runs = []
  39. task :t1 => [:t2] do runs << "A"; 4321 end
  40. task :t1 => [:t3] do runs << "B"; 1234 end
  41. task :t1 => [:t3]
  42. task :t2
  43. task :t3
  44. Task[:t1].invoke
  45. assert_equal ["A", "B"], runs
  46. assert_equal ["t2", "t3"], Task[:t1].prerequisites
  47. end
  48. def test_missing_dependencies
  49. task :x => ["testdata/missing"]
  50. assert_raises(RuntimeError) { Task[:x].invoke }
  51. end
  52. def test_implicit_file_dependencies
  53. runs = []
  54. create_existing_file
  55. task :y => [EXISTINGFILE] do |t| runs << t.name end
  56. Task[:y].invoke
  57. assert_equal runs, ['y']
  58. end
  59. private # ----------------------------------------------------------
  60. def create_existing_file
  61. Dir.mkdir File.dirname(EXISTINGFILE) unless
  62. File.exist?(File.dirname(EXISTINGFILE))
  63. open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless
  64. File.exist?(EXISTINGFILE)
  65. end
  66. end