rake 11.3.0 → 12.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rake might be problematic. Click here for more details.

Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +51 -12
  3. data/.travis.yml +2 -9
  4. data/Gemfile +1 -1
  5. data/History.rdoc +41 -29
  6. data/README.rdoc +4 -5
  7. data/Rakefile +18 -13
  8. data/appveyor.yml +6 -7
  9. data/doc/rake.1 +139 -124
  10. data/doc/rakefile.rdoc +1 -3
  11. data/exe/rake +1 -1
  12. data/lib/rake.rb +33 -33
  13. data/lib/rake/application.rb +68 -67
  14. data/lib/rake/backtrace.rb +2 -2
  15. data/lib/rake/clean.rb +4 -3
  16. data/lib/rake/cpu_counter.rb +1 -1
  17. data/lib/rake/dsl_definition.rb +1 -1
  18. data/lib/rake/ext/string.rb +21 -21
  19. data/lib/rake/file_creation_task.rb +2 -2
  20. data/lib/rake/file_list.rb +8 -10
  21. data/lib/rake/file_task.rb +2 -2
  22. data/lib/rake/file_utils.rb +7 -10
  23. data/lib/rake/file_utils_ext.rb +3 -3
  24. data/lib/rake/late_time.rb +1 -1
  25. data/lib/rake/loaders/makefile.rb +4 -4
  26. data/lib/rake/multi_task.rb +36 -0
  27. data/lib/rake/name_space.rb +0 -1
  28. data/lib/rake/packagetask.rb +10 -10
  29. data/lib/rake/phony.rb +1 -1
  30. data/lib/rake/promise.rb +10 -10
  31. data/lib/rake/rake_module.rb +1 -1
  32. data/lib/rake/rake_test_loader.rb +1 -1
  33. data/lib/rake/rule_recursion_overflow_error.rb +1 -1
  34. data/lib/rake/scope.rb +1 -1
  35. data/lib/rake/task.rb +13 -14
  36. data/lib/rake/task_arguments.rb +8 -4
  37. data/lib/rake/task_manager.rb +5 -18
  38. data/lib/rake/tasklib.rb +1 -1
  39. data/lib/rake/testtask.rb +26 -16
  40. data/lib/rake/thread_history_display.rb +3 -3
  41. data/lib/rake/thread_pool.rb +14 -14
  42. data/lib/rake/version.rb +2 -2
  43. data/lib/rake/win32.rb +8 -8
  44. data/rake.gemspec +15 -6
  45. metadata +20 -68
  46. data/doc/release_notes/README.md +0 -4
  47. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  48. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  49. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  50. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  51. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  52. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  53. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  54. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  55. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  56. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  57. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  58. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  59. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  60. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  61. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  62. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  63. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  64. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  65. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  66. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  67. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  68. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  69. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  70. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  71. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  72. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  73. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  74. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  75. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  76. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  77. data/lib/rake/contrib/compositepublisher.rb +0 -21
  78. data/lib/rake/contrib/ftptools.rb +0 -137
  79. data/lib/rake/contrib/sshpublisher.rb +0 -60
  80. data/lib/rake/ext/pathname.rb +0 -25
@@ -27,11 +27,11 @@ module Rake
27
27
  # synchronously. We will wait.
28
28
  def value
29
29
  unless complete?
30
- stat :sleeping_on, :item_id => object_id
30
+ stat :sleeping_on, item_id: object_id
31
31
  @mutex.synchronize do
32
- stat :has_lock_on, :item_id => object_id
32
+ stat :has_lock_on, item_id: object_id
33
33
  chore
34
- stat :releasing_lock_on, :item_id => object_id
34
+ stat :releasing_lock_on, item_id: object_id
35
35
  end
36
36
  end
37
37
  error? ? raise(@error) : @result
@@ -39,14 +39,14 @@ module Rake
39
39
 
40
40
  # If no one else is working this promise, go ahead and do the chore.
41
41
  def work
42
- stat :attempting_lock_on, :item_id => object_id
42
+ stat :attempting_lock_on, item_id: object_id
43
43
  if @mutex.try_lock
44
- stat :has_lock_on, :item_id => object_id
44
+ stat :has_lock_on, item_id: object_id
45
45
  chore
46
- stat :releasing_lock_on, :item_id => object_id
46
+ stat :releasing_lock_on, item_id: object_id
47
47
  @mutex.unlock
48
48
  else
49
- stat :bailed_on, :item_id => object_id
49
+ stat :bailed_on, item_id: object_id
50
50
  end
51
51
  end
52
52
 
@@ -55,16 +55,16 @@ module Rake
55
55
  # Perform the chore promised
56
56
  def chore
57
57
  if complete?
58
- stat :found_completed, :item_id => object_id
58
+ stat :found_completed, item_id: object_id
59
59
  return
60
60
  end
61
- stat :will_execute, :item_id => object_id
61
+ stat :will_execute, item_id: object_id
62
62
  begin
63
63
  @result = @block.call(*@args)
64
64
  rescue Exception => e
65
65
  @error = e
66
66
  end
67
- stat :did_execute, :item_id => object_id
67
+ stat :did_execute, item_id: object_id
68
68
  discard
69
69
  end
70
70
 
@@ -1,4 +1,4 @@
1
- require 'rake/application'
1
+ require "rake/application"
2
2
 
3
3
  module Rake
4
4
 
@@ -1,4 +1,4 @@
1
- require 'rake'
1
+ require "rake"
2
2
 
3
3
  # Load the test files from the command line.
4
4
  argv = ARGV.select do |argument|
@@ -12,7 +12,7 @@ module Rake
12
12
  end
13
13
 
14
14
  def message
15
- super + ": [" + @targets.reverse.join(' => ') + "]"
15
+ super + ": [" + @targets.reverse.join(" => ") + "]"
16
16
  end
17
17
  end
18
18
 
@@ -3,7 +3,7 @@ module Rake
3
3
 
4
4
  # Path for the scope.
5
5
  def path
6
- map { |item| item.to_s }.reverse.join(":")
6
+ map(&:to_s).reverse.join(":")
7
7
  end
8
8
 
9
9
  # Path for the scope + the named path.
@@ -1,4 +1,4 @@
1
- require 'rake/invocation_exception_mixin'
1
+ require "rake/invocation_exception_mixin"
2
2
 
3
3
  module Rake
4
4
 
@@ -141,11 +141,12 @@ module Rake
141
141
  @already_invoked = false
142
142
  end
143
143
 
144
- # Clear the existing prerequisites and actions of a rake task.
144
+ # Clear the existing prerequisites, actions, comments, and arguments of a rake task.
145
145
  def clear
146
146
  clear_prerequisites
147
147
  clear_actions
148
148
  clear_comments
149
+ clear_args
149
150
  self
150
151
  end
151
152
 
@@ -167,6 +168,12 @@ module Rake
167
168
  self
168
169
  end
169
170
 
171
+ # Clear the existing arguments on a rake task.
172
+ def clear_args
173
+ @arg_names = nil
174
+ self
175
+ end
176
+
170
177
  # Invoke the task if it is needed. Prerequisites are invoked first.
171
178
  def invoke(*args)
172
179
  task_args = TaskArguments.new(arg_names, args)
@@ -219,7 +226,7 @@ module Rake
219
226
  r.invoke_with_call_chain(prereq_args, invocation_chain)
220
227
  end
221
228
  end
222
- futures.each { |f| f.value }
229
+ futures.each(&:value)
223
230
  end
224
231
 
225
232
  # Format the trace flags for display.
@@ -240,14 +247,7 @@ module Rake
240
247
  end
241
248
  application.trace "** Execute #{name}" if application.options.trace
242
249
  application.enhance_with_matching_rule(name) if @actions.empty?
243
- @actions.each do |act|
244
- case act.arity
245
- when 1
246
- act.call(self)
247
- else
248
- act.call(self, args)
249
- end
250
- end
250
+ @actions.each { |act| act.call(self, args) }
251
251
  end
252
252
 
253
253
  # Is this task needed?
@@ -314,7 +314,7 @@ module Rake
314
314
  # Set the names of the arguments for this task. +args+ should be
315
315
  # an array of symbols, one for each argument name.
316
316
  def set_arg_names(args)
317
- @arg_names = args.map { |a| a.to_sym }
317
+ @arg_names = args.map(&:to_sym)
318
318
  end
319
319
 
320
320
  # Return a string describing the internal state of a task. Useful for
@@ -331,7 +331,7 @@ module Rake
331
331
  prereqs.each do |p|
332
332
  result << "--#{p.name} (#{p.timestamp})\n"
333
333
  end
334
- latest_prereq = prerequisite_tasks.map { |pre| pre.timestamp }.max
334
+ latest_prereq = prerequisite_tasks.map(&:timestamp).max
335
335
  result << "latest-prerequisite time: #{latest_prereq}\n"
336
336
  result << "................................\n\n"
337
337
  return result
@@ -382,7 +382,6 @@ module Rake
382
382
  # this kind of task. Generic tasks will accept the scope as
383
383
  # part of the name.
384
384
  def scope_name(scope, task_name)
385
- # (scope + [task_name]).join(':')
386
385
  scope.path_with_task_name(task_name)
387
386
  end
388
387
 
@@ -17,7 +17,7 @@ module Rake
17
17
  @hash = {}
18
18
  @values = values
19
19
  names.each_with_index { |name, i|
20
- next if values[i].nil? || values[i] == ''
20
+ next if values[i].nil? || values[i] == ""
21
21
  @hash[name.to_sym] = values[i]
22
22
  }
23
23
  end
@@ -68,15 +68,19 @@ module Rake
68
68
 
69
69
  # Returns a Hash of arguments and their values
70
70
  def to_hash
71
- @hash
71
+ @hash.dup
72
72
  end
73
73
 
74
74
  def to_s # :nodoc:
75
- @hash.inspect
75
+ inspect
76
76
  end
77
77
 
78
78
  def inspect # :nodoc:
79
- to_s
79
+ inspection = @hash.map do |k,v|
80
+ "#{k.to_s}: #{v.to_s}"
81
+ end.join(", ")
82
+
83
+ "#<#{self.class} #{inspection}>"
80
84
  end
81
85
 
82
86
  # Returns true if +key+ is one of the arguments
@@ -5,19 +5,6 @@ module Rake
5
5
  # Track the last comment made in the Rakefile.
6
6
  attr_accessor :last_description
7
7
 
8
- # Remove Rake 12
9
- def last_comment # :nodoc:
10
- warn "[DEPRECATION] `last_comment` is deprecated. Please use `last_description` instead."
11
- @last_description
12
- end
13
-
14
- # Remove Rake 12
15
- def last_comment=(comment) # :nodoc:
16
- warn "[DEPRECATION] `last_comment=` is deprecated. Please use `last_description=` instead."
17
- @last_description = comment
18
- @last_description # ignore warning
19
- end
20
-
21
8
  def initialize # :nodoc:
22
9
  super
23
10
  @tasks = Hash.new
@@ -28,7 +15,7 @@ module Rake
28
15
 
29
16
  def create_rule(*args, &block) # :nodoc:
30
17
  pattern, args, deps = resolve_args(args)
31
- pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern
18
+ pattern = Regexp.new(Regexp.quote(pattern) + "$") if String === pattern
32
19
  @rules << [pattern, args, deps, block]
33
20
  end
34
21
 
@@ -37,7 +24,7 @@ module Rake
37
24
 
38
25
  original_scope = @scope
39
26
  if String === task_name and
40
- not task_class.ancestors.include? Rake::FileTask then
27
+ not task_class.ancestors.include? Rake::FileTask
41
28
  task_name, *definition_scope = *(task_name.split(":").reverse)
42
29
  @scope = Scope.make(*(definition_scope + @scope.to_a))
43
30
  end
@@ -180,10 +167,10 @@ module Rake
180
167
  task_name = task_name.to_s
181
168
  if task_name =~ /^rake:/
182
169
  scopes = Scope.make
183
- task_name = task_name.sub(/^rake:/, '')
170
+ task_name = task_name.sub(/^rake:/, "")
184
171
  elsif task_name =~ /^(\^+)/
185
172
  scopes = initial_scope.trim($1.size)
186
- task_name = task_name.sub(/^(\^+)/, '')
173
+ task_name = task_name.sub(/^(\^+)/, "")
187
174
  else
188
175
  scopes = initial_scope
189
176
  end
@@ -269,7 +256,7 @@ module Rake
269
256
  return nil
270
257
  end
271
258
  }
272
- task = FileTask.define_task(task_name, {args => prereqs}, &block)
259
+ task = FileTask.define_task(task_name, { args => prereqs }, &block)
273
260
  task.sources = prereqs
274
261
  task
275
262
  end
@@ -1,4 +1,4 @@
1
- require 'rake'
1
+ require "rake"
2
2
 
3
3
  module Rake
4
4
 
@@ -1,5 +1,5 @@
1
- require 'rake'
2
- require 'rake/tasklib'
1
+ require "rake"
2
+ require "rake/tasklib"
3
3
 
4
4
  module Rake
5
5
 
@@ -98,7 +98,7 @@ module Rake
98
98
  @name = @name.keys.first
99
99
  end
100
100
  yield self if block_given?
101
- @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
101
+ @pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil?
102
102
  define
103
103
  end
104
104
 
@@ -107,6 +107,8 @@ module Rake
107
107
  desc @description
108
108
  task @name => Array(deps) do
109
109
  FileUtilsExt.verbose(@verbose) do
110
+ puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \
111
+ ", etc. to runners." if ARGV.include? "--verbose"
110
112
  args =
111
113
  "#{ruby_opts_string} #{run_code} " +
112
114
  "#{file_list_string} #{option_list}"
@@ -114,8 +116,16 @@ module Rake
114
116
  if !ok && status.respond_to?(:signaled?) && status.signaled?
115
117
  raise SignalException.new(status.termsig)
116
118
  elsif !ok
117
- fail "Command failed with status (#{status.exitstatus}): " +
118
- "[ruby #{args}]"
119
+ status = "Command failed with status (#{status.exitstatus})"
120
+ details = ": [ruby #{args}]"
121
+ message =
122
+ if Rake.application.options.trace or @verbose then
123
+ status + details
124
+ else
125
+ status
126
+ end
127
+
128
+ fail message
119
129
  end
120
130
  end
121
131
  end
@@ -124,10 +134,10 @@ module Rake
124
134
  end
125
135
 
126
136
  def option_list # :nodoc:
127
- (ENV['TESTOPTS'] ||
128
- ENV['TESTOPT'] ||
129
- ENV['TEST_OPTS'] ||
130
- ENV['TEST_OPT'] ||
137
+ (ENV["TESTOPTS"] ||
138
+ ENV["TESTOPT"] ||
139
+ ENV["TEST_OPTS"] ||
140
+ ENV["TEST_OPT"] ||
131
141
  @options ||
132
142
  "")
133
143
  end
@@ -144,16 +154,16 @@ module Rake
144
154
  end
145
155
 
146
156
  def file_list_string # :nodoc:
147
- file_list.map { |fn| "\"#{fn}\"" }.join(' ')
157
+ file_list.map { |fn| "\"#{fn}\"" }.join(" ")
148
158
  end
149
159
 
150
160
  def file_list # :nodoc:
151
- if ENV['TEST']
152
- FileList[ENV['TEST']]
161
+ if ENV["TEST"]
162
+ FileList[ENV["TEST"]]
153
163
  else
154
164
  result = []
155
165
  result += @test_files.to_a if @test_files
156
- result << @pattern if @pattern
166
+ result += FileList[@pattern].to_a if @pattern
157
167
  result
158
168
  end
159
169
  end
@@ -174,7 +184,7 @@ module Rake
174
184
  end
175
185
 
176
186
  def rake_loader # :nodoc:
177
- find_file('rake/rake_test_loader') or
187
+ find_file("rake/rake_test_loader") or
178
188
  fail "unable to find rake test loader"
179
189
  end
180
190
 
@@ -187,7 +197,7 @@ module Rake
187
197
  end
188
198
 
189
199
  def rake_include_arg # :nodoc:
190
- spec = Gem.loaded_specs['rake']
200
+ spec = Gem.loaded_specs["rake"]
191
201
  if spec.respond_to?(:default_gem?) && spec.default_gem?
192
202
  ""
193
203
  else
@@ -196,7 +206,7 @@ module Rake
196
206
  end
197
207
 
198
208
  def rake_lib_dir # :nodoc:
199
- find_dir('rake') or
209
+ find_dir("rake") or
200
210
  fail "unable to find rake lib"
201
211
  end
202
212
 
@@ -1,4 +1,4 @@
1
- require 'rake/private_reader'
1
+ require "rake/private_reader"
2
2
 
3
3
  module Rake
4
4
 
@@ -9,8 +9,8 @@ module Rake
9
9
 
10
10
  def initialize(stats)
11
11
  @stats = stats
12
- @items = { :_seq_ => 1 }
13
- @threads = { :_seq_ => "A" }
12
+ @items = { _seq_: 1 }
13
+ @threads = { _seq_: "A" }
14
14
  end
15
15
 
16
16
  def show
@@ -1,6 +1,6 @@
1
- require 'set'
1
+ require "set"
2
2
 
3
- require 'rake/promise'
3
+ require "rake/promise"
4
4
 
5
5
  module Rake
6
6
 
@@ -34,7 +34,7 @@ module Rake
34
34
  promise.recorder = lambda { |*stats| stat(*stats) }
35
35
 
36
36
  @queue.enq promise
37
- stat :queued, :item_id => promise.object_id
37
+ stat :queued, item_id: promise.object_id
38
38
  start_thread
39
39
  promise
40
40
  end
@@ -82,8 +82,8 @@ module Rake
82
82
  # Return a hash of always collected statistics for the thread pool.
83
83
  def statistics # :nodoc:
84
84
  {
85
- :total_threads_in_play => @total_threads_in_play,
86
- :max_active_threads => @max_active_threads,
85
+ total_threads_in_play: @total_threads_in_play,
86
+ max_active_threads: @max_active_threads,
87
87
  }
88
88
  end
89
89
 
@@ -99,11 +99,11 @@ module Rake
99
99
  # is now gone. For this reason we pass true to Queue#deq
100
100
  # because we will sleep indefinitely if it is empty.
101
101
  promise = @queue.deq(true)
102
- stat :dequeued, :item_id => promise.object_id
102
+ stat :dequeued, item_id: promise.object_id
103
103
  promise.work
104
104
  return true
105
105
 
106
- rescue ThreadError # this means the queue is empty
106
+ rescue ThreadError # this means the queue is empty
107
107
  false
108
108
  end
109
109
 
@@ -125,7 +125,7 @@ module Rake
125
125
  ensure
126
126
  @threads_mon.synchronize do
127
127
  @threads.delete Thread.current
128
- stat :ended, :thread_count => @threads.count
128
+ stat :ended, thread_count: @threads.count
129
129
  @join_cond.broadcast if @threads.empty?
130
130
  end
131
131
  end
@@ -134,8 +134,8 @@ module Rake
134
134
  @threads << t
135
135
  stat(
136
136
  :spawned,
137
- :new_thread => t.object_id,
138
- :thread_count => @threads.count)
137
+ new_thread: t.object_id,
138
+ thread_count: @threads.count)
139
139
  @total_threads_in_play = @threads.count if
140
140
  @threads.count > @total_threads_in_play
141
141
  end
@@ -144,10 +144,10 @@ module Rake
144
144
  def stat(event, data=nil) # :nodoc:
145
145
  return if @history_start_time.nil?
146
146
  info = {
147
- :event => event,
148
- :data => data,
149
- :time => Time.now,
150
- :thread => Thread.current.object_id,
147
+ event: event,
148
+ data: data,
149
+ time: Time.now,
150
+ thread: Thread.current.object_id,
151
151
  }
152
152
  @history_mon.synchronize { @history << info }
153
153
  end