rake 10.5.0 → 13.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/macos.yml +22 -0
  3. data/.github/workflows/ubuntu-rvm.yml +28 -0
  4. data/.github/workflows/ubuntu.yml +20 -0
  5. data/.github/workflows/windows.yml +20 -0
  6. data/CONTRIBUTING.rdoc +13 -8
  7. data/Gemfile +10 -0
  8. data/History.rdoc +1997 -288
  9. data/README.rdoc +27 -11
  10. data/Rakefile +25 -65
  11. data/bin/bundle +105 -0
  12. data/bin/console +7 -0
  13. data/bin/rake +20 -24
  14. data/bin/rdoc +29 -0
  15. data/bin/rubocop +29 -0
  16. data/bin/setup +6 -0
  17. data/doc/jamis.rb +1 -0
  18. data/doc/rake.1 +139 -124
  19. data/doc/rakefile.rdoc +2 -4
  20. data/exe/rake +27 -0
  21. data/lib/rake/application.rb +124 -90
  22. data/lib/rake/backtrace.rb +3 -2
  23. data/lib/rake/clean.rb +7 -5
  24. data/lib/rake/cloneable.rb +1 -0
  25. data/lib/rake/cpu_counter.rb +10 -28
  26. data/lib/rake/default_loader.rb +1 -0
  27. data/lib/rake/dsl_definition.rb +5 -11
  28. data/lib/rake/early_time.rb +1 -0
  29. data/lib/rake/ext/core.rb +1 -0
  30. data/lib/rake/ext/string.rb +22 -21
  31. data/lib/rake/file_creation_task.rb +4 -3
  32. data/lib/rake/file_list.rb +34 -27
  33. data/lib/rake/file_task.rb +12 -4
  34. data/lib/rake/file_utils.rb +38 -32
  35. data/lib/rake/file_utils_ext.rb +8 -18
  36. data/lib/rake/invocation_chain.rb +1 -0
  37. data/lib/rake/invocation_exception_mixin.rb +1 -0
  38. data/lib/rake/late_time.rb +2 -1
  39. data/lib/rake/linked_list.rb +24 -15
  40. data/lib/rake/loaders/makefile.rb +5 -4
  41. data/lib/rake/multi_task.rb +2 -1
  42. data/lib/rake/name_space.rb +1 -1
  43. data/lib/rake/packagetask.rb +40 -17
  44. data/lib/rake/phony.rb +2 -1
  45. data/lib/rake/private_reader.rb +1 -0
  46. data/lib/rake/promise.rb +13 -12
  47. data/lib/rake/pseudo_status.rb +1 -0
  48. data/lib/rake/rake_module.rb +30 -1
  49. data/lib/rake/rake_test_loader.rb +18 -13
  50. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  51. data/lib/rake/scope.rb +3 -2
  52. data/lib/rake/task.rb +82 -31
  53. data/lib/rake/task_argument_error.rb +1 -0
  54. data/lib/rake/task_arguments.rb +15 -4
  55. data/lib/rake/task_manager.rb +54 -30
  56. data/lib/rake/tasklib.rb +2 -14
  57. data/lib/rake/testtask.rb +39 -28
  58. data/lib/rake/thread_history_display.rb +4 -3
  59. data/lib/rake/thread_pool.rb +16 -17
  60. data/lib/rake/trace_output.rb +2 -1
  61. data/lib/rake/version.rb +4 -1
  62. data/lib/rake/win32.rb +10 -15
  63. data/lib/rake.rb +35 -43
  64. data/rake.gemspec +43 -0
  65. metadata +33 -216
  66. data/.autotest +0 -7
  67. data/.rubocop.yml +0 -27
  68. data/.togglerc +0 -7
  69. data/Manifest.txt +0 -166
  70. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  71. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  72. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  73. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  74. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  75. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  76. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  77. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  78. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  79. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  80. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  81. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  82. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  83. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  84. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  85. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  86. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  87. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  88. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  89. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  90. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  91. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  92. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  93. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  94. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  95. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  96. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  97. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  98. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  99. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  100. data/lib/rake/alt_system.rb +0 -110
  101. data/lib/rake/contrib/.document +0 -1
  102. data/lib/rake/contrib/compositepublisher.rb +0 -21
  103. data/lib/rake/contrib/ftptools.rb +0 -137
  104. data/lib/rake/contrib/publisher.rb +0 -81
  105. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  106. data/lib/rake/contrib/sshpublisher.rb +0 -61
  107. data/lib/rake/contrib/sys.rb +0 -4
  108. data/lib/rake/ext/module.rb +0 -2
  109. data/lib/rake/ext/pathname.rb +0 -25
  110. data/lib/rake/ext/time.rb +0 -18
  111. data/lib/rake/gempackagetask.rb +0 -4
  112. data/lib/rake/pathmap.rb +0 -3
  113. data/lib/rake/rdoctask.rb +0 -4
  114. data/lib/rake/ruby182_test_unit_fix.rb +0 -29
  115. data/lib/rake/runtest.rb +0 -27
  116. data/rakelib/publish.rake +0 -20
  117. data/rakelib/test_times.rake +0 -25
  118. data/test/file_creation.rb +0 -34
  119. data/test/helper.rb +0 -129
  120. data/test/support/rakefile_definitions.rb +0 -478
  121. data/test/support/ruby_runner.rb +0 -34
  122. data/test/test_private_reader.rb +0 -42
  123. data/test/test_rake.rb +0 -40
  124. data/test/test_rake_application.rb +0 -643
  125. data/test/test_rake_application_options.rb +0 -468
  126. data/test/test_rake_backtrace.rb +0 -119
  127. data/test/test_rake_clean.rb +0 -61
  128. data/test/test_rake_cpu_counter.rb +0 -68
  129. data/test/test_rake_definitions.rb +0 -84
  130. data/test/test_rake_directory_task.rb +0 -76
  131. data/test/test_rake_dsl.rb +0 -40
  132. data/test/test_rake_early_time.rb +0 -31
  133. data/test/test_rake_extension.rb +0 -59
  134. data/test/test_rake_file_creation_task.rb +0 -56
  135. data/test/test_rake_file_list.rb +0 -670
  136. data/test/test_rake_file_list_path_map.rb +0 -8
  137. data/test/test_rake_file_task.rb +0 -197
  138. data/test/test_rake_file_utils.rb +0 -314
  139. data/test/test_rake_ftp_file.rb +0 -74
  140. data/test/test_rake_functional.rb +0 -482
  141. data/test/test_rake_invocation_chain.rb +0 -64
  142. data/test/test_rake_late_time.rb +0 -18
  143. data/test/test_rake_linked_list.rb +0 -84
  144. data/test/test_rake_makefile_loader.rb +0 -46
  145. data/test/test_rake_multi_task.rb +0 -64
  146. data/test/test_rake_name_space.rb +0 -57
  147. data/test/test_rake_package_task.rb +0 -79
  148. data/test/test_rake_path_map.rb +0 -168
  149. data/test/test_rake_path_map_explode.rb +0 -34
  150. data/test/test_rake_path_map_partial.rb +0 -18
  151. data/test/test_rake_pathname_extensions.rb +0 -15
  152. data/test/test_rake_pseudo_status.rb +0 -21
  153. data/test/test_rake_rake_test_loader.rb +0 -20
  154. data/test/test_rake_reduce_compat.rb +0 -26
  155. data/test/test_rake_require.rb +0 -40
  156. data/test/test_rake_rules.rb +0 -388
  157. data/test/test_rake_scope.rb +0 -44
  158. data/test/test_rake_task.rb +0 -393
  159. data/test/test_rake_task_argument_parsing.rb +0 -119
  160. data/test/test_rake_task_arguments.rb +0 -127
  161. data/test/test_rake_task_lib.rb +0 -9
  162. data/test/test_rake_task_manager.rb +0 -178
  163. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  164. data/test/test_rake_task_with_arguments.rb +0 -172
  165. data/test/test_rake_test_task.rb +0 -146
  166. data/test/test_rake_thread_pool.rb +0 -145
  167. data/test/test_rake_top_level_functions.rb +0 -71
  168. data/test/test_rake_win32.rb +0 -72
  169. data/test/test_thread_history_display.rb +0 -101
  170. data/test/test_trace_output.rb +0 -52
@@ -1,84 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'fileutils'
3
-
4
- class TestRakeDefinitions < Rake::TestCase
5
- include Rake
6
-
7
- EXISTINGFILE = "existing"
8
-
9
- def setup
10
- super
11
-
12
- Task.clear
13
- end
14
-
15
- def test_task
16
- done = false
17
- task :one => [:two] do done = true end
18
- task :two
19
- task :three => [:one, :two]
20
- check_tasks(:one, :two, :three)
21
- assert done, "Should be done"
22
- end
23
-
24
- def test_file_task
25
- done = false
26
- file "one" => "two" do done = true end
27
- file "two"
28
- file "three" => ["one", "two"]
29
- check_tasks("one", "two", "three")
30
- assert done, "Should be done"
31
- end
32
-
33
- def check_tasks(n1, n2, n3)
34
- t = Task[n1]
35
- assert Task === t, "Should be a Task"
36
- assert_equal n1.to_s, t.name
37
- assert_equal [n2.to_s], t.prerequisites.map { |n| n.to_s }
38
- t.invoke
39
- t2 = Task[n2]
40
- assert_equal FileList[], t2.prerequisites
41
- t3 = Task[n3]
42
- assert_equal [n1.to_s, n2.to_s], t3.prerequisites.map { |n| n.to_s }
43
- end
44
-
45
- def test_incremental_definitions
46
- runs = []
47
- task :t1 => [:t2] do runs << "A"; 4321 end
48
- task :t1 => [:t3] do runs << "B"; 1234 end
49
- task :t1 => [:t3]
50
- task :t2
51
- task :t3
52
- Task[:t1].invoke
53
- assert_equal ["A", "B"], runs
54
- assert_equal ["t2", "t3"], Task[:t1].prerequisites
55
- end
56
-
57
- def test_missing_dependencies
58
- task :x => ["missing"]
59
- assert_raises(RuntimeError) { Task[:x].invoke }
60
- end
61
-
62
- def test_falsey_dependencies
63
- task :x => nil
64
- assert_equal [], Task[:x].prerequisites
65
- end
66
-
67
- def test_implicit_file_dependencies
68
- runs = []
69
- create_existing_file
70
- task :y => [EXISTINGFILE] do |t| runs << t.name end
71
- Task[:y].invoke
72
- assert_equal runs, ['y']
73
- end
74
-
75
- private # ----------------------------------------------------------
76
-
77
- def create_existing_file
78
- Dir.mkdir File.dirname(EXISTINGFILE) unless
79
- File.exist?(File.dirname(EXISTINGFILE))
80
- open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless
81
- File.exist?(EXISTINGFILE)
82
- end
83
-
84
- end
@@ -1,76 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'fileutils'
3
- require 'pathname'
4
-
5
- class TestRakeDirectoryTask < Rake::TestCase
6
- include Rake
7
-
8
- def test_directory
9
- desc "DESC"
10
-
11
- directory "a/b/c"
12
-
13
- assert_equal FileCreationTask, Task["a"].class
14
- assert_equal FileCreationTask, Task["a/b"].class
15
- assert_equal FileCreationTask, Task["a/b/c"].class
16
-
17
- assert_nil Task["a"].comment
18
- assert_nil Task["a/b"].comment
19
- assert_equal "DESC", Task["a/b/c"].comment
20
-
21
- verbose(false) {
22
- Task['a/b'].invoke
23
- }
24
-
25
- assert File.exist?("a/b")
26
- refute File.exist?("a/b/c")
27
- end
28
-
29
- def test_directory_colon
30
- directory "a:b"
31
-
32
- assert_equal FileCreationTask, Task['a:b'].class
33
- end unless Rake::Win32.windows?
34
-
35
- if Rake::Win32.windows?
36
- def test_directory_win32
37
- desc "WIN32 DESC"
38
- directory 'c:/a/b/c'
39
- assert_equal FileTask, Task['c:'].class
40
- assert_equal FileCreationTask, Task['c:/a'].class
41
- assert_equal FileCreationTask, Task['c:/a/b'].class
42
- assert_equal FileCreationTask, Task['c:/a/b/c'].class
43
- assert_nil Task['c:/'].comment
44
- assert_equal "WIN32 DESC", Task['c:/a/b/c'].comment
45
- assert_nil Task['c:/a/b'].comment
46
- end
47
- end
48
-
49
- def test_can_use_blocks
50
- runlist = []
51
-
52
- t1 = directory("a/b/c" => :t2) { |t| runlist << t.name }
53
- task(:t2) { |t| runlist << t.name }
54
-
55
- verbose(false) {
56
- t1.invoke
57
- }
58
-
59
- assert_equal Task["a/b/c"], t1
60
- assert_equal FileCreationTask, Task["a/b/c"].class
61
- assert_equal ["t2", "a/b/c"], runlist
62
- assert File.directory?("a/b/c")
63
- end
64
-
65
- def test_can_use_pathname
66
- directory Pathname.new "a/b/c"
67
-
68
- assert_equal FileCreationTask, Task["a/b/c"].class
69
-
70
- verbose(false) {
71
- Task['a/b/c'].invoke
72
- }
73
-
74
- assert File.directory?("a/b/c")
75
- end
76
- end
@@ -1,40 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeDsl < Rake::TestCase
4
-
5
- def setup
6
- super
7
- Rake::Task.clear
8
- end
9
-
10
- def test_namespace_command
11
- namespace "n" do
12
- task "t"
13
- end
14
- refute_nil Rake::Task["n:t"]
15
- end
16
-
17
- def test_namespace_command_with_bad_name
18
- ex = assert_raises(ArgumentError) do
19
- namespace 1 do end
20
- end
21
- assert_match(/string/i, ex.message)
22
- assert_match(/symbol/i, ex.message)
23
- end
24
-
25
- def test_namespace_command_with_a_string_like_object
26
- name = Object.new
27
- def name.to_str
28
- "bob"
29
- end
30
- namespace name do
31
- task "t"
32
- end
33
- refute_nil Rake::Task["bob:t"]
34
- end
35
-
36
- def test_no_commands_constant
37
- assert ! defined?(Commands), "should not define Commands"
38
- end
39
-
40
- end
@@ -1,31 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeEarlyTime < Rake::TestCase
4
- def test_create
5
- early = Rake::EarlyTime.instance
6
- assert early <= Time.now
7
- assert early < Time.now
8
- assert early != Time.now
9
- assert Time.now > early
10
- assert Time.now >= early
11
- assert Time.now != early
12
- end
13
-
14
- def test_equality
15
- early = Rake::EarlyTime.instance
16
- assert_equal early, early, "two early times should be equal"
17
- end
18
-
19
- def test_original_time_compare_is_not_messed_up
20
- t1 = Time.mktime(1970, 1, 1, 0, 0, 0)
21
- t2 = Time.now
22
- assert t1 < t2
23
- assert t2 > t1
24
- assert t1 == t1
25
- assert t2 == t2
26
- end
27
-
28
- def test_to_s
29
- assert_equal "<EARLY TIME>", Rake::EARLY.to_s
30
- end
31
- end
@@ -1,59 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'stringio'
3
-
4
- class TestRakeExtension < Rake::TestCase
5
-
6
- module Redirect
7
- def error_redirect
8
- old_err = $stderr
9
- result = StringIO.new
10
- $stderr = result
11
- yield
12
- result
13
- ensure
14
- $stderr = old_err
15
- end
16
- end
17
-
18
- class Sample
19
- extend Redirect
20
-
21
- def duplicate_method
22
- :original
23
- end
24
-
25
- OK_ERRS = error_redirect do
26
- rake_extension("a") do
27
- def ok_method
28
- end
29
- end
30
- end
31
-
32
-
33
- DUP_ERRS = error_redirect do
34
- rake_extension("duplicate_method") do
35
- def duplicate_method
36
- :override
37
- end
38
- end
39
- end
40
- end
41
-
42
- def test_methods_actually_exist
43
- sample = Sample.new
44
- sample.ok_method
45
- sample.duplicate_method
46
- end
47
-
48
- def test_no_warning_when_defining_ok_method
49
- assert_equal "", Sample::OK_ERRS.string
50
- end
51
-
52
- def test_extension_complains_when_a_method_that_is_present
53
- assert_match(/warning:/i, Sample::DUP_ERRS.string)
54
- assert_match(/already exists/i, Sample::DUP_ERRS.string)
55
- assert_match(/duplicate_method/i, Sample::DUP_ERRS.string)
56
- assert_equal :original, Sample.new.duplicate_method
57
- end
58
-
59
- end
@@ -1,56 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'fileutils'
3
-
4
- ######################################################################
5
- class TestRakeFileCreationTask < Rake::TestCase
6
- include Rake
7
- include Rake::DSL
8
-
9
- DUMMY_DIR = 'dummy_dir'
10
-
11
- def setup
12
- super
13
-
14
- Task.clear
15
- end
16
-
17
- def test_file_needed
18
- create_dir DUMMY_DIR
19
- fc_task = Task[DUMMY_DIR]
20
- assert_equal DUMMY_DIR, fc_task.name
21
- FileUtils.rm_rf fc_task.name
22
- assert fc_task.needed?, "file should be needed"
23
- FileUtils.mkdir fc_task.name
24
- assert_equal nil, fc_task.prerequisites.map { |n| Task[n].timestamp }.max
25
- assert ! fc_task.needed?, "file should not be needed"
26
- end
27
-
28
- def test_directory
29
- directory DUMMY_DIR
30
- fc_task = Task[DUMMY_DIR]
31
- assert_equal DUMMY_DIR, fc_task.name
32
- assert FileCreationTask === fc_task
33
- end
34
-
35
- def test_no_retriggers_on_filecreate_task
36
- create_timed_files(OLDFILE, NEWFILE)
37
- t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE])
38
- t2 = Rake.application.intern(FileCreationTask, NEWFILE)
39
- assert ! t2.needed?, "Should not need to build new file"
40
- assert ! t1.needed?, "Should not need to rebuild old file because of new"
41
- end
42
-
43
- def test_no_retriggers_on_file_task
44
- create_timed_files(OLDFILE, NEWFILE)
45
- t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE])
46
- t2 = Rake.application.intern(FileCreationTask, NEWFILE)
47
- assert ! t2.needed?, "Should not need to build new file"
48
- assert ! t1.needed?, "Should not need to rebuild old file because of new"
49
- end
50
-
51
- def test_very_early_timestamp
52
- t1 = Rake.application.intern(FileCreationTask, OLDFILE)
53
- assert t1.timestamp < Time.now
54
- assert t1.timestamp < Time.now - 1_000_000
55
- end
56
- end