rake 0.4.11 → 13.4.2

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 (85) hide show
  1. checksums.yaml +7 -0
  2. data/History.rdoc +2454 -0
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +155 -0
  5. data/doc/command_line_usage.rdoc +171 -0
  6. data/doc/glossary.rdoc +40 -49
  7. data/doc/jamis.rb +135 -107
  8. data/doc/proto_rake.rdoc +22 -22
  9. data/doc/rake.1 +156 -0
  10. data/doc/rakefile.rdoc +428 -27
  11. data/doc/rational.rdoc +6 -6
  12. data/exe/rake +27 -0
  13. data/lib/rake/application.rb +847 -0
  14. data/lib/rake/backtrace.rb +25 -0
  15. data/lib/rake/clean.rb +57 -10
  16. data/lib/rake/cloneable.rb +17 -0
  17. data/lib/rake/cpu_counter.rb +122 -0
  18. data/lib/rake/default_loader.rb +15 -0
  19. data/lib/rake/dsl_definition.rb +196 -0
  20. data/lib/rake/early_time.rb +22 -0
  21. data/lib/rake/ext/core.rb +26 -0
  22. data/lib/rake/ext/string.rb +176 -0
  23. data/lib/rake/file_creation_task.rb +25 -0
  24. data/lib/rake/file_list.rb +435 -0
  25. data/lib/rake/file_task.rb +58 -0
  26. data/lib/rake/file_utils.rb +137 -0
  27. data/lib/rake/file_utils_ext.rb +135 -0
  28. data/lib/rake/invocation_chain.rb +57 -0
  29. data/lib/rake/invocation_exception_mixin.rb +17 -0
  30. data/lib/rake/late_time.rb +18 -0
  31. data/lib/rake/linked_list.rb +112 -0
  32. data/lib/rake/loaders/makefile.rb +54 -0
  33. data/lib/rake/multi_task.rb +14 -0
  34. data/lib/rake/name_space.rb +38 -0
  35. data/lib/rake/options.rb +31 -0
  36. data/lib/rake/packagetask.rb +124 -54
  37. data/lib/rake/phony.rb +16 -0
  38. data/lib/rake/private_reader.rb +21 -0
  39. data/lib/rake/promise.rb +100 -0
  40. data/lib/rake/pseudo_status.rb +30 -0
  41. data/lib/rake/rake_module.rb +67 -0
  42. data/lib/rake/rake_test_loader.rb +27 -0
  43. data/lib/rake/rule_recursion_overflow_error.rb +20 -0
  44. data/lib/rake/scope.rb +43 -0
  45. data/lib/rake/task.rb +434 -0
  46. data/lib/rake/task_argument_error.rb +8 -0
  47. data/lib/rake/task_arguments.rb +113 -0
  48. data/lib/rake/task_manager.rb +333 -0
  49. data/lib/rake/tasklib.rb +4 -16
  50. data/lib/rake/testtask.rb +110 -36
  51. data/lib/rake/thread_history_display.rb +49 -0
  52. data/lib/rake/thread_pool.rb +157 -0
  53. data/lib/rake/trace_output.rb +23 -0
  54. data/lib/rake/version.rb +10 -0
  55. data/lib/rake/win32.rb +17 -0
  56. data/lib/rake.rb +64 -992
  57. data/rake.gemspec +102 -0
  58. metadata +117 -89
  59. data/CHANGES +0 -153
  60. data/README +0 -209
  61. data/Rakefile +0 -215
  62. data/TODO +0 -19
  63. data/bin/rake +0 -8
  64. data/install.rb +0 -88
  65. data/lib/rake/contrib/compositepublisher.rb +0 -24
  66. data/lib/rake/contrib/ftptools.rb +0 -139
  67. data/lib/rake/contrib/publisher.rb +0 -75
  68. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  69. data/lib/rake/contrib/sshpublisher.rb +0 -47
  70. data/lib/rake/contrib/sys.rb +0 -207
  71. data/lib/rake/gempackagetask.rb +0 -98
  72. data/lib/rake/rdoctask.rb +0 -128
  73. data/lib/rake/runtest.rb +0 -23
  74. data/test/contrib/testsys.rb +0 -47
  75. data/test/data/rbext/rakefile.rb +0 -3
  76. data/test/filecreation.rb +0 -26
  77. data/test/functional.rb +0 -82
  78. data/test/shellcommand.rb +0 -3
  79. data/test/testclean.rb +0 -13
  80. data/test/testfilelist.rb +0 -255
  81. data/test/testfileutils.rb +0 -83
  82. data/test/testftp.rb +0 -55
  83. data/test/testpackagetask.rb +0 -81
  84. data/test/testtasks.rb +0 -371
  85. data/test/testtesttask.rb +0 -71
data/test/testtasks.rb DELETED
@@ -1,371 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
- require 'fileutils'
5
- require 'rake'
6
- require 'test/filecreation'
7
-
8
- ######################################################################
9
- class TestTask < Test::Unit::TestCase
10
- def setup
11
- Task.clear
12
- end
13
-
14
- def test_create
15
- arg = nil
16
- t = Task.lookup(:name).enhance { |task| arg = task; 1234 }
17
- assert_equal "name", t.name
18
- assert [], t.prerequisites
19
- assert t.needed?
20
- t.execute
21
- assert_equal t, arg
22
- assert_nil t.source
23
- end
24
-
25
- def test_invoke
26
- runlist = []
27
- t1 = Task.lookup(:t1).enhance([:t2, :t3]) { |t| runlist << t.name; 3321 }
28
- t2 = Task.lookup(:t2).enhance { |t| runlist << t.name }
29
- t3 = Task.lookup(:t3).enhance { |t| runlist << t.name }
30
- assert_equal [:t2, :t3], t1.prerequisites
31
- t1.invoke
32
- assert_equal ["t2", "t3", "t1"], runlist
33
- end
34
-
35
- def test_no_double_invoke
36
- runlist = []
37
- t1 = Task.lookup(:t1).enhance([:t2, :t3]) { |t| runlist << t.name; 3321 }
38
- t2 = Task.lookup(:t2).enhance([:t3]) { |t| runlist << t.name }
39
- t3 = Task.lookup(:t3).enhance { |t| runlist << t.name }
40
- t1.invoke
41
- assert_equal ["t3", "t2", "t1"], runlist
42
- end
43
-
44
- def test_find
45
- task :tfind
46
- assert_equal "tfind", Task[:tfind].name
47
- ex = assert_raises(RuntimeError) { Task[:leaves] }
48
- assert_equal "Don't know how to build task 'leaves'", ex.message
49
- end
50
-
51
- def test_defined
52
- assert ! Task.task_defined?(:a)
53
- task :a
54
- assert Task.task_defined?(:a)
55
- end
56
-
57
- def test_multi_invocations
58
- runs = []
59
- p = proc do |t| runs << t.name end
60
- task({:t1=>[:t2,:t3]}, &p)
61
- task({:t2=>[:t3]}, &p)
62
- task(:t3, &p)
63
- Task[:t1].invoke
64
- assert_equal ["t1", "t2", "t3"], runs.sort
65
- end
66
-
67
- def test_task_list
68
- task :t2
69
- task :t1 => [:t2]
70
- assert_equal ["t1", "t2"], Task.tasks.collect {|t| t.name}
71
- end
72
-
73
- end
74
-
75
- ######################################################################
76
- class TestFileTask < Test::Unit::TestCase
77
- include FileCreation
78
-
79
- def setup
80
- Task.clear
81
- @runs = Array.new
82
- FileUtils.rm_f NEWFILE
83
- FileUtils.rm_f OLDFILE
84
- end
85
-
86
- def test_file_need
87
- name = "testdata/dummy"
88
- file name
89
- ftask = Task[name]
90
- assert_equal name.to_s, ftask.name
91
- File.delete(ftask.name) rescue nil
92
- assert ftask.needed?, "file should be needed"
93
- open(ftask.name, "w") { |f| f.puts "HI" }
94
- assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max
95
- assert ! ftask.needed?, "file should not be needed"
96
- File.delete(ftask.name) rescue nil
97
- end
98
-
99
- OLDFILE = "testdata/old"
100
- NEWFILE = "testdata/new"
101
-
102
- def test_file_times_new_depends_on_old
103
- create_timed_files(OLDFILE, NEWFILE)
104
-
105
- t1 = FileTask.lookup(NEWFILE).enhance([OLDFILE])
106
- t2 = FileTask.lookup(OLDFILE)
107
- assert ! t2.needed?, "Should not need to build old file"
108
- assert ! t1.needed?, "Should not need to rebuild new file because of old"
109
- end
110
-
111
- def test_file_times_old_depends_on_new
112
- create_timed_files(OLDFILE, NEWFILE)
113
-
114
- t1 = FileTask.lookup(OLDFILE).enhance([NEWFILE])
115
- t2 = FileTask.lookup(NEWFILE)
116
- assert ! t2.needed?, "Should not need to build new file"
117
- preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max
118
- assert_equal t2.timestamp, preq_stamp
119
- assert t1.timestamp < preq_stamp, "T1 should be older"
120
- assert t1.needed?, "Should need to rebuild old file because of new"
121
- end
122
-
123
- def test_file_depends_on_task_depend_on_file
124
- create_timed_files(OLDFILE, NEWFILE)
125
-
126
- file NEWFILE => [:obj] do |t| @runs << t.name end
127
- task :obj => [OLDFILE] do |t| @runs << t.name end
128
- file OLDFILE do |t| @runs << t.name end
129
-
130
- Task[:obj].invoke
131
- Task[NEWFILE].invoke
132
- assert ! @runs.include?(NEWFILE)
133
- end
134
-
135
- # I have currently disabled this test. I'm not convinced that
136
- # deleting the file target on failure is always the proper thing to
137
- # do. I'm willing to hear input on this topic.
138
- def ztest_file_deletes_on_failure
139
- task :obj
140
- file NEWFILE => [:obj] do |t|
141
- FileUtils.touch NEWFILE
142
- fail "Ooops"
143
- end
144
- assert Task[NEWFILE]
145
- begin
146
- Task[NEWFILE].invoke
147
- rescue Exception
148
- end
149
- assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted")
150
- end
151
-
152
- end
153
-
154
- ######################################################################
155
- class TestDirectoryTask < Test::Unit::TestCase
156
- def setup
157
- rm_rf "testdata", :verbose=>false
158
- end
159
-
160
- def teardown
161
- rm_rf "testdata", :verbose=>false
162
- end
163
-
164
- def test_directory
165
- desc "DESC"
166
- directory "testdata/a/b/c"
167
- assert_equal FileTask, Task["testdata"].class
168
- assert_equal FileTask, Task["testdata/a"].class
169
- assert_equal FileTask, Task["testdata/a/b/c"].class
170
- assert_nil Task["testdata"].comment
171
- assert_equal "DESC", Task["testdata/a/b/c"].comment
172
- assert_nil Task["testdata/a/b"].comment
173
- verbose(false) {
174
- Task['testdata/a/b'].invoke
175
- }
176
- assert File.exist?("testdata/a/b")
177
- assert ! File.exist?("testdata/a/b/c")
178
- end
179
- end
180
-
181
- __END__
182
-
183
- ######################################################################
184
- class TestDefinitions < Test::Unit::TestCase
185
- EXISTINGFILE = "testdata/existing"
186
-
187
- def setup
188
- Task.clear
189
- end
190
-
191
- def test_task
192
- done = false
193
- task :one => [:two] do done = true end
194
- task :two
195
- task :three => [:one, :two]
196
- check_tasks(:one, :two, :three)
197
- assert done, "Should be done"
198
- end
199
-
200
- def test_file_task
201
- done = false
202
- file "testdata/one" => "testdata/two" do done = true end
203
- file "testdata/two"
204
- file "testdata/three" => ["testdata/one", "testdata/two"]
205
- check_tasks("testdata/one", "testdata/two", "testdata/three")
206
- assert done, "Should be done"
207
- end
208
-
209
- def check_tasks(n1, n2, n3)
210
- t = Task[n1]
211
- assert Task === t, "Should be a Task"
212
- assert_equal n1.to_s, t.name
213
- assert_equal [n2.to_s], t.prerequisites.collect{|n| n.to_s}
214
- t.invoke
215
- t2 = Task[n2]
216
- assert_equal [], t2.prerequisites
217
- t3 = Task[n3]
218
- assert_equal [n1.to_s, n2.to_s], t3.prerequisites.collect{|n|n.to_s}
219
- end
220
-
221
- def test_incremental_definitions
222
- runs = []
223
- task :t1 => [:t2] do runs << "A"; 4321 end
224
- task :t1 => [:t3] do runs << "B"; 1234 end
225
- task :t1 => [:t3]
226
- task :t2
227
- task :t3
228
- Task[:t1].invoke
229
- assert_equal ["A", "B"], runs
230
- assert_equal ["t2", "t3"], Task[:t1].prerequisites
231
- end
232
-
233
- def test_missing_dependencies
234
- task :x => ["testdata/missing"]
235
- assert_raises(RuntimeError) { Task[:x].invoke }
236
- end
237
-
238
- def test_implicit_file_dependencies
239
- runs = []
240
- create_existing_file
241
- task :y => [EXISTINGFILE] do |t| runs << t.name end
242
- Task[:y].invoke
243
- assert_equal runs, ['y']
244
- end
245
-
246
- private # ----------------------------------------------------------
247
-
248
- def create_existing_file
249
- if ! File.exist?(EXISTINGFILE)
250
- open(EXISTINGFILE, "w") do |f| f.puts "HI" end
251
- end
252
- end
253
-
254
- end
255
-
256
- ######################################################################
257
- class TestRules < Test::Unit::TestCase
258
- include FileCreation
259
-
260
- SRCFILE = "testdata/abc.c"
261
- SRCFILE2 = "testdata/xyz.c"
262
- FTNFILE = "testdata/abc.f"
263
- OBJFILE = "testdata/abc.o"
264
-
265
- def setup
266
- Task.clear
267
- @runs = []
268
- end
269
-
270
- def test_multiple_rules1
271
- create_file(FTNFILE)
272
- delete_file(SRCFILE)
273
- delete_file(OBJFILE)
274
- rule /\.o$/ => ['.c'] do @runs << :C end
275
- rule /\.o$/ => ['.f'] do @runs << :F end
276
- t = Task[OBJFILE]
277
- t.invoke
278
- Task[OBJFILE].invoke
279
- assert_equal [:F], @runs
280
- end
281
-
282
- def test_multiple_rules2
283
- create_file(FTNFILE)
284
- delete_file(SRCFILE)
285
- delete_file(OBJFILE)
286
- rule /\.o$/ => ['.f'] do @runs << :F end
287
- rule /\.o$/ => ['.c'] do @runs << :C end
288
- Task[OBJFILE].invoke
289
- assert_equal [:F], @runs
290
- end
291
-
292
- def test_create_with_source
293
- create_file(SRCFILE)
294
- rule /\.o$/ => ['.c'] do |t|
295
- @runs << t.name
296
- assert_equal OBJFILE, t.name
297
- assert_equal SRCFILE, t.source
298
- end
299
- Task[OBJFILE].invoke
300
- assert_equal [OBJFILE], @runs
301
- end
302
-
303
- def test_single_dependent
304
- create_file(SRCFILE)
305
- rule /\.o$/ => '.c' do |t|
306
- @runs << t.name
307
- end
308
- Task[OBJFILE].invoke
309
- assert_equal [OBJFILE], @runs
310
- end
311
-
312
- def test_create_by_string
313
- create_file(SRCFILE)
314
- rule '.o' => ['.c'] do |t|
315
- @runs << t.name
316
- end
317
- Task[OBJFILE].invoke
318
- assert_equal [OBJFILE], @runs
319
- end
320
-
321
- def test_rule_and_no_action_task
322
- create_file(SRCFILE)
323
- create_file(SRCFILE2)
324
- delete_file(OBJFILE)
325
- rule '.o' => '.c' do |t|
326
- @runs << t.source
327
- end
328
- file OBJFILE => [SRCFILE2]
329
- Task[OBJFILE].invoke
330
- assert_equal [SRCFILE], @runs
331
- end
332
-
333
- def test_string_close_matches
334
- create_file("testdata/x.c")
335
- rule '.o' => ['.c'] do |t|
336
- @runs << t.name
337
- end
338
- assert_raises(RuntimeError) { Task['testdata/x.obj'].invoke }
339
- assert_raises(RuntimeError) { Task['testdata/x.xyo'].invoke }
340
- end
341
-
342
- def test_precedence_rule_vs_implicit
343
- create_timed_files(OBJFILE, SRCFILE)
344
- rule /\.o$/ => ['.c'] do
345
- @runs << :RULE
346
- end
347
- Task[OBJFILE].invoke
348
- assert_equal [:RULE], @runs
349
- end
350
-
351
- def test_too_many_dependents
352
- assert_raises(RuntimeError) { rule '.o' => ['.c', '.cpp'] }
353
- end
354
-
355
- def test_proc_dependent
356
- ran = false
357
- File.makedirs("testdata/src/jw")
358
- create_file("testdata/src/jw/X.java")
359
- rule %r(classes/.*\.class) => [
360
- proc { |fn| fn.sub(/^classes/, 'testdata/src').sub(/\.class$/, '.java') }
361
- ] do |task|
362
- assert_equal task.name, 'classes/jw/X.class'
363
- assert_equal task.source, 'testdata/src/jw/X.java'
364
- ran = true
365
- end
366
- Task['classes/jw/X.class'].invoke
367
- assert ran, "Should have triggered rule"
368
- ensure
369
- rm_r("testdata/src", :verbose=>false) rescue nil
370
- end
371
- end
data/test/testtesttask.rb DELETED
@@ -1,71 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'test/unit'
4
- require 'rake/testtask'
5
-
6
- class TestTestTask < Test::Unit::TestCase
7
- def setup
8
- Task.clear
9
- ENV['TEST'] = nil
10
- end
11
-
12
- def test_no_task
13
- assert ! Task.task_defined?(:test)
14
- end
15
-
16
- def test_defaults
17
- tt = Rake::TestTask.new do |t| end
18
- assert_not_nil tt
19
- assert_equal :test, tt.name
20
- assert_equal ['lib'], tt.libs
21
- assert_equal 'test/test*.rb', tt.pattern
22
- assert_equal false, tt.verbose
23
- assert Task.task_defined?(:test)
24
- end
25
-
26
- def test_non_defaults
27
- tt = Rake::TestTask.new(:example) do |t|
28
- t.libs = ['src', 'ext']
29
- t.pattern = 'test/tc_*.rb'
30
- t.verbose = true
31
- end
32
- assert_not_nil tt
33
- assert_equal :example, tt.name
34
- assert_equal ['src', 'ext'], tt.libs
35
- assert_equal 'test/tc_*.rb', tt.pattern
36
- assert_equal true, tt.verbose
37
- assert Task.task_defined?(:example)
38
- end
39
-
40
- def test_pattern
41
- ENV['TEST'] = nil
42
- tt = Rake::TestTask.new do |t|
43
- t.pattern = '*.rb'
44
- end
45
- assert_equal ['install.rb'], tt.file_list.to_a
46
- end
47
-
48
- def test_env_test
49
- ENV['TEST'] = 'testfile.rb'
50
- tt = Rake::TestTask.new do |t|
51
- t.pattern = '*'
52
- end
53
- assert_equal ["testfile.rb"], tt.file_list.to_a
54
- end
55
-
56
- def test_test_files
57
- tt = Rake::TestTask.new do |t|
58
- t.test_files = FileList['a.rb', 'b.rb']
59
- end
60
- assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a
61
- end
62
-
63
- def test_both_pattern_and_test_files
64
- tt = Rake::TestTask.new do |t|
65
- t.test_files = FileList['a.rb', 'b.rb']
66
- t.pattern = '*.rb'
67
- end
68
- assert_equal ['a.rb', 'b.rb', 'install.rb'], tt.file_list.to_a
69
- end
70
-
71
- end