rake 10.5.0 → 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.
- checksums.yaml +5 -5
- data/CONTRIBUTING.rdoc +13 -8
- data/Gemfile +10 -0
- data/History.rdoc +2015 -288
- data/README.rdoc +40 -24
- data/Rakefile +25 -65
- data/bin/bundle +105 -0
- data/bin/console +7 -0
- data/bin/rake +20 -24
- data/bin/rdoc +29 -0
- data/bin/rubocop +29 -0
- data/bin/setup +6 -0
- data/doc/jamis.rb +1 -0
- data/doc/rake.1 +139 -124
- data/doc/rakefile.rdoc +2 -4
- data/exe/rake +27 -0
- data/lib/rake.rb +35 -43
- data/lib/rake/application.rb +124 -90
- data/lib/rake/backtrace.rb +3 -2
- data/lib/rake/clean.rb +7 -5
- data/lib/rake/cloneable.rb +1 -0
- data/lib/rake/cpu_counter.rb +10 -28
- data/lib/rake/default_loader.rb +1 -0
- data/lib/rake/dsl_definition.rb +5 -11
- data/lib/rake/early_time.rb +1 -0
- data/lib/rake/ext/core.rb +1 -0
- data/lib/rake/ext/string.rb +22 -21
- data/lib/rake/file_creation_task.rb +4 -3
- data/lib/rake/file_list.rb +34 -27
- data/lib/rake/file_task.rb +12 -4
- data/lib/rake/file_utils.rb +38 -32
- data/lib/rake/file_utils_ext.rb +8 -18
- data/lib/rake/invocation_chain.rb +1 -0
- data/lib/rake/invocation_exception_mixin.rb +1 -0
- data/lib/rake/late_time.rb +2 -1
- data/lib/rake/linked_list.rb +24 -15
- data/lib/rake/loaders/makefile.rb +5 -4
- data/lib/rake/multi_task.rb +2 -1
- data/lib/rake/name_space.rb +1 -1
- data/lib/rake/packagetask.rb +40 -17
- data/lib/rake/phony.rb +2 -1
- data/lib/rake/private_reader.rb +1 -0
- data/lib/rake/promise.rb +13 -12
- data/lib/rake/pseudo_status.rb +1 -0
- data/lib/rake/rake_module.rb +30 -1
- data/lib/rake/rake_test_loader.rb +18 -13
- data/lib/rake/rule_recursion_overflow_error.rb +2 -2
- data/lib/rake/scope.rb +3 -2
- data/lib/rake/task.rb +82 -31
- data/lib/rake/task_argument_error.rb +1 -0
- data/lib/rake/task_arguments.rb +15 -4
- data/lib/rake/task_manager.rb +54 -30
- data/lib/rake/tasklib.rb +2 -14
- data/lib/rake/testtask.rb +37 -61
- data/lib/rake/thread_history_display.rb +4 -3
- data/lib/rake/thread_pool.rb +16 -17
- data/lib/rake/trace_output.rb +2 -1
- data/lib/rake/version.rb +4 -1
- data/lib/rake/win32.rb +10 -15
- data/rake.gemspec +43 -0
- metadata +32 -219
- data/.autotest +0 -7
- data/.rubocop.yml +0 -27
- data/.togglerc +0 -7
- data/Manifest.txt +0 -166
- data/doc/release_notes/rake-0.4.14.rdoc +0 -23
- data/doc/release_notes/rake-0.4.15.rdoc +0 -35
- data/doc/release_notes/rake-0.5.0.rdoc +0 -53
- data/doc/release_notes/rake-0.5.3.rdoc +0 -78
- data/doc/release_notes/rake-0.5.4.rdoc +0 -46
- data/doc/release_notes/rake-0.6.0.rdoc +0 -141
- data/doc/release_notes/rake-0.7.0.rdoc +0 -119
- data/doc/release_notes/rake-0.7.1.rdoc +0 -59
- data/doc/release_notes/rake-0.7.2.rdoc +0 -121
- data/doc/release_notes/rake-0.7.3.rdoc +0 -47
- data/doc/release_notes/rake-0.8.0.rdoc +0 -114
- data/doc/release_notes/rake-0.8.2.rdoc +0 -165
- data/doc/release_notes/rake-0.8.3.rdoc +0 -112
- data/doc/release_notes/rake-0.8.4.rdoc +0 -147
- data/doc/release_notes/rake-0.8.5.rdoc +0 -53
- data/doc/release_notes/rake-0.8.6.rdoc +0 -37
- data/doc/release_notes/rake-0.8.7.rdoc +0 -55
- data/doc/release_notes/rake-0.9.0.rdoc +0 -112
- data/doc/release_notes/rake-0.9.1.rdoc +0 -52
- data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
- data/doc/release_notes/rake-0.9.2.rdoc +0 -49
- data/doc/release_notes/rake-0.9.3.rdoc +0 -102
- data/doc/release_notes/rake-0.9.4.rdoc +0 -60
- data/doc/release_notes/rake-0.9.5.rdoc +0 -55
- data/doc/release_notes/rake-0.9.6.rdoc +0 -64
- data/doc/release_notes/rake-10.0.0.rdoc +0 -178
- data/doc/release_notes/rake-10.0.1.rdoc +0 -58
- data/doc/release_notes/rake-10.0.2.rdoc +0 -53
- data/doc/release_notes/rake-10.0.3.rdoc +0 -191
- data/doc/release_notes/rake-10.1.0.rdoc +0 -61
- data/lib/rake/alt_system.rb +0 -110
- data/lib/rake/contrib/.document +0 -1
- data/lib/rake/contrib/compositepublisher.rb +0 -21
- data/lib/rake/contrib/ftptools.rb +0 -137
- data/lib/rake/contrib/publisher.rb +0 -81
- data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
- data/lib/rake/contrib/sshpublisher.rb +0 -61
- data/lib/rake/contrib/sys.rb +0 -4
- data/lib/rake/ext/module.rb +0 -2
- data/lib/rake/ext/pathname.rb +0 -25
- data/lib/rake/ext/time.rb +0 -18
- data/lib/rake/gempackagetask.rb +0 -4
- data/lib/rake/pathmap.rb +0 -3
- data/lib/rake/rdoctask.rb +0 -4
- data/lib/rake/ruby182_test_unit_fix.rb +0 -29
- data/lib/rake/runtest.rb +0 -27
- data/rakelib/publish.rake +0 -20
- data/rakelib/test_times.rake +0 -25
- data/test/file_creation.rb +0 -34
- data/test/helper.rb +0 -129
- data/test/support/rakefile_definitions.rb +0 -478
- data/test/support/ruby_runner.rb +0 -34
- data/test/test_private_reader.rb +0 -42
- data/test/test_rake.rb +0 -40
- data/test/test_rake_application.rb +0 -643
- data/test/test_rake_application_options.rb +0 -468
- data/test/test_rake_backtrace.rb +0 -119
- data/test/test_rake_clean.rb +0 -61
- data/test/test_rake_cpu_counter.rb +0 -68
- data/test/test_rake_definitions.rb +0 -84
- data/test/test_rake_directory_task.rb +0 -76
- data/test/test_rake_dsl.rb +0 -40
- data/test/test_rake_early_time.rb +0 -31
- data/test/test_rake_extension.rb +0 -59
- data/test/test_rake_file_creation_task.rb +0 -56
- data/test/test_rake_file_list.rb +0 -670
- data/test/test_rake_file_list_path_map.rb +0 -8
- data/test/test_rake_file_task.rb +0 -197
- data/test/test_rake_file_utils.rb +0 -314
- data/test/test_rake_ftp_file.rb +0 -74
- data/test/test_rake_functional.rb +0 -482
- data/test/test_rake_invocation_chain.rb +0 -64
- data/test/test_rake_late_time.rb +0 -18
- data/test/test_rake_linked_list.rb +0 -84
- data/test/test_rake_makefile_loader.rb +0 -46
- data/test/test_rake_multi_task.rb +0 -64
- data/test/test_rake_name_space.rb +0 -57
- data/test/test_rake_package_task.rb +0 -79
- data/test/test_rake_path_map.rb +0 -168
- data/test/test_rake_path_map_explode.rb +0 -34
- data/test/test_rake_path_map_partial.rb +0 -18
- data/test/test_rake_pathname_extensions.rb +0 -15
- data/test/test_rake_pseudo_status.rb +0 -21
- data/test/test_rake_rake_test_loader.rb +0 -20
- data/test/test_rake_reduce_compat.rb +0 -26
- data/test/test_rake_require.rb +0 -40
- data/test/test_rake_rules.rb +0 -388
- data/test/test_rake_scope.rb +0 -44
- data/test/test_rake_task.rb +0 -393
- data/test/test_rake_task_argument_parsing.rb +0 -119
- data/test/test_rake_task_arguments.rb +0 -127
- data/test/test_rake_task_lib.rb +0 -9
- data/test/test_rake_task_manager.rb +0 -178
- data/test/test_rake_task_manager_argument_resolution.rb +0 -19
- data/test/test_rake_task_with_arguments.rb +0 -172
- data/test/test_rake_test_task.rb +0 -146
- data/test/test_rake_thread_pool.rb +0 -145
- data/test/test_rake_top_level_functions.rb +0 -71
- data/test/test_rake_win32.rb +0 -72
- data/test/test_thread_history_display.rb +0 -101
- data/test/test_trace_output.rb +0 -52
data/lib/rake/task_arguments.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
76
|
+
inspect
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
def inspect # :nodoc:
|
|
78
|
-
|
|
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
|
|
data/lib/rake/task_manager.rb
CHANGED
|
@@ -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) +
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
data/lib/rake/tasklib.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
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,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require "rake"
|
|
3
|
+
require "rake/tasklib"
|
|
3
4
|
|
|
4
5
|
module Rake
|
|
5
6
|
|
|
@@ -50,6 +51,7 @@ module Rake
|
|
|
50
51
|
|
|
51
52
|
# Request that the tests be run with the warning flag set.
|
|
52
53
|
# E.g. warning=true implies "ruby -w" used to run the tests.
|
|
54
|
+
# (default is true)
|
|
53
55
|
attr_accessor :warning
|
|
54
56
|
|
|
55
57
|
# Glob pattern to match test files. (default is 'test/test*.rb')
|
|
@@ -69,6 +71,9 @@ module Rake
|
|
|
69
71
|
# Description of the test task. (default is 'Run tests')
|
|
70
72
|
attr_accessor :description
|
|
71
73
|
|
|
74
|
+
# Task prerequisites.
|
|
75
|
+
attr_accessor :deps
|
|
76
|
+
|
|
72
77
|
# Explicitly define the list of test files to be included in a
|
|
73
78
|
# test. +list+ is expected to be an array of file names (a
|
|
74
79
|
# FileList is acceptable). If both +pattern+ and +test_files+ are
|
|
@@ -85,20 +90,27 @@ module Rake
|
|
|
85
90
|
@options = nil
|
|
86
91
|
@test_files = nil
|
|
87
92
|
@verbose = false
|
|
88
|
-
@warning =
|
|
93
|
+
@warning = true
|
|
89
94
|
@loader = :rake
|
|
90
95
|
@ruby_opts = []
|
|
91
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
|
|
92
102
|
yield self if block_given?
|
|
93
|
-
@pattern =
|
|
103
|
+
@pattern = "test/test*.rb" if @pattern.nil? && @test_files.nil?
|
|
94
104
|
define
|
|
95
105
|
end
|
|
96
106
|
|
|
97
107
|
# Create the tasks defined by this task lib.
|
|
98
108
|
def define
|
|
99
109
|
desc @description
|
|
100
|
-
task @name do
|
|
110
|
+
task @name => Array(deps) do
|
|
101
111
|
FileUtilsExt.verbose(@verbose) do
|
|
112
|
+
puts "Use TESTOPTS=\"--verbose\" to pass --verbose" \
|
|
113
|
+
", etc. to runners." if ARGV.include? "--verbose"
|
|
102
114
|
args =
|
|
103
115
|
"#{ruby_opts_string} #{run_code} " +
|
|
104
116
|
"#{file_list_string} #{option_list}"
|
|
@@ -106,8 +118,16 @@ module Rake
|
|
|
106
118
|
if !ok && status.respond_to?(:signaled?) && status.signaled?
|
|
107
119
|
raise SignalException.new(status.termsig)
|
|
108
120
|
elsif !ok
|
|
109
|
-
|
|
110
|
-
|
|
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
|
|
111
131
|
end
|
|
112
132
|
end
|
|
113
133
|
end
|
|
@@ -116,10 +136,10 @@ module Rake
|
|
|
116
136
|
end
|
|
117
137
|
|
|
118
138
|
def option_list # :nodoc:
|
|
119
|
-
(ENV[
|
|
120
|
-
ENV[
|
|
121
|
-
ENV[
|
|
122
|
-
ENV[
|
|
139
|
+
(ENV["TESTOPTS"] ||
|
|
140
|
+
ENV["TESTOPT"] ||
|
|
141
|
+
ENV["TEST_OPTS"] ||
|
|
142
|
+
ENV["TEST_OPT"] ||
|
|
123
143
|
@options ||
|
|
124
144
|
"")
|
|
125
145
|
end
|
|
@@ -136,29 +156,20 @@ module Rake
|
|
|
136
156
|
end
|
|
137
157
|
|
|
138
158
|
def file_list_string # :nodoc:
|
|
139
|
-
file_list.map { |fn| "\"#{fn}\"" }.join(
|
|
159
|
+
file_list.map { |fn| "\"#{fn}\"" }.join(" ")
|
|
140
160
|
end
|
|
141
161
|
|
|
142
162
|
def file_list # :nodoc:
|
|
143
|
-
if ENV[
|
|
144
|
-
FileList[ENV[
|
|
163
|
+
if ENV["TEST"]
|
|
164
|
+
FileList[ENV["TEST"]]
|
|
145
165
|
else
|
|
146
166
|
result = []
|
|
147
167
|
result += @test_files.to_a if @test_files
|
|
148
|
-
result
|
|
168
|
+
result += FileList[@pattern].to_a if @pattern
|
|
149
169
|
result
|
|
150
170
|
end
|
|
151
171
|
end
|
|
152
172
|
|
|
153
|
-
def fix # :nodoc:
|
|
154
|
-
case ruby_version
|
|
155
|
-
when '1.8.2'
|
|
156
|
-
"\"#{find_file 'rake/ruby182_test_unit_fix'}\""
|
|
157
|
-
else
|
|
158
|
-
nil
|
|
159
|
-
end || ''
|
|
160
|
-
end
|
|
161
|
-
|
|
162
173
|
def ruby_version # :nodoc:
|
|
163
174
|
RUBY_VERSION
|
|
164
175
|
end
|
|
@@ -168,45 +179,10 @@ module Rake
|
|
|
168
179
|
when :direct
|
|
169
180
|
"-e \"ARGV.each{|f| require f}\""
|
|
170
181
|
when :testrb
|
|
171
|
-
"-S testrb
|
|
182
|
+
"-S testrb"
|
|
172
183
|
when :rake
|
|
173
|
-
"#{
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
def rake_loader # :nodoc:
|
|
178
|
-
find_file('rake/rake_test_loader') or
|
|
179
|
-
fail "unable to find rake test loader"
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
def find_file(fn) # :nodoc:
|
|
183
|
-
$LOAD_PATH.each do |path|
|
|
184
|
-
file_path = File.join(path, "#{fn}.rb")
|
|
185
|
-
return file_path if File.exist? file_path
|
|
186
|
-
end
|
|
187
|
-
nil
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
def rake_include_arg # :nodoc:
|
|
191
|
-
spec = Gem.loaded_specs['rake']
|
|
192
|
-
if spec.respond_to?(:default_gem?) && spec.default_gem?
|
|
193
|
-
""
|
|
194
|
-
else
|
|
195
|
-
"-I\"#{rake_lib_dir}\""
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
|
|
199
|
-
def rake_lib_dir # :nodoc:
|
|
200
|
-
find_dir('rake') or
|
|
201
|
-
fail "unable to find rake lib"
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
def find_dir(fn) # :nodoc:
|
|
205
|
-
$LOAD_PATH.each do |path|
|
|
206
|
-
file_path = File.join(path, "#{fn}.rb")
|
|
207
|
-
return path if File.exist? file_path
|
|
184
|
+
"#{__dir__}/rake_test_loader.rb"
|
|
208
185
|
end
|
|
209
|
-
nil
|
|
210
186
|
end
|
|
211
187
|
|
|
212
188
|
end
|