PageRenderTime 43ms CodeModel.GetById 17ms RepoModel.GetById 1ms app.codeStats 0ms

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

https://bitbucket.org/nicksieger/advent-jruby
Ruby | 139 lines | 114 code | 19 blank | 6 comment | 0 complexity | 71d922423058bd82109beaed31a9fc47 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 'fileutils'
  4. require 'rake'
  5. require 'test/filecreation'
  6. ######################################################################
  7. class TestFileTask < Test::Unit::TestCase
  8. include Rake
  9. include FileCreation
  10. def setup
  11. Task.clear
  12. @runs = Array.new
  13. FileUtils.rm_f NEWFILE
  14. FileUtils.rm_f OLDFILE
  15. end
  16. def test_file_need
  17. name = "testdata/dummy"
  18. file name
  19. ftask = Task[name]
  20. assert_equal name.to_s, ftask.name
  21. File.delete(ftask.name) rescue nil
  22. assert ftask.needed?, "file should be needed"
  23. open(ftask.name, "w") { |f| f.puts "HI" }
  24. assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max
  25. assert ! ftask.needed?, "file should not be needed"
  26. File.delete(ftask.name) rescue nil
  27. end
  28. def test_file_times_new_depends_on_old
  29. create_timed_files(OLDFILE, NEWFILE)
  30. t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE])
  31. t2 = Rake.application.intern(FileTask, OLDFILE)
  32. assert ! t2.needed?, "Should not need to build old file"
  33. assert ! t1.needed?, "Should not need to rebuild new file because of old"
  34. end
  35. def test_file_times_old_depends_on_new
  36. create_timed_files(OLDFILE, NEWFILE)
  37. t1 = Rake.application.intern(FileTask,OLDFILE).enhance([NEWFILE])
  38. t2 = Rake.application.intern(FileTask, NEWFILE)
  39. assert ! t2.needed?, "Should not need to build new file"
  40. preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max
  41. assert_equal t2.timestamp, preq_stamp
  42. assert t1.timestamp < preq_stamp, "T1 should be older"
  43. assert t1.needed?, "Should need to rebuild old file because of new"
  44. end
  45. def test_file_depends_on_task_depend_on_file
  46. create_timed_files(OLDFILE, NEWFILE)
  47. file NEWFILE => [:obj] do |t| @runs << t.name end
  48. task :obj => [OLDFILE] do |t| @runs << t.name end
  49. file OLDFILE do |t| @runs << t.name end
  50. Task[:obj].invoke
  51. Task[NEWFILE].invoke
  52. assert ! @runs.include?(NEWFILE)
  53. end
  54. def test_existing_file_depends_on_non_existing_file
  55. create_file(OLDFILE)
  56. delete_file(NEWFILE)
  57. file NEWFILE
  58. file OLDFILE => NEWFILE
  59. assert_nothing_raised do Task[OLDFILE].invoke end
  60. end
  61. # I have currently disabled this test. I'm not convinced that
  62. # deleting the file target on failure is always the proper thing to
  63. # do. I'm willing to hear input on this topic.
  64. def ztest_file_deletes_on_failure
  65. task :obj
  66. file NEWFILE => [:obj] do |t|
  67. FileUtils.touch NEWFILE
  68. fail "Ooops"
  69. end
  70. assert Task[NEWFILE]
  71. begin
  72. Task[NEWFILE].invoke
  73. rescue Exception
  74. end
  75. assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted")
  76. end
  77. end
  78. ######################################################################
  79. class TestDirectoryTask < Test::Unit::TestCase
  80. include Rake
  81. def setup
  82. rm_rf "testdata", :verbose=>false
  83. end
  84. def teardown
  85. rm_rf "testdata", :verbose=>false
  86. end
  87. def test_directory
  88. desc "DESC"
  89. directory "testdata/a/b/c"
  90. assert_equal FileCreationTask, Task["testdata"].class
  91. assert_equal FileCreationTask, Task["testdata/a"].class
  92. assert_equal FileCreationTask, Task["testdata/a/b/c"].class
  93. assert_nil Task["testdata"].comment
  94. assert_equal "DESC", Task["testdata/a/b/c"].comment
  95. assert_nil Task["testdata/a/b"].comment
  96. verbose(false) {
  97. Task['testdata/a/b'].invoke
  98. }
  99. assert File.exist?("testdata/a/b")
  100. assert ! File.exist?("testdata/a/b/c")
  101. end
  102. def test_directory_win32
  103. desc "WIN32 DESC"
  104. FileUtils.mkdir_p("testdata")
  105. Dir.chdir("testdata") do
  106. directory 'c:/testdata/a/b/c'
  107. assert_equal FileCreationTask, Task['c:/testdata'].class
  108. assert_equal FileCreationTask, Task['c:/testdata/a'].class
  109. assert_equal FileCreationTask, Task['c:/testdata/a/b/c'].class
  110. assert_nil Task['c:/testdata'].comment
  111. assert_equal "WIN32 DESC", Task['c:/testdata/a/b/c'].comment
  112. assert_nil Task['c:/testdata/a/b'].comment
  113. verbose(false) {
  114. Task['c:/testdata/a/b'].invoke
  115. }
  116. assert File.exist?('c:/testdata/a/b')
  117. assert ! File.exist?('c:/testdata/a/b/c')
  118. end
  119. end
  120. end