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.
- data/CHANGES +13 -0
- data/README.rdoc +12 -15
- data/Rakefile +8 -44
- data/bin/rake +1 -0
- data/lib/rake.rb +4 -0
- data/lib/rake/application.rb +9 -3
- data/lib/rake/classic_namespace.rb +2 -0
- data/lib/rake/clean.rb +1 -0
- data/lib/rake/contrib/publisher.rb +10 -6
- data/lib/rake/contrib/sshpublisher.rb +5 -0
- data/lib/rake/dsl_definition.rb +13 -4
- data/lib/rake/ext/time.rb +3 -3
- data/lib/rake/file_utils.rb +9 -7
- data/lib/rake/file_utils_ext.rb +4 -1
- data/lib/rake/gempackagetask.rb +2 -0
- data/lib/rake/rake_test_loader.rb +15 -6
- data/lib/rake/rdoctask.rb +5 -1
- data/lib/rake/task_arguments.rb +4 -0
- data/lib/rake/version.rb +5 -7
- data/test/file_creation.rb +2 -2
- data/test/helper.rb +460 -12
- data/test/test_rake.rb +3 -1
- data/test/test_rake_application.rb +250 -125
- data/test/test_rake_application_options.rb +146 -193
- data/test/test_rake_clean.rb +2 -0
- data/test/test_rake_definitions.rb +6 -6
- data/test/test_rake_directory_task.rb +26 -35
- data/test/test_rake_dsl.rb +4 -0
- data/test/test_rake_file_creation_task.rb +1 -7
- data/test/test_rake_file_list.rb +128 -133
- data/test/test_rake_file_task.rb +1 -3
- data/test/test_rake_file_utils.rb +123 -70
- data/test/test_rake_functional.rb +234 -252
- data/test/test_rake_makefile_loader.rb +22 -1
- data/test/test_rake_package_task.rb +10 -9
- data/test/test_rake_path_map_explode.rb +3 -0
- data/test/test_rake_pseudo_status.rb +3 -2
- data/test/test_rake_rake_test_loader.rb +21 -0
- data/test/test_rake_rdoc_task.rb +5 -3
- data/test/test_rake_require.rb +8 -3
- data/test/test_rake_rules.rb +56 -75
- data/test/test_rake_task.rb +5 -9
- data/test/test_rake_task_argument_parsing.rb +33 -46
- data/test/test_rake_task_arguments.rb +2 -0
- data/test/test_rake_task_manager.rb +12 -0
- data/test/test_rake_task_with_arguments.rb +11 -0
- data/test/test_rake_test_task.rb +55 -57
- data/test/test_rake_top_level_functions.rb +52 -17
- data/test/test_rake_win32.rb +31 -42
- metadata +6 -52
- data/RRR +0 -9
- data/test/check_expansion.rb +0 -5
- data/test/check_no_expansion.rb +0 -5
- data/test/data/access/Rakefile +0 -35
- data/test/data/chains/Rakefile +0 -15
- data/test/data/comments/Rakefile +0 -18
- data/test/data/default/Rakefile +0 -17
- data/test/data/deprecated_import/Rakefile +0 -1
- data/test/data/dryrun/Rakefile +0 -22
- data/test/data/extra/Rakefile +0 -1
- data/test/data/file_creation_task/Rakefile +0 -31
- data/test/data/imports/Rakefile +0 -19
- data/test/data/imports/deps.mf +0 -1
- data/test/data/multidesc/Rakefile +0 -15
- data/test/data/namespace/Rakefile +0 -64
- data/test/data/rakelib/test1.rb +0 -4
- data/test/data/rbext/rakefile.rb +0 -3
- data/test/data/sample.mf +0 -14
- data/test/data/statusreturn/Rakefile +0 -6
- data/test/data/unittest/Rakefile +0 -1
- data/test/data/verbose/Rakefile +0 -34
- data/test/in_environment.rb +0 -35
- data/test/reqfile.rb +0 -3
- data/test/reqfile2.rb +0 -3
- 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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
+
|
data/test/test_rake_rdoc_task.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require File.expand_path('../helper', __FILE__)
|
2
2
|
begin
|
3
|
-
|
4
|
-
|
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
|
-
$
|
8
|
+
$stderr.close
|
9
|
+
$stderr = old_stderr
|
8
10
|
end
|
9
11
|
|
10
12
|
class TestRakeRDocTask < Rake::TestCase
|
data/test/test_rake_require.rb
CHANGED
@@ -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", ['
|
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 = ['
|
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", ['
|
33
|
+
rake_require("testx", ['rakelib'], [])
|
29
34
|
}
|
30
35
|
}
|
31
36
|
assert_match(/(can *not|can't)\s+find/i, ex.message)
|
data/test/test_rake_rules.rb
CHANGED
@@ -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
|
9
|
-
SRCFILE2
|
10
|
-
FTNFILE
|
11
|
-
OBJFILE
|
12
|
-
FOOFILE
|
13
|
-
DOTFOOFILE = "
|
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
|
-
|
101
|
-
|
102
|
-
|
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
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
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
|
-
|
127
|
-
|
128
|
-
|
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
|
-
|
140
|
-
|
141
|
-
|
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
|
-
|
153
|
-
|
154
|
-
|
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
|
-
|
166
|
-
|
167
|
-
|
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("
|
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['
|
194
|
-
assert_raises(RuntimeError) { Task['
|
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("
|
280
|
-
create_file("
|
260
|
+
mkdir_p("src/jw")
|
261
|
+
create_file("src/jw/X.java")
|
281
262
|
rule %r(classes/.*\.class) => [
|
282
|
-
proc { |fn| fn.pathmap("%{classes,
|
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, '
|
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("
|
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("
|
297
|
-
create_file("
|
298
|
-
task '
|
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
|
-
"
|
287
|
+
"flatten/b.data"
|
307
288
|
]
|
308
289
|
} do |task|
|
309
290
|
end
|
310
|
-
Task['
|
291
|
+
Task['flatten/a.html'].invoke
|
311
292
|
assert ran, "Should have triggered flattened dependency"
|
312
293
|
ensure
|
313
|
-
rm_r("
|
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("
|
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["
|
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("
|
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["
|
316
|
+
Task["a.z"].invoke
|
336
317
|
}
|
337
|
-
assert_match(/a\.z =>
|
318
|
+
assert_match(/a\.z => a.y/, ex.message)
|
338
319
|
end
|
339
320
|
|
340
321
|
def test_rules_with_bad_dependents_will_fail
|
data/test/test_rake_task.rb
CHANGED
@@ -208,10 +208,7 @@ class TestRakeTask < Rake::TestCase
|
|
208
208
|
b = task :b
|
209
209
|
c = task :c
|
210
210
|
|
211
|
-
|
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
|
-
|
223
|
-
|
224
|
-
|
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
|
-
|
223
|
+
assert_in_delta now + 10, a.timestamp, 0.1, 'computer too slow?'
|
228
224
|
end
|
229
225
|
|
230
226
|
def test_investigation_output
|