rake 10.5.0 → 13.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +13 -8
  3. data/Gemfile +10 -0
  4. data/History.rdoc +2015 -288
  5. data/README.rdoc +40 -24
  6. data/Rakefile +25 -65
  7. data/bin/bundle +105 -0
  8. data/bin/console +7 -0
  9. data/bin/rake +20 -24
  10. data/bin/rdoc +29 -0
  11. data/bin/rubocop +29 -0
  12. data/bin/setup +6 -0
  13. data/doc/jamis.rb +1 -0
  14. data/doc/rake.1 +139 -124
  15. data/doc/rakefile.rdoc +2 -4
  16. data/exe/rake +27 -0
  17. data/lib/rake.rb +35 -43
  18. data/lib/rake/application.rb +124 -90
  19. data/lib/rake/backtrace.rb +3 -2
  20. data/lib/rake/clean.rb +7 -5
  21. data/lib/rake/cloneable.rb +1 -0
  22. data/lib/rake/cpu_counter.rb +10 -28
  23. data/lib/rake/default_loader.rb +1 -0
  24. data/lib/rake/dsl_definition.rb +5 -11
  25. data/lib/rake/early_time.rb +1 -0
  26. data/lib/rake/ext/core.rb +1 -0
  27. data/lib/rake/ext/string.rb +22 -21
  28. data/lib/rake/file_creation_task.rb +4 -3
  29. data/lib/rake/file_list.rb +34 -27
  30. data/lib/rake/file_task.rb +12 -4
  31. data/lib/rake/file_utils.rb +38 -32
  32. data/lib/rake/file_utils_ext.rb +8 -18
  33. data/lib/rake/invocation_chain.rb +1 -0
  34. data/lib/rake/invocation_exception_mixin.rb +1 -0
  35. data/lib/rake/late_time.rb +2 -1
  36. data/lib/rake/linked_list.rb +24 -15
  37. data/lib/rake/loaders/makefile.rb +5 -4
  38. data/lib/rake/multi_task.rb +2 -1
  39. data/lib/rake/name_space.rb +1 -1
  40. data/lib/rake/packagetask.rb +40 -17
  41. data/lib/rake/phony.rb +2 -1
  42. data/lib/rake/private_reader.rb +1 -0
  43. data/lib/rake/promise.rb +13 -12
  44. data/lib/rake/pseudo_status.rb +1 -0
  45. data/lib/rake/rake_module.rb +30 -1
  46. data/lib/rake/rake_test_loader.rb +18 -13
  47. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  48. data/lib/rake/scope.rb +3 -2
  49. data/lib/rake/task.rb +82 -31
  50. data/lib/rake/task_argument_error.rb +1 -0
  51. data/lib/rake/task_arguments.rb +15 -4
  52. data/lib/rake/task_manager.rb +54 -30
  53. data/lib/rake/tasklib.rb +2 -14
  54. data/lib/rake/testtask.rb +37 -61
  55. data/lib/rake/thread_history_display.rb +4 -3
  56. data/lib/rake/thread_pool.rb +16 -17
  57. data/lib/rake/trace_output.rb +2 -1
  58. data/lib/rake/version.rb +4 -1
  59. data/lib/rake/win32.rb +10 -15
  60. data/rake.gemspec +43 -0
  61. metadata +32 -219
  62. data/.autotest +0 -7
  63. data/.rubocop.yml +0 -27
  64. data/.togglerc +0 -7
  65. data/Manifest.txt +0 -166
  66. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  67. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  68. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  69. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  70. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  71. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  72. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  73. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  74. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  75. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  76. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  77. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  78. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  79. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  80. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  81. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  82. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  83. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  84. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  85. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  86. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  87. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  88. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  89. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  90. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  91. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  92. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  93. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  94. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  95. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  96. data/lib/rake/alt_system.rb +0 -110
  97. data/lib/rake/contrib/.document +0 -1
  98. data/lib/rake/contrib/compositepublisher.rb +0 -21
  99. data/lib/rake/contrib/ftptools.rb +0 -137
  100. data/lib/rake/contrib/publisher.rb +0 -81
  101. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  102. data/lib/rake/contrib/sshpublisher.rb +0 -61
  103. data/lib/rake/contrib/sys.rb +0 -4
  104. data/lib/rake/ext/module.rb +0 -2
  105. data/lib/rake/ext/pathname.rb +0 -25
  106. data/lib/rake/ext/time.rb +0 -18
  107. data/lib/rake/gempackagetask.rb +0 -4
  108. data/lib/rake/pathmap.rb +0 -3
  109. data/lib/rake/rdoctask.rb +0 -4
  110. data/lib/rake/ruby182_test_unit_fix.rb +0 -29
  111. data/lib/rake/runtest.rb +0 -27
  112. data/rakelib/publish.rake +0 -20
  113. data/rakelib/test_times.rake +0 -25
  114. data/test/file_creation.rb +0 -34
  115. data/test/helper.rb +0 -129
  116. data/test/support/rakefile_definitions.rb +0 -478
  117. data/test/support/ruby_runner.rb +0 -34
  118. data/test/test_private_reader.rb +0 -42
  119. data/test/test_rake.rb +0 -40
  120. data/test/test_rake_application.rb +0 -643
  121. data/test/test_rake_application_options.rb +0 -468
  122. data/test/test_rake_backtrace.rb +0 -119
  123. data/test/test_rake_clean.rb +0 -61
  124. data/test/test_rake_cpu_counter.rb +0 -68
  125. data/test/test_rake_definitions.rb +0 -84
  126. data/test/test_rake_directory_task.rb +0 -76
  127. data/test/test_rake_dsl.rb +0 -40
  128. data/test/test_rake_early_time.rb +0 -31
  129. data/test/test_rake_extension.rb +0 -59
  130. data/test/test_rake_file_creation_task.rb +0 -56
  131. data/test/test_rake_file_list.rb +0 -670
  132. data/test/test_rake_file_list_path_map.rb +0 -8
  133. data/test/test_rake_file_task.rb +0 -197
  134. data/test/test_rake_file_utils.rb +0 -314
  135. data/test/test_rake_ftp_file.rb +0 -74
  136. data/test/test_rake_functional.rb +0 -482
  137. data/test/test_rake_invocation_chain.rb +0 -64
  138. data/test/test_rake_late_time.rb +0 -18
  139. data/test/test_rake_linked_list.rb +0 -84
  140. data/test/test_rake_makefile_loader.rb +0 -46
  141. data/test/test_rake_multi_task.rb +0 -64
  142. data/test/test_rake_name_space.rb +0 -57
  143. data/test/test_rake_package_task.rb +0 -79
  144. data/test/test_rake_path_map.rb +0 -168
  145. data/test/test_rake_path_map_explode.rb +0 -34
  146. data/test/test_rake_path_map_partial.rb +0 -18
  147. data/test/test_rake_pathname_extensions.rb +0 -15
  148. data/test/test_rake_pseudo_status.rb +0 -21
  149. data/test/test_rake_rake_test_loader.rb +0 -20
  150. data/test/test_rake_reduce_compat.rb +0 -26
  151. data/test/test_rake_require.rb +0 -40
  152. data/test/test_rake_rules.rb +0 -388
  153. data/test/test_rake_scope.rb +0 -44
  154. data/test/test_rake_task.rb +0 -393
  155. data/test/test_rake_task_argument_parsing.rb +0 -119
  156. data/test/test_rake_task_arguments.rb +0 -127
  157. data/test/test_rake_task_lib.rb +0 -9
  158. data/test/test_rake_task_manager.rb +0 -178
  159. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  160. data/test/test_rake_task_with_arguments.rb +0 -172
  161. data/test/test_rake_test_task.rb +0 -146
  162. data/test/test_rake_thread_pool.rb +0 -145
  163. data/test/test_rake_top_level_functions.rb +0 -71
  164. data/test/test_rake_win32.rb +0 -72
  165. data/test/test_thread_history_display.rb +0 -101
  166. data/test/test_trace_output.rb +0 -52
@@ -1,119 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'open3'
3
-
4
- class TestBacktraceSuppression < Rake::TestCase
5
- def test_bin_rake_suppressed
6
- paths = ["something/bin/rake:12"]
7
-
8
- actual = Rake::Backtrace.collapse(paths)
9
-
10
- assert_equal [], actual
11
- end
12
-
13
- def test_system_dir_suppressed
14
- path = RbConfig::CONFIG['rubylibprefix']
15
- skip if path.nil?
16
- path = File.expand_path path
17
-
18
- paths = [path + ":12"]
19
-
20
- actual = Rake::Backtrace.collapse(paths)
21
-
22
- assert_equal [], actual
23
- end
24
-
25
- def test_near_system_dir_isnt_suppressed
26
- path = RbConfig::CONFIG['rubylibprefix']
27
- skip if path.nil?
28
- path = File.expand_path path
29
-
30
- paths = [" " + path + ":12"]
31
-
32
- actual = Rake::Backtrace.collapse(paths)
33
-
34
- assert_equal paths, actual
35
- end
36
- end
37
-
38
- class TestRakeBacktrace < Rake::TestCase
39
- include RubyRunner
40
-
41
- def setup
42
- super
43
-
44
- skip 'tmpdir is suppressed in backtrace' if
45
- Rake::Backtrace::SUPPRESS_PATTERN =~ Dir.pwd
46
- end
47
-
48
- def invoke(*args)
49
- rake(*args)
50
- @err
51
- end
52
-
53
- def test_single_collapse
54
- rakefile %q{
55
- task :foo do
56
- raise "foooo!"
57
- end
58
- }
59
-
60
- lines = invoke("foo").split("\n")
61
-
62
- assert_equal "rake aborted!", lines[0]
63
- assert_equal "foooo!", lines[1]
64
- assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines
65
- assert_something_matches %r!\ATasks:!, lines
66
- end
67
-
68
- def test_multi_collapse
69
- rakefile %q{
70
- task :foo do
71
- Rake.application.invoke_task(:bar)
72
- end
73
- task :bar do
74
- raise "barrr!"
75
- end
76
- }
77
-
78
- lines = invoke("foo").split("\n")
79
-
80
- assert_equal "rake aborted!", lines[0]
81
- assert_equal "barrr!", lines[1]
82
- assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:6!i, lines
83
- assert_something_matches %r!\A#{Regexp.quote Dir.pwd}/Rakefile:3!i, lines
84
- assert_something_matches %r!\ATasks:!, lines
85
- end
86
-
87
- def test_suppress_option
88
- rakefile %q{
89
- task :baz do
90
- raise "bazzz!"
91
- end
92
- }
93
-
94
- lines = invoke("baz").split("\n")
95
- assert_equal "rake aborted!", lines[0]
96
- assert_equal "bazzz!", lines[1]
97
- assert_something_matches %r!Rakefile!i, lines
98
-
99
- lines = invoke("--suppress-backtrace", ".ak.file", "baz").split("\n")
100
- assert_equal "rake aborted!", lines[0]
101
- assert_equal "bazzz!", lines[1]
102
- refute_match %r!Rakefile!i, lines[2]
103
- end
104
-
105
- private
106
-
107
- # Assert that the pattern matches at least one line in +lines+.
108
- def assert_something_matches(pattern, lines)
109
- lines.each do |ln|
110
- if pattern =~ ln
111
- assert_match pattern, ln
112
- return
113
- end
114
- end
115
- flunk "expected #{pattern.inspect} to match something in:\n" +
116
- "#{lines.join("\n ")}"
117
- end
118
-
119
- end
@@ -1,61 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'rake/clean'
3
-
4
- class TestRakeClean < Rake::TestCase
5
- def test_clean
6
- load 'rake/clean.rb', true
7
-
8
- assert Rake::Task['clean'], "Should define clean"
9
- assert Rake::Task['clobber'], "Should define clobber"
10
- assert Rake::Task['clobber'].prerequisites.include?("clean"),
11
- "Clobber should require clean"
12
- end
13
-
14
- def test_cleanup
15
- file_name = create_undeletable_file
16
-
17
- out, _ = capture_io do
18
- Rake::Cleaner.cleanup(file_name, :verbose => false)
19
- end
20
- assert_match(/failed to remove/i, out)
21
-
22
- ensure
23
- remove_undeletable_file
24
- end
25
-
26
- def test_cleanup_ignores_missing_files
27
- file_name = File.join(@tempdir, "missing_directory", "no_such_file")
28
-
29
- out, _ = capture_io do
30
- Rake::Cleaner.cleanup(file_name, :verbose => false)
31
- end
32
- refute_match(/failed to remove/i, out)
33
- end
34
-
35
- private
36
-
37
- def create_undeletable_file
38
- dir_name = File.join(@tempdir, "deletedir")
39
- file_name = File.join(dir_name, "deleteme")
40
- FileUtils.mkdir(dir_name)
41
- FileUtils.touch(file_name)
42
- FileUtils.chmod(0, file_name)
43
- FileUtils.chmod(0, dir_name)
44
- begin
45
- FileUtils.chmod(0644, file_name)
46
- rescue
47
- file_name
48
- else
49
- skip "Permission to delete files is different on thie system"
50
- end
51
- end
52
-
53
- def remove_undeletable_file
54
- dir_name = File.join(@tempdir, "deletedir")
55
- file_name = File.join(dir_name, "deleteme")
56
- FileUtils.chmod(0777, dir_name)
57
- FileUtils.chmod(0777, file_name)
58
- Rake::Cleaner.cleanup(file_name, :verbose => false)
59
- Rake::Cleaner.cleanup(dir_name, :verbose => false)
60
- end
61
- end
@@ -1,68 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeCpuCounter < Rake::TestCase
4
-
5
- def setup
6
- super
7
-
8
- @cpu_counter = Rake::CpuCounter.new
9
- end
10
-
11
- def test_count
12
- num = @cpu_counter.count
13
- skip 'cannot count CPU' if num == nil
14
- assert_kind_of Numeric, num
15
- assert_operator num, :>=, 1
16
- end
17
-
18
- def test_count_with_default_nil
19
- def @cpu_counter.count; nil; end
20
- assert_equal(8, @cpu_counter.count_with_default(8))
21
- assert_equal(4, @cpu_counter.count_with_default)
22
- end
23
-
24
- def test_count_with_default_raise
25
- def @cpu_counter.count; raise; end
26
- assert_equal(8, @cpu_counter.count_with_default(8))
27
- assert_equal(4, @cpu_counter.count_with_default)
28
- end
29
-
30
- class TestClassMethod < Rake::TestCase
31
- def setup
32
- super
33
-
34
- @klass = Class.new(Rake::CpuCounter)
35
- end
36
-
37
- def test_count
38
- @klass.class_eval do
39
- def count; 8; end
40
- end
41
- assert_equal(8, @klass.count)
42
- end
43
-
44
- def test_count_nil
45
- counted = false
46
- @klass.class_eval do
47
- define_method(:count) do
48
- counted = true
49
- nil
50
- end
51
- end
52
- assert_equal(4, @klass.count)
53
- assert_equal(true, counted)
54
- end
55
-
56
- def test_count_raise
57
- counted = false
58
- @klass.class_eval do
59
- define_method(:count) do
60
- counted = true
61
- raise
62
- end
63
- end
64
- assert_equal(4, @klass.count)
65
- assert_equal(true, counted)
66
- end
67
- end
68
- end
@@ -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