drake 0.8.3.1.0.14 → 0.8.4.1.0.15
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +27 -0
- data/CHANGES.drake +4 -0
- data/README +98 -198
- data/Rakefile +2 -4
- data/Rakefile.drake +0 -4
- data/doc/command_line_usage.rdoc +102 -0
- data/doc/rakefile.rdoc +4 -4
- data/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/lib/rake.rb +94 -60
- data/lib/rake/alt_system.rb +108 -0
- data/lib/rake/contrib/publisher.rb +1 -1
- data/lib/rake/contrib/sys.rb +1 -1
- data/lib/rake/gempackagetask.rb +0 -6
- data/lib/rake/loaders/makefile.rb +8 -1
- data/lib/rake/packagetask.rb +0 -1
- data/lib/rake/rdoctask.rb +79 -17
- data/lib/rake/testtask.rb +1 -1
- data/lib/rake/win32.rb +11 -10
- data/test/Rakefile.seq +1 -1
- data/test/Rakefile.simple +14 -25
- data/test/check_no_expansion.rb +5 -0
- data/test/data/sample.mf +2 -0
- data/test/rake_test_setup.rb +14 -0
- data/test/session_functional.rb +2 -0
- data/test/test_application.rb +25 -44
- data/test/test_definitions.rb +4 -1
- data/test/test_file_task.rb +20 -16
- data/test/test_filelist.rb +8 -3
- data/test/test_fileutils.rb +45 -44
- data/test/test_invocation_chain.rb +8 -2
- data/test/test_makefile_loader.rb +2 -1
- data/test/test_namespace.rb +30 -11
- data/test/test_package_task.rb +3 -1
- data/test/test_parallel.rb +4 -15
- data/test/test_pathmap.rb +3 -2
- data/test/test_pseudo_status.rb +26 -0
- data/test/test_rdoc_task.rb +88 -0
- data/test/test_require.rb +3 -1
- data/test/test_rules.rb +7 -5
- data/test/test_task_manager.rb +4 -1
- data/test/test_tasks.rb +7 -4
- data/test/test_test_task.rb +2 -0
- data/test/test_top_level_functions.rb +4 -2
- data/test/test_win32.rb +29 -14
- metadata +12 -4
@@ -2,9 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
4
|
require 'rake'
|
5
|
+
require 'test/rake_test_setup'
|
5
6
|
|
6
7
|
######################################################################
|
7
8
|
class TestAnEmptyInvocationChain < Test::Unit::TestCase
|
9
|
+
include TestMethods
|
8
10
|
|
9
11
|
def setup
|
10
12
|
@empty = Rake::InvocationChain::EMPTY
|
@@ -23,6 +25,8 @@ end
|
|
23
25
|
|
24
26
|
######################################################################
|
25
27
|
class TestAnInvocationChainWithOneMember < Test::Unit::TestCase
|
28
|
+
include TestMethods
|
29
|
+
|
26
30
|
def setup
|
27
31
|
@empty = Rake::InvocationChain::EMPTY
|
28
32
|
@first_member = "A"
|
@@ -34,7 +38,7 @@ class TestAnInvocationChainWithOneMember < Test::Unit::TestCase
|
|
34
38
|
end
|
35
39
|
|
36
40
|
def test_should_fail_when_adding_original_member
|
37
|
-
ex =
|
41
|
+
ex = assert_exception RuntimeError do
|
38
42
|
@chain.append(@first_member)
|
39
43
|
end
|
40
44
|
assert_match(/circular +dependency/i, ex.message)
|
@@ -49,6 +53,8 @@ end
|
|
49
53
|
|
50
54
|
######################################################################
|
51
55
|
class TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase
|
56
|
+
include TestMethods
|
57
|
+
|
52
58
|
def setup
|
53
59
|
@first_member = "A"
|
54
60
|
@second_member = "B"
|
@@ -65,7 +71,7 @@ class TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase
|
|
65
71
|
end
|
66
72
|
|
67
73
|
def test_should_fail_when_adding_original_member
|
68
|
-
ex =
|
74
|
+
ex = assert_exception RuntimeError do
|
69
75
|
@chain.append(@first_member)
|
70
76
|
end
|
71
77
|
assert_match(/A.*=>.*B.*=>.*A/, ex.message)
|
@@ -20,6 +20,7 @@ class TestMakefileLoader < Test::Unit::TestCase
|
|
20
20
|
assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort
|
21
21
|
assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort
|
22
22
|
assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort
|
23
|
-
assert_equal
|
23
|
+
assert_equal ["g1", "g 2", "g 3", "g4"].sort, Task['g 0'].prerequisites.sort
|
24
|
+
assert_equal 7, Task.tasks.size
|
24
25
|
end
|
25
26
|
end
|
data/test/test_namespace.rb
CHANGED
@@ -9,28 +9,47 @@ end
|
|
9
9
|
require 'test/unit'
|
10
10
|
require 'flexmock/test_unit'
|
11
11
|
require 'rake'
|
12
|
+
require 'test/rake_test_setup'
|
12
13
|
|
13
14
|
class TestNameSpace < Test::Unit::TestCase
|
15
|
+
include TestMethods
|
16
|
+
|
17
|
+
class TM
|
18
|
+
include Rake::TaskManager
|
19
|
+
end
|
14
20
|
|
15
21
|
def test_namespace_creation
|
16
|
-
mgr =
|
22
|
+
mgr = TM.new
|
17
23
|
ns = Rake::NameSpace.new(mgr, [])
|
18
24
|
assert_not_nil ns
|
19
25
|
end
|
20
26
|
|
21
27
|
def test_namespace_lookup
|
22
|
-
mgr =
|
23
|
-
mgr.
|
24
|
-
|
25
|
-
|
26
|
-
|
28
|
+
mgr = TM.new
|
29
|
+
ns = mgr.in_namespace("n") do
|
30
|
+
mgr.define_task(Rake::Task, "t")
|
31
|
+
end
|
32
|
+
|
33
|
+
assert_not_nil ns["t"]
|
34
|
+
assert_equal mgr["n:t"], ns["t"]
|
27
35
|
end
|
28
36
|
|
29
37
|
def test_namespace_reports_tasks_it_owns
|
30
|
-
mgr =
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
38
|
+
mgr = TM.new
|
39
|
+
nns = nil
|
40
|
+
ns = mgr.in_namespace("n") do
|
41
|
+
mgr.define_task(Rake::Task, :x)
|
42
|
+
mgr.define_task(Rake::Task, :y)
|
43
|
+
nns = mgr.in_namespace("nn") do
|
44
|
+
mgr.define_task(Rake::Task, :z)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
mgr.in_namespace("m") do
|
48
|
+
mgr.define_task(Rake::Task, :x)
|
49
|
+
end
|
50
|
+
|
51
|
+
assert_equal ["n:nn:z", "n:x", "n:y"],
|
52
|
+
ns.tasks.map { |tsk| tsk.name }
|
53
|
+
assert_equal ["n:nn:z"], nns.tasks.map {|t| t.name}
|
35
54
|
end
|
36
55
|
end
|
data/test/test_package_task.rb
CHANGED
@@ -2,9 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
4
|
require 'rake/packagetask'
|
5
|
+
require 'test/rake_test_setup'
|
5
6
|
|
6
7
|
class TestPackageTask < Test::Unit::TestCase
|
7
8
|
include Rake
|
9
|
+
include TestMethods
|
8
10
|
|
9
11
|
def test_create
|
10
12
|
pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p|
|
@@ -40,7 +42,7 @@ class TestPackageTask < Test::Unit::TestCase
|
|
40
42
|
end
|
41
43
|
|
42
44
|
def test_missing_version
|
43
|
-
|
45
|
+
assert_exception(RuntimeError) {
|
44
46
|
pkg = Rake::PackageTask.new("pkgr") { |p| }
|
45
47
|
}
|
46
48
|
end
|
data/test/test_parallel.rb
CHANGED
@@ -2,28 +2,17 @@
|
|
2
2
|
require 'rbconfig'
|
3
3
|
require 'test/unit'
|
4
4
|
|
5
|
-
ENV["PATH"] =
|
6
|
-
File.expand_path(File.dirname(__FILE__) + "/../bin") +
|
7
|
-
":" +
|
8
|
-
ENV["PATH"]
|
9
|
-
|
10
5
|
if Rake.application.num_threads > 1
|
11
6
|
class TestSimpleParallel < Test::Unit::TestCase
|
12
7
|
def test_1
|
13
8
|
here = File.dirname(__FILE__)
|
14
|
-
|
15
|
-
|
16
|
-
if Config::CONFIG["arch"] =~ %r!java!i
|
17
|
-
"jrake"
|
18
|
-
else
|
19
|
-
"rake"
|
20
|
-
end
|
21
|
-
|
9
|
+
rake = File.expand_path("#{here}/../bin/rake")
|
10
|
+
|
22
11
|
ENV["RUBYLIB"] = lambda {
|
23
12
|
lib = File.expand_path("#{here}/../lib")
|
24
13
|
current = ENV["RUBYLIB"]
|
25
14
|
if current
|
26
|
-
"#{
|
15
|
+
"#{lib}:#{current}"
|
27
16
|
else
|
28
17
|
lib
|
29
18
|
end
|
@@ -36,7 +25,7 @@ if Rake.application.num_threads > 1
|
|
36
25
|
].each { |file|
|
37
26
|
(1..5).each { |n|
|
38
27
|
args = [rake, "--threads", n.to_s, "-f", file]
|
39
|
-
puts("-"*40)
|
28
|
+
puts("\n" + "-"*40)
|
40
29
|
puts(args.join(" "))
|
41
30
|
assert(system(*args))
|
42
31
|
}
|
data/test/test_pathmap.rb
CHANGED
@@ -5,6 +5,7 @@ require 'rake'
|
|
5
5
|
|
6
6
|
# ====================================================================
|
7
7
|
class TestPathMap < Test::Unit::TestCase
|
8
|
+
include TestMethods
|
8
9
|
|
9
10
|
def test_returns_self_with_no_args
|
10
11
|
assert_equal "abc.rb", "abc.rb".pathmap
|
@@ -86,7 +87,7 @@ class TestPathMap < Test::Unit::TestCase
|
|
86
87
|
end
|
87
88
|
|
88
89
|
def test_undefined_percent_causes_error
|
89
|
-
ex =
|
90
|
+
ex = assert_exception(ArgumentError) {
|
90
91
|
"dir/abc.rb".pathmap("%z")
|
91
92
|
}
|
92
93
|
end
|
@@ -130,7 +131,7 @@ class TestPathMap < Test::Unit::TestCase
|
|
130
131
|
end
|
131
132
|
|
132
133
|
def test_pattern_with_invalid_operator
|
133
|
-
ex =
|
134
|
+
ex = assert_exception(ArgumentError) do
|
134
135
|
"abc.xyz".pathmap("%{src,bin}z")
|
135
136
|
end
|
136
137
|
assert_match(/unknown.*pathmap.*spec.*z/i, ex.message)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'rake'
|
5
|
+
|
6
|
+
require 'test/capture_stdout'
|
7
|
+
require 'test/rake_test_setup'
|
8
|
+
|
9
|
+
class PseudoStatusTest < Test::Unit::TestCase
|
10
|
+
def test_with_zero_exit_status
|
11
|
+
s = Rake::PseudoStatus.new
|
12
|
+
assert_equal 0, s.exitstatus
|
13
|
+
assert_equal 0, s.to_i
|
14
|
+
assert_equal 0, s >> 8
|
15
|
+
assert ! s.stopped?
|
16
|
+
assert s.exited?
|
17
|
+
end
|
18
|
+
def test_with_99_exit_status
|
19
|
+
s = Rake::PseudoStatus.new(99)
|
20
|
+
assert_equal 99, s.exitstatus
|
21
|
+
assert_equal 25344, s.to_i
|
22
|
+
assert_equal 99, s >> 8
|
23
|
+
assert ! s.stopped?
|
24
|
+
assert s.exited?
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
require 'test/rake_test_setup'
|
6
|
+
|
7
|
+
class TestRDocTask < Test::Unit::TestCase
|
8
|
+
include Rake
|
9
|
+
include TestMethods
|
10
|
+
|
11
|
+
def setup
|
12
|
+
Task.clear
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_tasks_creation
|
16
|
+
Rake::RDocTask.new
|
17
|
+
assert Task[:rdoc]
|
18
|
+
assert Task[:clobber_rdoc]
|
19
|
+
assert Task[:rerdoc]
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_tasks_creation_with_custom_name_symbol
|
23
|
+
rd = Rake::RDocTask.new(:rdoc_dev)
|
24
|
+
assert Task[:rdoc_dev]
|
25
|
+
assert Task[:clobber_rdoc_dev]
|
26
|
+
assert Task[:rerdoc_dev]
|
27
|
+
assert_equal :rdoc_dev, rd.name
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_tasks_creation_with_custom_name_string
|
31
|
+
rd = Rake::RDocTask.new("rdoc_dev")
|
32
|
+
assert Task[:rdoc_dev]
|
33
|
+
assert Task[:clobber_rdoc_dev]
|
34
|
+
assert Task[:rerdoc_dev]
|
35
|
+
assert_equal "rdoc_dev", rd.name
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_tasks_creation_with_custom_name_hash
|
39
|
+
options = { :rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force" }
|
40
|
+
rd = Rake::RDocTask.new(options)
|
41
|
+
assert Task[:"rdoc"]
|
42
|
+
assert Task[:"rdoc:clean"]
|
43
|
+
assert Task[:"rdoc:force"]
|
44
|
+
assert_raises(RuntimeError) { Task[:clobber_rdoc] }
|
45
|
+
assert_equal options, rd.name
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_tasks_creation_with_custom_name_hash_will_use_default_if_an_option_isnt_given
|
49
|
+
rd = Rake::RDocTask.new(:clobber_rdoc => "rdoc:clean")
|
50
|
+
assert Task[:rdoc]
|
51
|
+
assert Task[:"rdoc:clean"]
|
52
|
+
assert Task[:rerdoc]
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_tasks_creation_with_custom_name_hash_raises_exception_if_invalid_option_given
|
56
|
+
assert_raises(ArgumentError) do
|
57
|
+
Rake::RDocTask.new(:foo => "bar")
|
58
|
+
end
|
59
|
+
|
60
|
+
begin
|
61
|
+
Rake::RDocTask.new(:foo => "bar")
|
62
|
+
rescue ArgumentError => e
|
63
|
+
assert_match(/foo/, e.message)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_inline_source_is_enabled_by_default
|
68
|
+
rd = Rake::RDocTask.new
|
69
|
+
assert rd.option_list.include?('--inline-source')
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_inline_source_option_is_only_appended_if_option_not_already_given
|
73
|
+
rd = Rake::RDocTask.new
|
74
|
+
rd.options << '--inline-source'
|
75
|
+
assert_equal 1, rd.option_list.grep('--inline-source').size
|
76
|
+
|
77
|
+
rd = Rake::RDocTask.new
|
78
|
+
rd.options << '-S'
|
79
|
+
assert_equal 1, rd.option_list.grep('-S').size
|
80
|
+
assert_equal 0, rd.option_list.grep('--inline-source').size
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_inline_source_option_can_be_disabled
|
84
|
+
rd = Rake::RDocTask.new
|
85
|
+
rd.inline_source = false
|
86
|
+
assert !rd.option_list.include?('--inline-source')
|
87
|
+
end
|
88
|
+
end
|
data/test/test_require.rb
CHANGED
@@ -2,9 +2,11 @@
|
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
4
|
require 'rake'
|
5
|
+
require 'test/rake_test_setup'
|
5
6
|
|
6
7
|
# ====================================================================
|
7
8
|
class TestRequire < Test::Unit::TestCase
|
9
|
+
include TestMethods
|
8
10
|
|
9
11
|
def test_can_load_rake_library
|
10
12
|
app = Rake::Application.new
|
@@ -22,7 +24,7 @@ class TestRequire < Test::Unit::TestCase
|
|
22
24
|
|
23
25
|
def test_throws_error_if_library_not_found
|
24
26
|
app = Rake::Application.new
|
25
|
-
ex =
|
27
|
+
ex = assert_exception(LoadError) {
|
26
28
|
assert app.instance_eval {
|
27
29
|
rake_require("testx", ['test/data/rakelib'], [])
|
28
30
|
}
|
data/test/test_rules.rb
CHANGED
@@ -4,11 +4,13 @@ require 'test/unit'
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'rake'
|
6
6
|
require 'test/filecreation'
|
7
|
+
require 'test/rake_test_setup'
|
7
8
|
|
8
9
|
######################################################################
|
9
10
|
class TestRules < Test::Unit::TestCase
|
10
11
|
include Rake
|
11
12
|
include FileCreation
|
13
|
+
include TestMethods
|
12
14
|
|
13
15
|
SRCFILE = "testdata/abc.c"
|
14
16
|
SRCFILE2 = "testdata/xyz.c"
|
@@ -23,7 +25,7 @@ class TestRules < Test::Unit::TestCase
|
|
23
25
|
end
|
24
26
|
|
25
27
|
def teardown
|
26
|
-
FileList['testdata/*'].each do |f| rm_r(f, :verbose=>false) end
|
28
|
+
FileList['testdata/*'].uniq.each do |f| rm_r(f, :verbose=>false) end
|
27
29
|
end
|
28
30
|
|
29
31
|
def test_multiple_rules1
|
@@ -191,8 +193,8 @@ class TestRules < Test::Unit::TestCase
|
|
191
193
|
rule '.o' => ['.c'] do |t|
|
192
194
|
@runs << t.name
|
193
195
|
end
|
194
|
-
|
195
|
-
|
196
|
+
assert_exception(RuntimeError) { Task['testdata/x.obj'].invoke }
|
197
|
+
assert_exception(RuntimeError) { Task['testdata/x.xyo'].invoke }
|
196
198
|
end
|
197
199
|
|
198
200
|
def test_rule_rebuilds_obj_when_source_is_newer
|
@@ -333,7 +335,7 @@ class TestRules < Test::Unit::TestCase
|
|
333
335
|
rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end
|
334
336
|
prev = letter
|
335
337
|
end
|
336
|
-
ex =
|
338
|
+
ex = assert_exception(Rake::RuleRecursionOverflowError) {
|
337
339
|
Task["testdata/a.z"].invoke
|
338
340
|
}
|
339
341
|
assert_match(/a\.z => testdata\/a.y/, ex.message)
|
@@ -341,7 +343,7 @@ class TestRules < Test::Unit::TestCase
|
|
341
343
|
|
342
344
|
def test_rules_with_bad_dependents_will_fail
|
343
345
|
rule "a" => [ 1 ] do |t| puts t.name end
|
344
|
-
|
346
|
+
assert_exception(RuntimeError) do Task['a'].invoke end
|
345
347
|
end
|
346
348
|
|
347
349
|
end
|
data/test/test_task_manager.rb
CHANGED
@@ -2,12 +2,15 @@
|
|
2
2
|
|
3
3
|
require 'test/unit'
|
4
4
|
require 'rake'
|
5
|
+
require 'test/rake_test_setup'
|
5
6
|
|
6
7
|
class TaskManager
|
7
8
|
include Rake::TaskManager
|
8
9
|
end
|
9
10
|
|
10
11
|
class TestTaskManager < Test::Unit::TestCase
|
12
|
+
include TestMethods
|
13
|
+
|
11
14
|
def setup
|
12
15
|
@tm = TaskManager.new
|
13
16
|
@tm.num_threads = Rake.application.num_threads
|
@@ -69,7 +72,7 @@ class TestTaskManager < Test::Unit::TestCase
|
|
69
72
|
end
|
70
73
|
|
71
74
|
def test_name_lookup_with_nonexistent_task
|
72
|
-
|
75
|
+
assert_exception(RuntimeError) {
|
73
76
|
t = @tm["DOES NOT EXIST"]
|
74
77
|
}
|
75
78
|
end
|
data/test/test_tasks.rb
CHANGED
@@ -5,11 +5,13 @@ require 'fileutils'
|
|
5
5
|
require 'rake'
|
6
6
|
require 'test/filecreation'
|
7
7
|
require 'test/capture_stdout'
|
8
|
+
require 'test/rake_test_setup'
|
8
9
|
|
9
10
|
######################################################################
|
10
11
|
class TestTask < Test::Unit::TestCase
|
11
12
|
include CaptureStdout
|
12
13
|
include Rake
|
14
|
+
include TestMethods
|
13
15
|
|
14
16
|
def setup
|
15
17
|
Task.clear
|
@@ -48,7 +50,7 @@ class TestTask < Test::Unit::TestCase
|
|
48
50
|
t2 = task(:t2 => [:t1]) { |t| runlist << t.name }
|
49
51
|
assert_equal ["t2"], t1.prerequisites
|
50
52
|
assert_equal ["t1"], t2.prerequisites
|
51
|
-
ex =
|
53
|
+
ex = assert_exception RuntimeError do
|
52
54
|
t1.invoke
|
53
55
|
end
|
54
56
|
assert_match(/circular dependency/i, ex.message)
|
@@ -123,7 +125,7 @@ class TestTask < Test::Unit::TestCase
|
|
123
125
|
def test_find
|
124
126
|
task :tfind
|
125
127
|
assert_equal "tfind", Task[:tfind].name
|
126
|
-
ex =
|
128
|
+
ex = assert_exception(RuntimeError) { Task[:leaves] }
|
127
129
|
assert_equal "Don't know how to build task 'leaves'", ex.message
|
128
130
|
end
|
129
131
|
|
@@ -181,7 +183,7 @@ class TestTask < Test::Unit::TestCase
|
|
181
183
|
out = t1.investigation
|
182
184
|
assert_match(/class:\s*Rake::Task/, out)
|
183
185
|
assert_match(/needed:\s*true/, out)
|
184
|
-
assert_match(/pre-requisites:\s*--
|
186
|
+
assert_match(/pre-requisites:\s*--t[23]/, out)
|
185
187
|
end
|
186
188
|
|
187
189
|
|
@@ -220,6 +222,7 @@ end
|
|
220
222
|
class TestTaskWithArguments < Test::Unit::TestCase
|
221
223
|
include CaptureStdout
|
222
224
|
include Rake
|
225
|
+
include TestMethods
|
223
226
|
|
224
227
|
def setup
|
225
228
|
Task.clear
|
@@ -257,7 +260,7 @@ class TestTaskWithArguments < Test::Unit::TestCase
|
|
257
260
|
end
|
258
261
|
|
259
262
|
def test_illegal_keys_in_task_name_hash
|
260
|
-
|
263
|
+
assert_exception RuntimeError do
|
261
264
|
t = task(:t, :x, :y => 1, :needs => [:pre])
|
262
265
|
end
|
263
266
|
end
|