rake 11.1.2 → 11.2.0
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.
Potentially problematic release.
This version of rake might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +14 -0
- data/.rubocop.yml +0 -9
- data/.travis.yml +28 -0
- data/CONTRIBUTING.rdoc +3 -5
- data/Gemfile +3 -0
- data/History.rdoc +1770 -273
- data/Rakefile +15 -68
- data/appveyor.yml +24 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/doc/release_notes/README.md +4 -0
- data/doc/release_notes/rake-0.7.3.rdoc +0 -0
- data/{bin → exe}/rake +0 -6
- data/lib/rake.rb +1 -3
- data/lib/rake/application.rb +3 -6
- data/lib/rake/cpu_counter.rb +3 -17
- data/lib/rake/file_utils.rb +22 -6
- data/lib/rake/packagetask.rb +12 -1
- data/lib/rake/rake_test_loader.rb +0 -1
- data/lib/rake/rule_recursion_overflow_error.rb +0 -1
- data/lib/rake/task.rb +3 -3
- data/lib/rake/task_arguments.rb +2 -1
- data/lib/rake/testtask.rb +5 -1
- data/lib/rake/thread_pool.rb +0 -1
- data/lib/rake/version.rb +2 -0
- data/rake.gemspec +30 -0
- metadata +21 -110
- data/.autotest +0 -7
- data/.togglerc +0 -7
- data/Manifest.txt +0 -154
- data/lib/rake/contrib/.document +0 -1
- data/rakelib/test_times.rake +0 -25
- data/test/file_creation.rb +0 -34
- data/test/helper.rb +0 -134
- data/test/support/rakefile_definitions.rb +0 -476
- 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 -659
- 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 -687
- data/test/test_rake_file_list_path_map.rb +0 -15
- data/test/test_rake_file_task.rb +0 -197
- data/test/test_rake_file_utils.rb +0 -318
- data/test/test_rake_ftp_file.rb +0 -74
- data/test/test_rake_functional.rb +0 -484
- 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 -430
- data/test/test_rake_task_argument_parsing.rb +0 -119
- data/test/test_rake_task_arguments.rb +0 -134
- 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 -130
- 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/test/test_rake_scope.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
|
3
|
-
class TestRakeScope < Rake::TestCase
|
4
|
-
include Rake
|
5
|
-
|
6
|
-
def test_path_against_empty_scope
|
7
|
-
scope = Scope.make
|
8
|
-
assert_equal scope, Scope::EMPTY
|
9
|
-
assert_equal scope.path, ""
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_path_against_one_element
|
13
|
-
scope = Scope.make(:one)
|
14
|
-
assert_equal "one", scope.path
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_path_against_two_elements
|
18
|
-
scope = Scope.make(:inner, :outer)
|
19
|
-
assert_equal "outer:inner", scope.path
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_path_with_task_name
|
23
|
-
scope = Scope.make(:inner, :outer)
|
24
|
-
assert_equal "outer:inner:task", scope.path_with_task_name("task")
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_path_with_task_name_against_empty_scope
|
28
|
-
scope = Scope.make
|
29
|
-
assert_equal "task", scope.path_with_task_name("task")
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_conj_against_two_elements
|
33
|
-
scope = Scope.make.conj("B").conj("A")
|
34
|
-
assert_equal Scope.make("A", "B"), scope
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_trim
|
38
|
-
scope = Scope.make("A", "B")
|
39
|
-
assert_equal scope, scope.trim(0)
|
40
|
-
assert_equal scope.tail, scope.trim(1)
|
41
|
-
assert_equal scope.tail.tail, scope.trim(2)
|
42
|
-
assert_equal scope.tail.tail, scope.trim(3)
|
43
|
-
end
|
44
|
-
end
|
data/test/test_rake_task.rb
DELETED
@@ -1,430 +0,0 @@
|
|
1
|
-
require File.expand_path('../helper', __FILE__)
|
2
|
-
require 'fileutils'
|
3
|
-
|
4
|
-
class TestRakeTask < Rake::TestCase
|
5
|
-
include Rake
|
6
|
-
|
7
|
-
def setup
|
8
|
-
super
|
9
|
-
|
10
|
-
Task.clear
|
11
|
-
Rake::TaskManager.record_task_metadata = true
|
12
|
-
end
|
13
|
-
|
14
|
-
def teardown
|
15
|
-
Rake::TaskManager.record_task_metadata = false
|
16
|
-
Rake.application.thread_pool.join
|
17
|
-
|
18
|
-
super
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_create
|
22
|
-
arg = nil
|
23
|
-
t = task(:name) { |task| arg = task; 1234 }
|
24
|
-
assert_equal "name", t.name
|
25
|
-
assert_equal [], t.prerequisites
|
26
|
-
assert t.needed?
|
27
|
-
t.execute(0)
|
28
|
-
assert_equal t, arg
|
29
|
-
assert_nil t.source
|
30
|
-
assert_equal [], t.sources
|
31
|
-
assert_equal 1, t.locations.size
|
32
|
-
assert_match(/#{Regexp.quote(__FILE__)}/, t.locations.first)
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_inspect
|
36
|
-
t = task(:foo => [:bar, :baz])
|
37
|
-
assert_equal "<Rake::Task foo => [bar, baz]>", t.inspect
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_invoke
|
41
|
-
runlist = []
|
42
|
-
t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
|
43
|
-
task(:t2) { |t| runlist << t.name }
|
44
|
-
task(:t3) { |t| runlist << t.name }
|
45
|
-
assert_equal ["t2", "t3"], t1.prerequisites
|
46
|
-
t1.invoke
|
47
|
-
assert_equal ["t2", "t3", "t1"], runlist
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_invoke_with_circular_dependencies
|
51
|
-
runlist = []
|
52
|
-
t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 }
|
53
|
-
t2 = task(:t2 => [:t1]) { |t| runlist << t.name }
|
54
|
-
assert_equal ["t2"], t1.prerequisites
|
55
|
-
assert_equal ["t1"], t2.prerequisites
|
56
|
-
ex = assert_raises RuntimeError do
|
57
|
-
t1.invoke
|
58
|
-
end
|
59
|
-
assert_match(/circular dependency/i, ex.message)
|
60
|
-
assert_match(/t1 => t2 => t1/, ex.message)
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_dry_run_prevents_actions
|
64
|
-
Rake.application.options.dryrun = true
|
65
|
-
runlist = []
|
66
|
-
t1 = task(:t1) { |t| runlist << t.name; 3321 }
|
67
|
-
_, err = capture_io { t1.invoke }
|
68
|
-
assert_match(/execute .*t1/i, err)
|
69
|
-
assert_match(/dry run/i, err)
|
70
|
-
refute_match(/invoke/i, err)
|
71
|
-
assert_equal [], runlist
|
72
|
-
ensure
|
73
|
-
Rake.application.options.dryrun = false
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_tasks_can_be_traced
|
77
|
-
Rake.application.options.trace = true
|
78
|
-
t1 = task(:t1)
|
79
|
-
_, err = capture_io {
|
80
|
-
t1.invoke
|
81
|
-
}
|
82
|
-
assert_match(/invoke t1/i, err)
|
83
|
-
assert_match(/execute t1/i, err)
|
84
|
-
ensure
|
85
|
-
Rake.application.options.trace = false
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_no_double_invoke
|
89
|
-
runlist = []
|
90
|
-
t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
|
91
|
-
task(:t2 => [:t3]) { |t| runlist << t.name }
|
92
|
-
task(:t3) { |t| runlist << t.name }
|
93
|
-
t1.invoke
|
94
|
-
assert_equal ["t3", "t2", "t1"], runlist
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_already_invoked
|
98
|
-
t1 = task(:t1) {}
|
99
|
-
assert_equal false, t1.already_invoked
|
100
|
-
t1.invoke
|
101
|
-
assert_equal true, t1.already_invoked
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_can_double_invoke_with_reenable
|
105
|
-
runlist = []
|
106
|
-
t1 = task(:t1) { |t| runlist << t.name }
|
107
|
-
t1.invoke
|
108
|
-
t1.reenable
|
109
|
-
t1.invoke
|
110
|
-
assert_equal ["t1", "t1"], runlist
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_clear
|
114
|
-
desc "a task"
|
115
|
-
t = task("t" => "a") { }
|
116
|
-
t.clear
|
117
|
-
assert t.prerequisites.empty?, "prerequisites should be empty"
|
118
|
-
assert t.actions.empty?, "actions should be empty"
|
119
|
-
assert_nil t.comment, "comments should be empty"
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_clear_prerequisites
|
123
|
-
t = task("t" => ["a", "b"])
|
124
|
-
assert_equal ['a', 'b'], t.prerequisites
|
125
|
-
t.clear_prerequisites
|
126
|
-
assert_equal [], t.prerequisites
|
127
|
-
end
|
128
|
-
|
129
|
-
def test_clear_actions
|
130
|
-
t = task("t") { }
|
131
|
-
t.clear_actions
|
132
|
-
assert t.actions.empty?, "actions should be empty"
|
133
|
-
end
|
134
|
-
|
135
|
-
def test_clear_comments
|
136
|
-
desc "the original foo"
|
137
|
-
task :foo => [:x] do
|
138
|
-
# Dummy action
|
139
|
-
end
|
140
|
-
|
141
|
-
task(:foo).clear_comments
|
142
|
-
|
143
|
-
desc "a slightly different foo"
|
144
|
-
task :foo
|
145
|
-
|
146
|
-
assert_equal "a slightly different foo", task(:foo).comment
|
147
|
-
assert_equal ["x"], task(:foo).prerequisites
|
148
|
-
assert_equal 1, task(:foo).actions.size
|
149
|
-
end
|
150
|
-
|
151
|
-
def test_find
|
152
|
-
task :tfind
|
153
|
-
assert_equal "tfind", Task[:tfind].name
|
154
|
-
ex = assert_raises(RuntimeError) { Task[:leaves] }
|
155
|
-
assert_equal "Don't know how to build task 'leaves' (see --tasks)", ex.message
|
156
|
-
end
|
157
|
-
|
158
|
-
def test_defined
|
159
|
-
assert ! Task.task_defined?(:a)
|
160
|
-
task :a
|
161
|
-
assert Task.task_defined?(:a)
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_multi_invocations
|
165
|
-
runs = []
|
166
|
-
p = proc do |t| runs << t.name end
|
167
|
-
task({ :t1 => [:t2, :t3] }, &p)
|
168
|
-
task({ :t2 => [:t3] }, &p)
|
169
|
-
task(:t3, &p)
|
170
|
-
Task[:t1].invoke
|
171
|
-
assert_equal ["t1", "t2", "t3"], runs.sort
|
172
|
-
end
|
173
|
-
|
174
|
-
def test_task_list
|
175
|
-
task :t2
|
176
|
-
task :t1 => [:t2]
|
177
|
-
assert_equal ["t1", "t2"], Task.tasks.map { |t| t.name }
|
178
|
-
end
|
179
|
-
|
180
|
-
def test_task_gives_name_on_to_s
|
181
|
-
task :abc
|
182
|
-
assert_equal "abc", Task[:abc].to_s
|
183
|
-
end
|
184
|
-
|
185
|
-
def test_symbols_can_be_prerequisites
|
186
|
-
task :a => :b
|
187
|
-
assert_equal ["b"], Task[:a].prerequisites
|
188
|
-
end
|
189
|
-
|
190
|
-
def test_strings_can_be_prerequisites
|
191
|
-
task :a => "b"
|
192
|
-
assert_equal ["b"], Task[:a].prerequisites
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_arrays_can_be_prerequisites
|
196
|
-
task :a => ["b", "c"]
|
197
|
-
assert_equal ["b", "c"], Task[:a].prerequisites
|
198
|
-
end
|
199
|
-
|
200
|
-
def test_filelists_can_be_prerequisites
|
201
|
-
task :a => FileList.new.include("b", "c")
|
202
|
-
assert_equal ["b", "c"], Task[:a].prerequisites
|
203
|
-
end
|
204
|
-
|
205
|
-
def test_prerequisite_tasks_returns_tasks_not_strings
|
206
|
-
a = task :a => ["b", "c"]
|
207
|
-
b = task :b
|
208
|
-
c = task :c
|
209
|
-
assert_equal [b, c], a.prerequisite_tasks
|
210
|
-
end
|
211
|
-
|
212
|
-
def test_prerequisite_tasks_fails_if_prerequisites_are_undefined
|
213
|
-
a = task :a => ["b", "c"]
|
214
|
-
task :b
|
215
|
-
assert_raises(RuntimeError) do
|
216
|
-
a.prerequisite_tasks
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
def test_prerequisite_tasks_honors_namespaces
|
221
|
-
task :b
|
222
|
-
a = b = nil
|
223
|
-
namespace "X" do
|
224
|
-
a = task :a => ["b", "c"]
|
225
|
-
b = task :b
|
226
|
-
end
|
227
|
-
c = task :c
|
228
|
-
|
229
|
-
assert_equal [b, c], a.prerequisite_tasks
|
230
|
-
end
|
231
|
-
|
232
|
-
def test_prerequisite_tasks_finds_tasks_with_same_name_outside_namespace
|
233
|
-
b1 = nil
|
234
|
-
namespace "a" do
|
235
|
-
b1 = task :b => "b"
|
236
|
-
end
|
237
|
-
b2 = task :b
|
238
|
-
|
239
|
-
assert_equal [b2], b1.prerequisite_tasks
|
240
|
-
end
|
241
|
-
|
242
|
-
def test_prerequisite_tasks_in_nested_namespaces
|
243
|
-
m = task :m
|
244
|
-
a_c_m = a_b_m = a_m = nil
|
245
|
-
namespace "a" do
|
246
|
-
a_m = task :m
|
247
|
-
|
248
|
-
namespace "b" do
|
249
|
-
a_b_m = task :m => "m"
|
250
|
-
end
|
251
|
-
|
252
|
-
namespace "c" do
|
253
|
-
a_c_m = task :m => "a:m"
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
assert_equal [m], a_b_m.prerequisite_tasks
|
258
|
-
assert_equal [a_m], a_c_m.prerequisite_tasks
|
259
|
-
end
|
260
|
-
|
261
|
-
def test_all_prerequisite_tasks_includes_all_prerequisites
|
262
|
-
a = task :a => "b"
|
263
|
-
b = task :b => ["c", "d"]
|
264
|
-
c = task :c => "e"
|
265
|
-
d = task :d
|
266
|
-
e = task :e
|
267
|
-
|
268
|
-
assert_equal [b, c, d, e], a.all_prerequisite_tasks.sort_by { |t| t.name }
|
269
|
-
end
|
270
|
-
|
271
|
-
def test_all_prerequisite_tasks_does_not_include_duplicates
|
272
|
-
a = task :a => ["b", "c"]
|
273
|
-
b = task :b => "c"
|
274
|
-
c = task :c
|
275
|
-
|
276
|
-
assert_equal [b, c], a.all_prerequisite_tasks.sort_by { |t| t.name }
|
277
|
-
end
|
278
|
-
|
279
|
-
def test_all_prerequisite_tasks_includes_self_on_cyclic_dependencies
|
280
|
-
a = task :a => "b"
|
281
|
-
b = task :b => "a"
|
282
|
-
|
283
|
-
assert_equal [a, b], a.all_prerequisite_tasks.sort_by { |t| t.name }
|
284
|
-
end
|
285
|
-
|
286
|
-
def test_timestamp_returns_now_if_all_prereqs_have_no_times
|
287
|
-
a = task :a => ["b", "c"]
|
288
|
-
task :b
|
289
|
-
task :c
|
290
|
-
|
291
|
-
assert_in_delta Time.now, a.timestamp, 0.1, 'computer too slow?'
|
292
|
-
end
|
293
|
-
|
294
|
-
def test_timestamp_returns_latest_prereq_timestamp
|
295
|
-
a = task :a => ["b", "c"]
|
296
|
-
b = task :b
|
297
|
-
c = task :c
|
298
|
-
|
299
|
-
now = Time.now
|
300
|
-
def b.timestamp() Time.now + 10 end
|
301
|
-
def c.timestamp() Time.now + 5 end
|
302
|
-
|
303
|
-
assert_in_delta now, a.timestamp, 0.1, 'computer too slow?'
|
304
|
-
end
|
305
|
-
|
306
|
-
def test_always_multitask
|
307
|
-
mx = Mutex.new
|
308
|
-
result = []
|
309
|
-
|
310
|
-
t_a = task(:a) do |t|
|
311
|
-
sleep 0.2
|
312
|
-
mx.synchronize { result << t.name }
|
313
|
-
end
|
314
|
-
|
315
|
-
t_b = task(:b) do |t|
|
316
|
-
mx.synchronize { result << t.name }
|
317
|
-
end
|
318
|
-
|
319
|
-
t_c = task(:c => [:a, :b]) do |t|
|
320
|
-
mx.synchronize { result << t.name }
|
321
|
-
end
|
322
|
-
|
323
|
-
t_c.invoke
|
324
|
-
|
325
|
-
# task should always run in order
|
326
|
-
assert_equal ['a', 'b', 'c'], result
|
327
|
-
|
328
|
-
[t_a, t_b, t_c].each { |t| t.reenable }
|
329
|
-
result.clear
|
330
|
-
|
331
|
-
Rake.application.options.always_multitask = true
|
332
|
-
t_c.invoke
|
333
|
-
|
334
|
-
# with multitask, task 'b' should grab the mutex first
|
335
|
-
assert_equal ['b', 'a', 'c'], result
|
336
|
-
end
|
337
|
-
|
338
|
-
def test_investigation_output
|
339
|
-
t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
|
340
|
-
task(:t2)
|
341
|
-
task(:t3)
|
342
|
-
out = t1.investigation
|
343
|
-
assert_match(/class:\s*Rake::Task/, out)
|
344
|
-
assert_match(/needed:\s*true/, out)
|
345
|
-
assert_match(/pre-requisites:\s*--t[23]/, out)
|
346
|
-
end
|
347
|
-
|
348
|
-
# NOTE: Rail-ties uses comment=.
|
349
|
-
def test_comment_setting
|
350
|
-
t = task(:t, :name, :rev)
|
351
|
-
t.comment = "A Comment"
|
352
|
-
assert_equal "A Comment", t.comment
|
353
|
-
end
|
354
|
-
|
355
|
-
def test_comments_with_sentences
|
356
|
-
desc "Comment 1. Comment 2."
|
357
|
-
t = task(:t, :name, :rev)
|
358
|
-
assert_equal "Comment 1", t.comment
|
359
|
-
end
|
360
|
-
|
361
|
-
def test_comments_with_tabbed_sentences
|
362
|
-
desc "Comment 1.\tComment 2."
|
363
|
-
t = task(:t, :name, :rev)
|
364
|
-
assert_equal "Comment 1", t.comment
|
365
|
-
end
|
366
|
-
|
367
|
-
def test_comments_with_decimal_points
|
368
|
-
desc "Revision 1.2.3."
|
369
|
-
t = task(:t, :name, :rev)
|
370
|
-
assert_equal "Revision 1.2.3", t.comment
|
371
|
-
end
|
372
|
-
|
373
|
-
def test_comments_do_not_set
|
374
|
-
t = task(:t, :name, :rev)
|
375
|
-
assert_equal nil, t.comment
|
376
|
-
end
|
377
|
-
|
378
|
-
def test_comments_is_nil
|
379
|
-
t = task(:t, :name, :rev)
|
380
|
-
t.comment = nil
|
381
|
-
assert_equal nil, t.comment
|
382
|
-
end
|
383
|
-
|
384
|
-
def test_extended_comments
|
385
|
-
desc %{
|
386
|
-
This is a comment.
|
387
|
-
|
388
|
-
And this is the extended comment.
|
389
|
-
name -- Name of task to execute.
|
390
|
-
rev -- Software revision to use.
|
391
|
-
}
|
392
|
-
t = task(:t, :name, :rev)
|
393
|
-
assert_equal "[name,rev]", t.arg_description
|
394
|
-
assert_equal "This is a comment", t.comment
|
395
|
-
assert_match(/^\s*name -- Name/, t.full_comment)
|
396
|
-
assert_match(/^\s*rev -- Software/, t.full_comment)
|
397
|
-
assert_match(/\A\s*This is a comment\.$/, t.full_comment)
|
398
|
-
end
|
399
|
-
|
400
|
-
def test_multiple_comments
|
401
|
-
desc "line one"
|
402
|
-
t = task(:t)
|
403
|
-
desc "line two"
|
404
|
-
task(:t)
|
405
|
-
assert_equal "line one / line two", t.comment
|
406
|
-
end
|
407
|
-
|
408
|
-
def test_duplicate_comments
|
409
|
-
desc "line one"
|
410
|
-
t = task(:t)
|
411
|
-
desc "line one"
|
412
|
-
task(:t)
|
413
|
-
assert_equal "line one", t.comment
|
414
|
-
end
|
415
|
-
|
416
|
-
def test_interspersed_duplicate_comments
|
417
|
-
desc "line one"
|
418
|
-
t = task(:t)
|
419
|
-
desc "line two"
|
420
|
-
task(:t)
|
421
|
-
desc "line one"
|
422
|
-
task(:t)
|
423
|
-
assert_equal "line one / line two", t.comment
|
424
|
-
end
|
425
|
-
|
426
|
-
def test_source_is_first_prerequisite
|
427
|
-
t = task :t => ["preqA", "preqB"]
|
428
|
-
assert_equal "preqA", t.source
|
429
|
-
end
|
430
|
-
end
|