rake 10.4.2 → 13.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (168) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +16 -7
  3. data/Gemfile +10 -0
  4. data/History.rdoc +2022 -287
  5. data/README.rdoc +40 -25
  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/glossary.rdoc +10 -11
  14. data/doc/jamis.rb +1 -0
  15. data/doc/rake.1 +139 -124
  16. data/doc/rakefile.rdoc +2 -33
  17. data/exe/rake +27 -0
  18. data/lib/rake.rb +35 -43
  19. data/lib/rake/application.rb +125 -91
  20. data/lib/rake/backtrace.rb +3 -2
  21. data/lib/rake/clean.rb +8 -6
  22. data/lib/rake/cloneable.rb +1 -0
  23. data/lib/rake/cpu_counter.rb +10 -28
  24. data/lib/rake/default_loader.rb +1 -0
  25. data/lib/rake/dsl_definition.rb +6 -12
  26. data/lib/rake/early_time.rb +1 -0
  27. data/lib/rake/ext/core.rb +1 -0
  28. data/lib/rake/ext/string.rb +24 -21
  29. data/lib/rake/file_creation_task.rb +4 -3
  30. data/lib/rake/file_list.rb +35 -28
  31. data/lib/rake/file_task.rb +12 -4
  32. data/lib/rake/file_utils.rb +38 -32
  33. data/lib/rake/file_utils_ext.rb +8 -18
  34. data/lib/rake/invocation_chain.rb +1 -0
  35. data/lib/rake/invocation_exception_mixin.rb +1 -0
  36. data/lib/rake/late_time.rb +2 -1
  37. data/lib/rake/linked_list.rb +24 -15
  38. data/lib/rake/loaders/makefile.rb +23 -9
  39. data/lib/rake/multi_task.rb +2 -1
  40. data/lib/rake/name_space.rb +1 -1
  41. data/lib/rake/packagetask.rb +40 -17
  42. data/lib/rake/phony.rb +2 -1
  43. data/lib/rake/private_reader.rb +1 -0
  44. data/lib/rake/promise.rb +13 -12
  45. data/lib/rake/pseudo_status.rb +1 -0
  46. data/lib/rake/rake_module.rb +30 -1
  47. data/lib/rake/rake_test_loader.rb +18 -13
  48. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  49. data/lib/rake/scope.rb +3 -2
  50. data/lib/rake/task.rb +82 -31
  51. data/lib/rake/task_argument_error.rb +1 -0
  52. data/lib/rake/task_arguments.rb +15 -4
  53. data/lib/rake/task_manager.rb +54 -33
  54. data/lib/rake/tasklib.rb +2 -14
  55. data/lib/rake/testtask.rb +40 -63
  56. data/lib/rake/thread_history_display.rb +4 -3
  57. data/lib/rake/thread_pool.rb +16 -17
  58. data/lib/rake/trace_output.rb +2 -1
  59. data/lib/rake/version.rb +4 -1
  60. data/lib/rake/win32.rb +10 -15
  61. data/rake.gemspec +43 -0
  62. metadata +33 -270
  63. data/.autotest +0 -7
  64. data/.gemtest +0 -0
  65. data/.rubocop.yml +0 -27
  66. data/.togglerc +0 -7
  67. data/Manifest.txt +0 -166
  68. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  69. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  70. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  71. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  72. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  73. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  74. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  75. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  76. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  77. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  78. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  79. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  80. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  81. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  82. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  83. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  84. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  85. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  86. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  87. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  88. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  89. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  90. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  91. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  92. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  93. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  94. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  95. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  96. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  97. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  98. data/lib/rake/alt_system.rb +0 -110
  99. data/lib/rake/contrib/.document +0 -1
  100. data/lib/rake/contrib/compositepublisher.rb +0 -21
  101. data/lib/rake/contrib/ftptools.rb +0 -137
  102. data/lib/rake/contrib/publisher.rb +0 -81
  103. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  104. data/lib/rake/contrib/sshpublisher.rb +0 -61
  105. data/lib/rake/contrib/sys.rb +0 -4
  106. data/lib/rake/ext/module.rb +0 -2
  107. data/lib/rake/ext/pathname.rb +0 -25
  108. data/lib/rake/ext/time.rb +0 -16
  109. data/lib/rake/gempackagetask.rb +0 -4
  110. data/lib/rake/pathmap.rb +0 -3
  111. data/lib/rake/rdoctask.rb +0 -4
  112. data/lib/rake/ruby182_test_unit_fix.rb +0 -29
  113. data/lib/rake/runtest.rb +0 -27
  114. data/rakelib/publish.rake +0 -20
  115. data/rakelib/test_times.rake +0 -25
  116. data/test/file_creation.rb +0 -34
  117. data/test/helper.rb +0 -130
  118. data/test/support/rakefile_definitions.rb +0 -478
  119. data/test/support/ruby_runner.rb +0 -34
  120. data/test/test_private_reader.rb +0 -42
  121. data/test/test_rake.rb +0 -40
  122. data/test/test_rake_application.rb +0 -643
  123. data/test/test_rake_application_options.rb +0 -466
  124. data/test/test_rake_backtrace.rb +0 -119
  125. data/test/test_rake_clean.rb +0 -61
  126. data/test/test_rake_cpu_counter.rb +0 -68
  127. data/test/test_rake_definitions.rb +0 -84
  128. data/test/test_rake_directory_task.rb +0 -76
  129. data/test/test_rake_dsl.rb +0 -40
  130. data/test/test_rake_early_time.rb +0 -31
  131. data/test/test_rake_extension.rb +0 -59
  132. data/test/test_rake_file_creation_task.rb +0 -56
  133. data/test/test_rake_file_list.rb +0 -655
  134. data/test/test_rake_file_list_path_map.rb +0 -8
  135. data/test/test_rake_file_task.rb +0 -197
  136. data/test/test_rake_file_utils.rb +0 -309
  137. data/test/test_rake_ftp_file.rb +0 -74
  138. data/test/test_rake_functional.rb +0 -482
  139. data/test/test_rake_invocation_chain.rb +0 -64
  140. data/test/test_rake_late_time.rb +0 -18
  141. data/test/test_rake_linked_list.rb +0 -84
  142. data/test/test_rake_makefile_loader.rb +0 -46
  143. data/test/test_rake_multi_task.rb +0 -64
  144. data/test/test_rake_name_space.rb +0 -57
  145. data/test/test_rake_package_task.rb +0 -79
  146. data/test/test_rake_path_map.rb +0 -168
  147. data/test/test_rake_path_map_explode.rb +0 -34
  148. data/test/test_rake_path_map_partial.rb +0 -18
  149. data/test/test_rake_pathname_extensions.rb +0 -15
  150. data/test/test_rake_pseudo_status.rb +0 -21
  151. data/test/test_rake_rake_test_loader.rb +0 -20
  152. data/test/test_rake_reduce_compat.rb +0 -26
  153. data/test/test_rake_require.rb +0 -40
  154. data/test/test_rake_rules.rb +0 -388
  155. data/test/test_rake_scope.rb +0 -44
  156. data/test/test_rake_task.rb +0 -393
  157. data/test/test_rake_task_argument_parsing.rb +0 -119
  158. data/test/test_rake_task_arguments.rb +0 -127
  159. data/test/test_rake_task_lib.rb +0 -9
  160. data/test/test_rake_task_manager.rb +0 -178
  161. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  162. data/test/test_rake_task_with_arguments.rb +0 -172
  163. data/test/test_rake_test_task.rb +0 -146
  164. data/test/test_rake_thread_pool.rb +0 -145
  165. data/test/test_rake_top_level_functions.rb +0 -71
  166. data/test/test_rake_win32.rb +0 -72
  167. data/test/test_thread_history_display.rb +0 -101
  168. data/test/test_trace_output.rb +0 -52
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # Error indicating an ill-formed task declaration.
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  ##
@@ -17,7 +18,8 @@ module Rake
17
18
  @hash = {}
18
19
  @values = values
19
20
  names.each_with_index { |name, i|
20
- @hash[name.to_sym] = values[i] unless values[i].nil?
21
+ next if values[i].nil? || values[i] == ""
22
+ @hash[name.to_sym] = values[i]
21
23
  }
22
24
  end
23
25
 
@@ -67,21 +69,30 @@ module Rake
67
69
 
68
70
  # Returns a Hash of arguments and their values
69
71
  def to_hash
70
- @hash
72
+ @hash.dup
71
73
  end
72
74
 
73
75
  def to_s # :nodoc:
74
- @hash.inspect
76
+ inspect
75
77
  end
76
78
 
77
79
  def inspect # :nodoc:
78
- to_s
80
+ inspection = @hash.map do |k,v|
81
+ "#{k.to_s}: #{v.to_s}"
82
+ end.join(", ")
83
+
84
+ "#<#{self.class} #{inspection}>"
79
85
  end
80
86
 
81
87
  # Returns true if +key+ is one of the arguments
82
88
  def has_key?(key)
83
89
  @hash.has_key?(key)
84
90
  end
91
+ alias key? has_key?
92
+
93
+ def fetch(*args, &block)
94
+ @hash.fetch(*args, &block)
95
+ end
85
96
 
86
97
  protected
87
98
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Rake
2
3
 
3
4
  # The TaskManager module is a mixin for managing tasks.
@@ -5,10 +6,6 @@ module Rake
5
6
  # Track the last comment made in the Rakefile.
6
7
  attr_accessor :last_description
7
8
 
8
- # TODO: Remove in Rake 11
9
-
10
- alias :last_comment :last_description # :nodoc: Backwards compatibility
11
-
12
9
  def initialize # :nodoc:
13
10
  super
14
11
  @tasks = Hash.new
@@ -18,31 +15,31 @@ module Rake
18
15
  end
19
16
 
20
17
  def create_rule(*args, &block) # :nodoc:
21
- pattern, args, deps = resolve_args(args)
22
- pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern
23
- @rules << [pattern, args, deps, block]
18
+ pattern, args, deps, order_only = resolve_args(args)
19
+ pattern = Regexp.new(Regexp.quote(pattern) + "$") if String === pattern
20
+ @rules << [pattern, args, deps, order_only, block]
24
21
  end
25
22
 
26
23
  def define_task(task_class, *args, &block) # :nodoc:
27
- task_name, arg_names, deps = resolve_args(args)
24
+ task_name, arg_names, deps, order_only = resolve_args(args)
28
25
 
29
26
  original_scope = @scope
30
27
  if String === task_name and
31
- not task_class.ancestors.include? Rake::FileTask then
28
+ not task_class.ancestors.include? Rake::FileTask
32
29
  task_name, *definition_scope = *(task_name.split(":").reverse)
33
30
  @scope = Scope.make(*(definition_scope + @scope.to_a))
34
31
  end
35
32
 
36
33
  task_name = task_class.scope_name(@scope, task_name)
37
- deps = [deps] unless deps.respond_to?(:to_ary)
38
- deps = deps.map { |d| Rake.from_pathname(d).to_s }
39
34
  task = intern(task_class, task_name)
40
35
  task.set_arg_names(arg_names) unless arg_names.empty?
41
36
  if Rake::TaskManager.record_task_metadata
42
37
  add_location(task)
43
38
  task.add_description(get_description(task))
44
39
  end
45
- task.enhance(deps, &block)
40
+ task.enhance(Task.format_deps(deps), &block)
41
+ task | order_only unless order_only.nil?
42
+ task
46
43
  ensure
47
44
  @scope = original_scope
48
45
  end
@@ -59,7 +56,26 @@ module Rake
59
56
  self.lookup(task_name, scopes) or
60
57
  enhance_with_matching_rule(task_name) or
61
58
  synthesize_file_task(task_name) or
62
- fail "Don't know how to build task '#{task_name}'"
59
+ fail generate_message_for_undefined_task(task_name)
60
+ end
61
+
62
+ def generate_message_for_undefined_task(task_name)
63
+ message = "Don't know how to build task '#{task_name}' "\
64
+ "(See the list of available tasks with `#{Rake.application.name} --tasks`)"
65
+ message + generate_did_you_mean_suggestions(task_name)
66
+ end
67
+
68
+ def generate_did_you_mean_suggestions(task_name)
69
+ return "" unless defined?(::DidYouMean::SpellChecker)
70
+
71
+ suggestions = ::DidYouMean::SpellChecker.new(dictionary: @tasks.keys).correct(task_name.to_s)
72
+ if ::DidYouMean.respond_to?(:formatter)# did_you_mean v1.2.0 or later
73
+ ::DidYouMean.formatter.message_for(suggestions)
74
+ elsif defined?(::DidYouMean::Formatter) # before did_you_mean v1.2.0
75
+ ::DidYouMean::Formatter.new(suggestions).to_s
76
+ else
77
+ ""
78
+ end
63
79
  end
64
80
 
65
81
  def synthesize_file_task(task_name) # :nodoc:
@@ -67,8 +83,8 @@ module Rake
67
83
  define_task(Rake::FileTask, task_name)
68
84
  end
69
85
 
70
- # Resolve the arguments for a task/rule. Returns a triplet of
71
- # [task_name, arg_name_list, prerequisites].
86
+ # Resolve the arguments for a task/rule. Returns a tuple of
87
+ # [task_name, arg_name_list, prerequisites, order_only_prerequisites].
72
88
  def resolve_args(args)
73
89
  if args.last.is_a?(Hash)
74
90
  deps = args.pop
@@ -93,7 +109,7 @@ module Rake
93
109
  else
94
110
  arg_names = args
95
111
  end
96
- [task_name, arg_names, []]
112
+ [task_name, arg_names, [], nil]
97
113
  end
98
114
  private :resolve_args_without_dependencies
99
115
 
@@ -102,11 +118,17 @@ module Rake
102
118
  #
103
119
  # The patterns recognized by this argument resolving function are:
104
120
  #
121
+ # task :t, order_only: [:e]
105
122
  # task :t => [:d]
123
+ # task :t => [:d], order_only: [:e]
106
124
  # task :t, [a] => [:d]
125
+ # task :t, [a] => [:d], order_only: [:e]
107
126
  #
108
127
  def resolve_args_with_dependencies(args, hash) # :nodoc:
109
- fail "Task Argument Error" if hash.size != 1
128
+ fail "Task Argument Error" if
129
+ hash.size != 1 &&
130
+ (hash.size != 2 || !hash.key?(:order_only))
131
+ order_only = hash.delete(:order_only)
110
132
  key, value = hash.map { |k, v| [k, v] }.first
111
133
  if args.empty?
112
134
  task_name = key
@@ -114,11 +136,11 @@ module Rake
114
136
  deps = value || []
115
137
  else
116
138
  task_name = args.shift
117
- arg_names = key
118
- deps = value
139
+ arg_names = key || args.shift|| []
140
+ deps = value || []
119
141
  end
120
142
  deps = [deps] unless deps.respond_to?(:to_ary)
121
- [task_name, arg_names, deps]
143
+ [task_name, arg_names, deps, order_only]
122
144
  end
123
145
  private :resolve_args_with_dependencies
124
146
 
@@ -129,9 +151,10 @@ module Rake
129
151
  def enhance_with_matching_rule(task_name, level=0)
130
152
  fail Rake::RuleRecursionOverflowError,
131
153
  "Rule Recursion Too Deep" if level >= 16
132
- @rules.each do |pattern, args, extensions, block|
133
- if pattern.match(task_name)
134
- task = attempt_rule(task_name, args, extensions, block, level)
154
+ @rules.each do |pattern, args, extensions, order_only, block|
155
+ if pattern && pattern.match(task_name)
156
+ task = attempt_rule(task_name, pattern, args, extensions, block, level)
157
+ task | order_only unless order_only.nil?
135
158
  return task if task
136
159
  end
137
160
  end
@@ -171,10 +194,10 @@ module Rake
171
194
  task_name = task_name.to_s
172
195
  if task_name =~ /^rake:/
173
196
  scopes = Scope.make
174
- task_name = task_name.sub(/^rake:/, '')
197
+ task_name = task_name.sub(/^rake:/, "")
175
198
  elsif task_name =~ /^(\^+)/
176
199
  scopes = initial_scope.trim($1.size)
177
- task_name = task_name.sub(/^(\^+)/, '')
200
+ task_name = task_name.sub(/^(\^+)/, "")
178
201
  else
179
202
  scopes = initial_scope
180
203
  end
@@ -245,8 +268,8 @@ module Rake
245
268
  end
246
269
 
247
270
  # Attempt to create a rule given the list of prerequisites.
248
- def attempt_rule(task_name, args, extensions, block, level)
249
- sources = make_sources(task_name, extensions)
271
+ def attempt_rule(task_name, task_pattern, args, extensions, block, level)
272
+ sources = make_sources(task_name, task_pattern, extensions)
250
273
  prereqs = sources.map { |source|
251
274
  trace_rule level, "Attempting Rule #{task_name} => #{source}"
252
275
  if File.exist?(source) || Rake::Task.task_defined?(source)
@@ -260,14 +283,14 @@ module Rake
260
283
  return nil
261
284
  end
262
285
  }
263
- task = FileTask.define_task(task_name, {args => prereqs}, &block)
286
+ task = FileTask.define_task(task_name, { args => prereqs }, &block)
264
287
  task.sources = prereqs
265
288
  task
266
289
  end
267
290
 
268
291
  # Make a list of sources from the list of file name extensions /
269
292
  # translation procs.
270
- def make_sources(task_name, extensions)
293
+ def make_sources(task_name, task_pattern, extensions)
271
294
  result = extensions.map { |ext|
272
295
  case ext
273
296
  when /%/
@@ -275,7 +298,8 @@ module Rake
275
298
  when %r{/}
276
299
  ext
277
300
  when /^\./
278
- task_name.ext(ext)
301
+ source = task_name.sub(task_pattern, ext)
302
+ source == ext ? task_name.ext(ext) : source
279
303
  when String
280
304
  ext
281
305
  when Proc, Method
@@ -291,9 +315,6 @@ module Rake
291
315
  result.flatten
292
316
  end
293
317
 
294
-
295
- private
296
-
297
318
  # Return the current description, clearing it in the process.
298
319
  def get_description(task)
299
320
  desc = @last_description
data/lib/rake/tasklib.rb CHANGED
@@ -1,4 +1,5 @@
1
- require 'rake'
1
+ # frozen_string_literal: true
2
+ require "rake"
2
3
 
3
4
  module Rake
4
5
 
@@ -6,19 +7,6 @@ module Rake
6
7
  class TaskLib
7
8
  include Cloneable
8
9
  include Rake::DSL
9
-
10
- # Make a symbol by pasting two strings together.
11
- #
12
- # NOTE: DEPRECATED! This method is kinda stupid. I don't know why
13
- # I didn't just use string interpolation. But now other task
14
- # libraries depend on this so I can't remove it without breaking
15
- # other people's code. So for now it stays for backwards
16
- # compatibility. BUT DON'T USE IT.
17
- #--
18
- # TODO: Remove in Rake 11
19
- def paste(a, b) # :nodoc:
20
- (a.to_s + b.to_s).intern
21
- end
22
10
  end
23
11
 
24
12
  end
data/lib/rake/testtask.rb CHANGED
@@ -1,11 +1,13 @@
1
- require 'rake'
2
- require 'rake/tasklib'
1
+ # frozen_string_literal: true
2
+ require "rake"
3
+ require "rake/tasklib"
3
4
 
4
5
  module Rake
5
6
 
6
7
  # Create a task that runs a set of tests.
7
8
  #
8
9
  # Example:
10
+ # require "rake/testtask"
9
11
  #
10
12
  # Rake::TestTask.new do |t|
11
13
  # t.libs << "test"
@@ -35,7 +37,7 @@ module Rake
35
37
  # Name of test task. (default is :test)
36
38
  attr_accessor :name
37
39
 
38
- # List of directories to added to $LOAD_PATH before running the
40
+ # List of directories added to $LOAD_PATH before running the
39
41
  # tests. (default is 'lib')
40
42
  attr_accessor :libs
41
43
 
@@ -49,6 +51,7 @@ module Rake
49
51
 
50
52
  # Request that the tests be run with the warning flag set.
51
53
  # E.g. warning=true implies "ruby -w" used to run the tests.
54
+ # (default is true)
52
55
  attr_accessor :warning
53
56
 
54
57
  # Glob pattern to match test files. (default is 'test/test*.rb')
@@ -62,12 +65,15 @@ module Rake
62
65
  #
63
66
  attr_accessor :loader
64
67
 
65
- # Array of commandline options to pass to ruby when running test loader.
68
+ # Array of command line options to pass to ruby when running test loader.
66
69
  attr_accessor :ruby_opts
67
70
 
68
71
  # Description of the test task. (default is 'Run tests')
69
72
  attr_accessor :description
70
73
 
74
+ # Task prerequisites.
75
+ attr_accessor :deps
76
+
71
77
  # Explicitly define the list of test files to be included in a
72
78
  # test. +list+ is expected to be an array of file names (a
73
79
  # FileList is acceptable). If both +pattern+ and +test_files+ are
@@ -84,20 +90,27 @@ module Rake
84
90
  @options = nil
85
91
  @test_files = nil
86
92
  @verbose = false
87
- @warning = false
93
+ @warning = true
88
94
  @loader = :rake
89
95
  @ruby_opts = []
90
96
  @description = "Run tests" + (@name == :test ? "" : " for #{@name}")
97
+ @deps = []
98
+ if @name.is_a?(Hash)
99
+ @deps = @name.values.first
100
+ @name = @name.keys.first
101
+ end
91
102
  yield self if block_given?
92
- @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil?
103
+ @pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil?
93
104
  define
94
105
  end
95
106
 
96
107
  # Create the tasks defined by this task lib.
97
108
  def define
98
109
  desc @description
99
- task @name do
110
+ task @name => Array(deps) do
100
111
  FileUtilsExt.verbose(@verbose) do
112
+ puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \
113
+ ", etc. to runners." if ARGV.include? "--verbose"
101
114
  args =
102
115
  "#{ruby_opts_string} #{run_code} " +
103
116
  "#{file_list_string} #{option_list}"
@@ -105,8 +118,16 @@ module Rake
105
118
  if !ok && status.respond_to?(:signaled?) && status.signaled?
106
119
  raise SignalException.new(status.termsig)
107
120
  elsif !ok
108
- fail "Command failed with status (#{status.exitstatus}): " +
109
- "[ruby #{args}]"
121
+ status = "Command failed with status (#{status.exitstatus})"
122
+ details = ": [ruby #{args}]"
123
+ message =
124
+ if Rake.application.options.trace or @verbose
125
+ status + details
126
+ else
127
+ status
128
+ end
129
+
130
+ fail message
110
131
  end
111
132
  end
112
133
  end
@@ -115,10 +136,10 @@ module Rake
115
136
  end
116
137
 
117
138
  def option_list # :nodoc:
118
- (ENV['TESTOPTS'] ||
119
- ENV['TESTOPT'] ||
120
- ENV['TEST_OPTS'] ||
121
- ENV['TEST_OPT'] ||
139
+ (ENV["TESTOPTS"] ||
140
+ ENV["TESTOPT"] ||
141
+ ENV["TEST_OPTS"] ||
142
+ ENV["TEST_OPT"] ||
122
143
  @options ||
123
144
  "")
124
145
  end
@@ -135,29 +156,20 @@ module Rake
135
156
  end
136
157
 
137
158
  def file_list_string # :nodoc:
138
- file_list.map { |fn| "\"#{fn}\"" }.join(' ')
159
+ file_list.map { |fn| "\"#{fn}\"" }.join(" ")
139
160
  end
140
161
 
141
162
  def file_list # :nodoc:
142
- if ENV['TEST']
143
- FileList[ENV['TEST']]
163
+ if ENV["TEST"]
164
+ FileList[ENV["TEST"]]
144
165
  else
145
166
  result = []
146
167
  result += @test_files.to_a if @test_files
147
- result << @pattern if @pattern
168
+ result += FileList[@pattern].to_a if @pattern
148
169
  result
149
170
  end
150
171
  end
151
172
 
152
- def fix # :nodoc:
153
- case ruby_version
154
- when '1.8.2'
155
- "\"#{find_file 'rake/ruby182_test_unit_fix'}\""
156
- else
157
- nil
158
- end || ''
159
- end
160
-
161
173
  def ruby_version # :nodoc:
162
174
  RUBY_VERSION
163
175
  end
@@ -167,45 +179,10 @@ module Rake
167
179
  when :direct
168
180
  "-e \"ARGV.each{|f| require f}\""
169
181
  when :testrb
170
- "-S testrb #{fix}"
182
+ "-S testrb"
171
183
  when :rake
172
- "#{rake_include_arg} \"#{rake_loader}\""
173
- end
174
- end
175
-
176
- def rake_loader # :nodoc:
177
- find_file('rake/rake_test_loader') or
178
- fail "unable to find rake test loader"
179
- end
180
-
181
- def find_file(fn) # :nodoc:
182
- $LOAD_PATH.each do |path|
183
- file_path = File.join(path, "#{fn}.rb")
184
- return file_path if File.exist? file_path
185
- end
186
- nil
187
- end
188
-
189
- def rake_include_arg # :nodoc:
190
- spec = Gem.loaded_specs['rake']
191
- if spec.respond_to?(:default_gem?) && spec.default_gem?
192
- ""
193
- else
194
- "-I\"#{rake_lib_dir}\""
195
- end
196
- end
197
-
198
- def rake_lib_dir # :nodoc:
199
- find_dir('rake') or
200
- fail "unable to find rake lib"
201
- end
202
-
203
- def find_dir(fn) # :nodoc:
204
- $LOAD_PATH.each do |path|
205
- file_path = File.join(path, "#{fn}.rb")
206
- return path if File.exist? file_path
184
+ "#{__dir__}/rake_test_loader.rb"
207
185
  end
208
- nil
209
186
  end
210
187
 
211
188
  end