rake 0.9.2 → 0.9.2.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rake might be problematic. Click here for more details.

Files changed (75) hide show
  1. data/CHANGES +13 -0
  2. data/README.rdoc +12 -15
  3. data/Rakefile +8 -44
  4. data/bin/rake +1 -0
  5. data/lib/rake.rb +4 -0
  6. data/lib/rake/application.rb +9 -3
  7. data/lib/rake/classic_namespace.rb +2 -0
  8. data/lib/rake/clean.rb +1 -0
  9. data/lib/rake/contrib/publisher.rb +10 -6
  10. data/lib/rake/contrib/sshpublisher.rb +5 -0
  11. data/lib/rake/dsl_definition.rb +13 -4
  12. data/lib/rake/ext/time.rb +3 -3
  13. data/lib/rake/file_utils.rb +9 -7
  14. data/lib/rake/file_utils_ext.rb +4 -1
  15. data/lib/rake/gempackagetask.rb +2 -0
  16. data/lib/rake/rake_test_loader.rb +15 -6
  17. data/lib/rake/rdoctask.rb +5 -1
  18. data/lib/rake/task_arguments.rb +4 -0
  19. data/lib/rake/version.rb +5 -7
  20. data/test/file_creation.rb +2 -2
  21. data/test/helper.rb +460 -12
  22. data/test/test_rake.rb +3 -1
  23. data/test/test_rake_application.rb +250 -125
  24. data/test/test_rake_application_options.rb +146 -193
  25. data/test/test_rake_clean.rb +2 -0
  26. data/test/test_rake_definitions.rb +6 -6
  27. data/test/test_rake_directory_task.rb +26 -35
  28. data/test/test_rake_dsl.rb +4 -0
  29. data/test/test_rake_file_creation_task.rb +1 -7
  30. data/test/test_rake_file_list.rb +128 -133
  31. data/test/test_rake_file_task.rb +1 -3
  32. data/test/test_rake_file_utils.rb +123 -70
  33. data/test/test_rake_functional.rb +234 -252
  34. data/test/test_rake_makefile_loader.rb +22 -1
  35. data/test/test_rake_package_task.rb +10 -9
  36. data/test/test_rake_path_map_explode.rb +3 -0
  37. data/test/test_rake_pseudo_status.rb +3 -2
  38. data/test/test_rake_rake_test_loader.rb +21 -0
  39. data/test/test_rake_rdoc_task.rb +5 -3
  40. data/test/test_rake_require.rb +8 -3
  41. data/test/test_rake_rules.rb +56 -75
  42. data/test/test_rake_task.rb +5 -9
  43. data/test/test_rake_task_argument_parsing.rb +33 -46
  44. data/test/test_rake_task_arguments.rb +2 -0
  45. data/test/test_rake_task_manager.rb +12 -0
  46. data/test/test_rake_task_with_arguments.rb +11 -0
  47. data/test/test_rake_test_task.rb +55 -57
  48. data/test/test_rake_top_level_functions.rb +52 -17
  49. data/test/test_rake_win32.rb +31 -42
  50. metadata +6 -52
  51. data/RRR +0 -9
  52. data/test/check_expansion.rb +0 -5
  53. data/test/check_no_expansion.rb +0 -5
  54. data/test/data/access/Rakefile +0 -35
  55. data/test/data/chains/Rakefile +0 -15
  56. data/test/data/comments/Rakefile +0 -18
  57. data/test/data/default/Rakefile +0 -17
  58. data/test/data/deprecated_import/Rakefile +0 -1
  59. data/test/data/dryrun/Rakefile +0 -22
  60. data/test/data/extra/Rakefile +0 -1
  61. data/test/data/file_creation_task/Rakefile +0 -31
  62. data/test/data/imports/Rakefile +0 -19
  63. data/test/data/imports/deps.mf +0 -1
  64. data/test/data/multidesc/Rakefile +0 -15
  65. data/test/data/namespace/Rakefile +0 -64
  66. data/test/data/rakelib/test1.rb +0 -4
  67. data/test/data/rbext/rakefile.rb +0 -3
  68. data/test/data/sample.mf +0 -14
  69. data/test/data/statusreturn/Rakefile +0 -6
  70. data/test/data/unittest/Rakefile +0 -1
  71. data/test/data/verbose/Rakefile +0 -34
  72. data/test/in_environment.rb +0 -35
  73. data/test/reqfile.rb +0 -3
  74. data/test/reqfile2.rb +0 -3
  75. data/test/shellcommand.rb +0 -3
@@ -5,9 +5,30 @@ class TestRakeMakefileLoader < Rake::TestCase
5
5
  include Rake
6
6
 
7
7
  def test_parse
8
+ Dir.chdir @tempdir
9
+
10
+ open 'sample.mf', 'w' do |io|
11
+ io << <<-'SAMPLE_MF'
12
+ # Comments
13
+ a: a1 a2 a3 a4
14
+ b: b1 b2 b3 \
15
+ b4 b5 b6\
16
+ # Mid: Comment
17
+ b7
18
+
19
+ a : a5 a6 a7
20
+ c: c1
21
+ d: d1 d2 \
22
+
23
+ e f : e1 f1
24
+
25
+ g\ 0: g1 g\ 2 g\ 3 g4
26
+ SAMPLE_MF
27
+ end
28
+
8
29
  Task.clear
9
30
  loader = Rake::MakefileLoader.new
10
- loader.load("test/data/sample.mf")
31
+ loader.load 'sample.mf'
11
32
  %w(a b c d).each do |t|
12
33
  assert Task.task_defined?(t), "#{t} should be a defined task"
13
34
  end
@@ -4,16 +4,15 @@ require 'rake/packagetask'
4
4
  class TestRakePackageTask < Rake::TestCase
5
5
 
6
6
  def test_initialize
7
+ touch 'install.rb'
8
+ touch 'a.c'
9
+ touch 'b.c'
10
+ mkdir 'CVS'
11
+ touch 'a.rb~'
12
+
7
13
  pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p|
8
14
  p.package_files << "install.rb"
9
- p.package_files.include(
10
- '[A-Z]*',
11
- 'bin/**/*',
12
- 'lib/**/*.rb',
13
- 'test/**/*.rb',
14
- 'doc/**/*',
15
- 'build/rubyapp.rb',
16
- '*.blurb')
15
+ p.package_files.include '*.c'
17
16
  p.package_files.exclude(/\bCVS\b/)
18
17
  p.package_files.exclude(/~$/)
19
18
  p.package_dir = 'pkg'
@@ -24,7 +23,9 @@ class TestRakePackageTask < Rake::TestCase
24
23
  }
25
24
 
26
25
  assert_equal "pkg", pkg.package_dir
27
- assert pkg.package_files.include?("bin/rake")
26
+
27
+ assert_includes pkg.package_files, 'a.c'
28
+
28
29
  assert_equal 'pkgr', pkg.name
29
30
  assert_equal '1.2.3', pkg.version
30
31
  assert Rake::Task[:package]
@@ -9,6 +9,8 @@ class TestRakePathMapExplode < Rake::TestCase
9
9
 
10
10
  def teardown
11
11
  String.class_eval { protected :pathmap_explode }
12
+
13
+ super
12
14
  end
13
15
 
14
16
  def test_explode
@@ -18,6 +20,7 @@ class TestRakePathMapExplode < Rake::TestCase
18
20
  assert_equal ['/', 'a'], '/a'.pathmap_explode
19
21
  assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode
20
22
  assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode
23
+
21
24
  if File::ALT_SEPARATOR
22
25
  assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode
23
26
  assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode
@@ -6,15 +6,16 @@ class TestRakePseudoStatus < Rake::TestCase
6
6
  assert_equal 0, s.exitstatus
7
7
  assert_equal 0, s.to_i
8
8
  assert_equal 0, s >> 8
9
- assert ! s.stopped?
9
+ refute s.stopped?
10
10
  assert s.exited?
11
11
  end
12
+
12
13
  def test_with_99_exit_status
13
14
  s = Rake::PseudoStatus.new(99)
14
15
  assert_equal 99, s.exitstatus
15
16
  assert_equal 25344, s.to_i
16
17
  assert_equal 99, s >> 8
17
- assert ! s.stopped?
18
+ refute s.stopped?
18
19
  assert s.exited?
19
20
  end
20
21
  end
@@ -0,0 +1,21 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeRakeTestLoader < Rake::TestCase
4
+
5
+ def test_pattern
6
+ orig_LOADED_FEATURES = $:.dup
7
+ FileUtils.touch 'foo.rb'
8
+ FileUtils.touch 'test_a.rb'
9
+ FileUtils.touch 'test_b.rb'
10
+
11
+ ARGV.replace %w[foo.rb test_*.rb -v]
12
+
13
+ load File.join(@orig_PWD, 'lib/rake/rake_test_loader.rb')
14
+
15
+ assert_equal %w[-v], ARGV
16
+ ensure
17
+ $:.replace orig_LOADED_FEATURES
18
+ end
19
+
20
+ end
21
+
@@ -1,10 +1,12 @@
1
1
  require File.expand_path('../helper', __FILE__)
2
2
  begin
3
- old_verbose = $VERBOSE
4
- $VERBOSE = nil
3
+ old_stderr = $stderr
4
+ dev_null = File.exist?('/dev/null') ? '/dev/null' : 'NUL'
5
+ $stderr = open dev_null, 'w'
5
6
  require 'rake/rdoctask'
6
7
  ensure
7
- $VERBOSE = old_verbose
8
+ $stderr.close
9
+ $stderr = old_stderr
8
10
  end
9
11
 
10
12
  class TestRakeRDocTask < Rake::TestCase
@@ -3,16 +3,19 @@ require File.expand_path('../helper', __FILE__)
3
3
  class TestRakeRequire < Rake::TestCase
4
4
 
5
5
  def test_can_load_rake_library
6
+ rakefile_rakelib
6
7
  app = Rake::Application.new
8
+
7
9
  assert app.instance_eval {
8
- rake_require("test2", ['test/data/rakelib'], [])
10
+ rake_require("test2", ['rakelib'], [])
9
11
  }
10
12
  end
11
13
 
12
14
  def test_wont_reload_rake_library
15
+ rakefile_rakelib
13
16
  app = Rake::Application.new
14
17
 
15
- paths = ['test/data/rakelib']
18
+ paths = ['rakelib']
16
19
  loaded_files = []
17
20
  app.rake_require("test2", paths, loaded_files)
18
21
 
@@ -22,10 +25,12 @@ class TestRakeRequire < Rake::TestCase
22
25
  end
23
26
 
24
27
  def test_throws_error_if_library_not_found
28
+ rakefile_rakelib
29
+
25
30
  app = Rake::Application.new
26
31
  ex = assert_raises(LoadError) {
27
32
  assert app.instance_eval {
28
- rake_require("testx", ['test/data/rakelib'], [])
33
+ rake_require("testx", ['rakelib'], [])
29
34
  }
30
35
  }
31
36
  assert_match(/(can *not|can't)\s+find/i, ex.message)
@@ -1,29 +1,21 @@
1
1
  require File.expand_path('../helper', __FILE__)
2
2
  require 'fileutils'
3
3
 
4
- ######################################################################
5
4
  class TestRakeRules < Rake::TestCase
6
5
  include Rake
7
6
 
8
- SRCFILE = "testdata/abc.c"
9
- SRCFILE2 = "testdata/xyz.c"
10
- FTNFILE = "testdata/abc.f"
11
- OBJFILE = "testdata/abc.o"
12
- FOOFILE = "testdata/foo"
13
- DOTFOOFILE = "testdata/.foo"
7
+ SRCFILE = "abc.c"
8
+ SRCFILE2 = "xyz.c"
9
+ FTNFILE = "abc.f"
10
+ OBJFILE = "abc.o"
11
+ FOOFILE = "foo"
12
+ DOTFOOFILE = ".foo"
14
13
 
15
14
  def setup
16
15
  super
17
16
 
18
17
  Task.clear
19
18
  @runs = []
20
- FileUtils.mkdir_p 'testdata' # HACK use tmpdir
21
- end
22
-
23
- def teardown
24
- FileList['testdata/*'].uniq.each do |f| rm_r(f, :verbose=>false) end
25
-
26
- super
27
19
  end
28
20
 
29
21
  def test_multiple_rules1
@@ -97,79 +89,68 @@ class TestRakeRules < Rake::TestCase
97
89
 
98
90
  def test_file_names_beginning_with_dot_can_be_tricked_into_referring_to_file
99
91
  verbose(false) do
100
- chdir("testdata") do
101
- create_file('.foo')
102
- rule '.o' => "./.foo" do |t|
103
- @runs << t.name
104
- end
105
- Task[OBJFILE].invoke
106
- assert_equal [OBJFILE], @runs
92
+ create_file('.foo')
93
+ rule '.o' => "./.foo" do |t|
94
+ @runs << t.name
107
95
  end
96
+ Task[OBJFILE].invoke
97
+ assert_equal [OBJFILE], @runs
108
98
  end
109
99
  end
110
100
 
111
101
  def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda
112
102
  verbose(false) do
113
- chdir("testdata") do
114
- create_file(".foo")
115
- rule '.o' => lambda{".foo"} do |t|
116
- @runs << "#{t.name} - #{t.source}"
117
- end
118
- Task[OBJFILE].invoke
119
- assert_equal ["#{OBJFILE} - .foo"], @runs
103
+
104
+ create_file(".foo")
105
+ rule '.o' => lambda{".foo"} do |t|
106
+ @runs << "#{t.name} - #{t.source}"
120
107
  end
108
+ Task[OBJFILE].invoke
109
+ assert_equal ["#{OBJFILE} - .foo"], @runs
121
110
  end
122
111
  end
123
112
 
124
113
  def test_file_names_containing_percent_can_be_wrapped_in_lambda
125
114
  verbose(false) do
126
- chdir("testdata") do
127
- create_file("foo%x")
128
- rule '.o' => lambda{"foo%x"} do |t|
129
- @runs << "#{t.name} - #{t.source}"
130
- end
131
- Task[OBJFILE].invoke
132
- assert_equal ["#{OBJFILE} - foo%x"], @runs
115
+ create_file("foo%x")
116
+ rule '.o' => lambda{"foo%x"} do |t|
117
+ @runs << "#{t.name} - #{t.source}"
133
118
  end
119
+ Task[OBJFILE].invoke
120
+ assert_equal ["#{OBJFILE} - foo%x"], @runs
134
121
  end
135
122
  end
136
123
 
137
124
  def test_non_extension_rule_name_refers_to_file
138
125
  verbose(false) do
139
- chdir("testdata") do
140
- create_file("abc.c")
141
- rule "abc" => '.c' do |t|
142
- @runs << t.name
143
- end
144
- Task["abc"].invoke
145
- assert_equal ["abc"], @runs
126
+ create_file("abc.c")
127
+ rule "abc" => '.c' do |t|
128
+ @runs << t.name
146
129
  end
130
+ Task["abc"].invoke
131
+ assert_equal ["abc"], @runs
147
132
  end
148
133
  end
149
134
 
150
135
  def test_pathmap_automatically_applies_to_name
151
136
  verbose(false) do
152
- chdir("testdata") do
153
- create_file("zzabc.c")
154
- rule ".o" => 'zz%{x,a}n.c' do |t|
155
- @runs << "#{t.name} - #{t.source}"
156
- end
157
- Task["xbc.o"].invoke
158
- assert_equal ["xbc.o - zzabc.c"], @runs
137
+ create_file("zzabc.c")
138
+ rule ".o" => 'zz%{x,a}n.c' do |t|
139
+ @runs << "#{t.name} - #{t.source}"
159
140
  end
141
+ Task["xbc.o"].invoke
142
+ assert_equal ["xbc.o - zzabc.c"], @runs
160
143
  end
161
144
  end
162
145
 
163
146
  def test_plain_strings_are_just_filenames
164
147
  verbose(false) do
165
- chdir("testdata") do
166
- create_file("plainname")
167
- rule ".o" => 'plainname' do |t|
168
- @runs << "#{t.name} - #{t.source}"
169
- end
170
- Task["xbc.o"].invoke
171
- assert_equal ["xbc.o - plainname"], @runs
148
+ create_file("plainname")
149
+ rule ".o" => 'plainname' do |t|
150
+ @runs << "#{t.name} - #{t.source}"
172
151
  end
152
+ Task["xbc.o"].invoke
153
+ assert_equal ["xbc.o - plainname"], @runs
173
154
  end
174
155
  end
175
156
 
@@ -186,12 +167,12 @@ class TestRakeRules < Rake::TestCase
186
167
  end
187
168
 
188
169
  def test_close_matches_on_name_do_not_trigger_rule
189
- create_file("testdata/x.c")
170
+ create_file("x.c")
190
171
  rule '.o' => ['.c'] do |t|
191
172
  @runs << t.name
192
173
  end
193
- assert_raises(RuntimeError) { Task['testdata/x.obj'].invoke }
194
- assert_raises(RuntimeError) { Task['testdata/x.xyo'].invoke }
174
+ assert_raises(RuntimeError) { Task['x.obj'].invoke }
175
+ assert_raises(RuntimeError) { Task['x.xyo'].invoke }
195
176
  end
196
177
 
197
178
  def test_rule_rebuilds_obj_when_source_is_newer
@@ -276,26 +257,26 @@ class TestRakeRules < Rake::TestCase
276
257
  end
277
258
 
278
259
  def test_rule_with_proc_dependent_will_trigger
279
- mkdir_p("testdata/src/jw")
280
- create_file("testdata/src/jw/X.java")
260
+ mkdir_p("src/jw")
261
+ create_file("src/jw/X.java")
281
262
  rule %r(classes/.*\.class) => [
282
- proc { |fn| fn.pathmap("%{classes,testdata/src}d/%n.java") }
263
+ proc { |fn| fn.pathmap("%{classes,src}d/%n.java") }
283
264
  ] do |task|
284
265
  assert_equal task.name, 'classes/jw/X.class'
285
- assert_equal task.source, 'testdata/src/jw/X.java'
266
+ assert_equal task.source, 'src/jw/X.java'
286
267
  @runs << :RULE
287
268
  end
288
269
  Task['classes/jw/X.class'].invoke
289
270
  assert_equal [:RULE], @runs
290
271
  ensure
291
- rm_r("testdata/src", :verbose=>false) rescue nil
272
+ rm_r("src", :verbose=>false) rescue nil
292
273
  end
293
274
 
294
275
  def test_proc_returning_lists_are_flattened_into_prereqs
295
276
  ran = false
296
- mkdir_p("testdata/flatten")
297
- create_file("testdata/flatten/a.txt")
298
- task 'testdata/flatten/b.data' do |t|
277
+ mkdir_p("flatten")
278
+ create_file("flatten/a.txt")
279
+ task 'flatten/b.data' do |t|
299
280
  ran = true
300
281
  touch t.name, :verbose => false
301
282
  end
@@ -303,38 +284,38 @@ class TestRakeRules < Rake::TestCase
303
284
  proc { |fn|
304
285
  [
305
286
  fn.ext("txt"),
306
- "testdata/flatten/b.data"
287
+ "flatten/b.data"
307
288
  ]
308
289
  } do |task|
309
290
  end
310
- Task['testdata/flatten/a.html'].invoke
291
+ Task['flatten/a.html'].invoke
311
292
  assert ran, "Should have triggered flattened dependency"
312
293
  ensure
313
- rm_r("testdata/flatten", :verbose=>false) rescue nil
294
+ rm_r("flatten", :verbose=>false) rescue nil
314
295
  end
315
296
 
316
297
  def test_recursive_rules_will_work_as_long_as_they_terminate
317
298
  actions = []
318
- create_file("testdata/abc.xml")
299
+ create_file("abc.xml")
319
300
  rule '.y' => '.xml' do actions << 'y' end
320
301
  rule '.c' => '.y' do actions << 'c'end
321
302
  rule '.o' => '.c' do actions << 'o'end
322
303
  rule '.exe' => '.o' do actions << 'exe'end
323
- Task["testdata/abc.exe"].invoke
304
+ Task["abc.exe"].invoke
324
305
  assert_equal ['y', 'c', 'o', 'exe'], actions
325
306
  end
326
307
 
327
308
  def test_recursive_rules_that_dont_terminate_will_overflow
328
- create_file("testdata/a.a")
309
+ create_file("a.a")
329
310
  prev = 'a'
330
311
  ('b'..'z').each do |letter|
331
312
  rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end
332
313
  prev = letter
333
314
  end
334
315
  ex = assert_raises(Rake::RuleRecursionOverflowError) {
335
- Task["testdata/a.z"].invoke
316
+ Task["a.z"].invoke
336
317
  }
337
- assert_match(/a\.z => testdata\/a.y/, ex.message)
318
+ assert_match(/a\.z => a.y/, ex.message)
338
319
  end
339
320
 
340
321
  def test_rules_with_bad_dependents_will_fail
@@ -208,10 +208,7 @@ class TestRakeTask < Rake::TestCase
208
208
  b = task :b
209
209
  c = task :c
210
210
 
211
- faux_stamp = 100
212
- flexmock(Time, :now => faux_stamp)
213
-
214
- assert_equal faux_stamp, a.timestamp
211
+ assert_in_delta Time.now, a.timestamp, 0.1, 'computer too slow?'
215
212
  end
216
213
 
217
214
  def test_timestamp_returns_latest_prereq_timestamp
@@ -219,12 +216,11 @@ class TestRakeTask < Rake::TestCase
219
216
  b = task :b
220
217
  c = task :c
221
218
 
222
- faux_stamp = 100
223
- flexmock(Time, :now => faux_stamp-10)
224
- flexmock(b, :timestamp => faux_stamp - 1)
225
- flexmock(c, :timestamp => faux_stamp)
219
+ now = Time.now
220
+ def b.timestamp() Time.now + 10 end
221
+ def c.timestamp() Time.now + 5 end
226
222
 
227
- assert_equal faux_stamp, a.timestamp
223
+ assert_in_delta now + 10, a.timestamp, 0.1, 'computer too slow?'
228
224
  end
229
225
 
230
226
  def test_investigation_output