PageRenderTime 60ms CodeModel.GetById 33ms RepoModel.GetById 1ms app.codeStats 0ms

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

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