rake 10.4.2 → 13.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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