rake 0.7.3 → 0.8.7

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 (66) hide show
  1. data/CHANGES +126 -1
  2. data/README +86 -132
  3. data/Rakefile +111 -64
  4. data/TODO +1 -0
  5. data/bin/rake +24 -0
  6. data/doc/command_line_usage.rdoc +102 -0
  7. data/doc/rakefile.rdoc +126 -3
  8. data/doc/release_notes/rake-0.7.3.rdoc +0 -0
  9. data/doc/release_notes/rake-0.8.0.rdoc +114 -0
  10. data/doc/release_notes/rake-0.8.2.rdoc +165 -0
  11. data/doc/release_notes/rake-0.8.3.rdoc +112 -0
  12. data/doc/release_notes/rake-0.8.4.rdoc +147 -0
  13. data/doc/release_notes/rake-0.8.5.rdoc +53 -0
  14. data/doc/release_notes/rake-0.8.6.rdoc +55 -0
  15. data/doc/release_notes/rake-0.8.7.rdoc +55 -0
  16. data/lib/rake/alt_system.rb +108 -0
  17. data/lib/rake/contrib/ftptools.rb +24 -10
  18. data/lib/rake/contrib/publisher.rb +1 -1
  19. data/lib/rake/contrib/sys.rb +5 -2
  20. data/lib/rake/gempackagetask.rb +2 -6
  21. data/lib/rake/loaders/makefile.rb +17 -15
  22. data/lib/rake/rdoctask.rb +83 -21
  23. data/lib/rake/ruby182_test_unit_fix.rb +0 -0
  24. data/lib/rake/tasklib.rb +8 -3
  25. data/lib/rake/testtask.rb +1 -1
  26. data/lib/rake/win32.rb +55 -0
  27. data/lib/rake.rb +861 -386
  28. data/test/check_expansion.rb +5 -0
  29. data/test/check_no_expansion.rb +5 -0
  30. data/test/data/file_creation_task/Rakefile +4 -1
  31. data/test/data/multidesc/Rakefile +3 -0
  32. data/test/data/sample.mf +6 -1
  33. data/test/data/statusreturn/Rakefile +8 -0
  34. data/test/filecreation.rb +0 -2
  35. data/test/functional.rb +3 -1
  36. data/test/in_environment.rb +30 -0
  37. data/test/rake_test_setup.rb +24 -0
  38. data/test/session_functional.rb +145 -24
  39. data/test/shellcommand.rb +0 -0
  40. data/test/test_application.rb +345 -95
  41. data/test/test_definitions.rb +4 -1
  42. data/test/test_earlytime.rb +2 -2
  43. data/test/test_extension.rb +63 -0
  44. data/test/test_file_task.rb +20 -16
  45. data/test/test_filelist.rb +59 -10
  46. data/test/test_fileutils.rb +59 -38
  47. data/test/test_ftp.rb +5 -1
  48. data/test/test_invocation_chain.rb +81 -0
  49. data/test/test_makefile_loader.rb +5 -2
  50. data/test/test_namespace.rb +37 -14
  51. data/test/test_package_task.rb +3 -15
  52. data/test/test_pathmap.rb +24 -2
  53. data/test/test_pseudo_status.rb +26 -0
  54. data/test/test_rake.rb +9 -2
  55. data/test/test_rdoc_task.rb +88 -0
  56. data/test/test_require.rb +3 -1
  57. data/test/test_rules.rb +56 -12
  58. data/test/test_task_arguments.rb +89 -0
  59. data/test/test_task_manager.rb +27 -2
  60. data/test/test_tasklib.rb +12 -0
  61. data/test/test_tasks.rb +248 -20
  62. data/test/test_test_task.rb +3 -2
  63. data/test/test_top_level_functions.rb +10 -3
  64. data/test/test_win32.rb +72 -0
  65. metadata +105 -69
  66. /data/test/contrib/{testsys.rb → test_sys.rb} +0 -0
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
@@ -60,6 +61,11 @@ class TestPathMap < Test::Unit::TestCase
60
61
  assert_equal "abc", "abc".pathmap("%X")
61
62
  assert_equal "abc", "abc.rb".pathmap("%X")
62
63
  assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X")
64
+ assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X")
65
+ assert_equal "a.xyz", "a.xyz.rb".pathmap("%X")
66
+ assert_equal "abc", "abc.rb".pathmap("%X")
67
+ assert_equal "ab", "ab.rb".pathmap("%X")
68
+ assert_equal "a", "a.rb".pathmap("%X")
63
69
  assert_equal ".depends", ".depends".pathmap("%X")
64
70
  assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X")
65
71
  assert_equal "/.depends", "/.depends".pathmap("%X")
@@ -81,7 +87,7 @@ class TestPathMap < Test::Unit::TestCase
81
87
  end
82
88
 
83
89
  def test_undefined_percent_causes_error
84
- ex = assert_raise(ArgumentError) {
90
+ ex = assert_exception(ArgumentError) {
85
91
  "dir/abc.rb".pathmap("%z")
86
92
  }
87
93
  end
@@ -125,7 +131,7 @@ class TestPathMap < Test::Unit::TestCase
125
131
  end
126
132
 
127
133
  def test_pattern_with_invalid_operator
128
- ex = assert_raise(ArgumentError) do
134
+ ex = assert_exception(ArgumentError) do
129
135
  "abc.xyz".pathmap("%{src,bin}z")
130
136
  end
131
137
  assert_match(/unknown.*pathmap.*spec.*z/i, ex.message)
@@ -181,6 +187,22 @@ class TestPathMapExplode < Test::Unit::TestCase
181
187
  end
182
188
  end
183
189
 
190
+ class TestPathMapPartial < Test::Unit::TestCase
191
+ def test_pathmap_partial
192
+ @path = "1/2/file"
193
+ def @path.call(n)
194
+ pathmap_partial(n)
195
+ end
196
+ assert_equal("1", @path.call(1))
197
+ assert_equal("1/2", @path.call(2))
198
+ assert_equal("1/2", @path.call(3))
199
+ assert_equal(".", @path.call(0))
200
+ assert_equal("2", @path.call(-1))
201
+ assert_equal("1/2", @path.call(-2))
202
+ assert_equal("1/2", @path.call(-3))
203
+ end
204
+ end
205
+
184
206
  class TestFileListPathMap < Test::Unit::TestCase
185
207
  def test_file_list_supports_pathmap
186
208
  assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n")
@@ -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
data/test/test_rake.rb CHANGED
@@ -8,8 +8,15 @@ class TestRake < Test::Unit::TestCase
8
8
  assert_equal ['a'], alldirs('a')
9
9
  assert_equal ['a/b', 'a'], alldirs('a/b')
10
10
  assert_equal ['/a/b', '/a', '/'], alldirs('/a/b')
11
- assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b')
12
- assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b')
11
+ if File.dirname("c:/foo") == "c:"
12
+ # Under Unix
13
+ assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b')
14
+ assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b')
15
+ else
16
+ # Under Windows
17
+ assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b')
18
+ assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b')
19
+ end
13
20
  end
14
21
 
15
22
  def alldirs(fn)
@@ -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 = assert_raise(LoadError) {
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
@@ -113,10 +115,23 @@ class TestRules < Test::Unit::TestCase
113
115
  chdir("testdata") do
114
116
  create_file(".foo")
115
117
  rule '.o' => lambda{".foo"} do |t|
116
- @runs << t.name
118
+ @runs << "#{t.name} - #{t.source}"
117
119
  end
118
120
  Task[OBJFILE].invoke
119
- assert_equal [OBJFILE], @runs
121
+ assert_equal ["#{OBJFILE} - .foo"], @runs
122
+ end
123
+ end
124
+ end
125
+
126
+ def test_file_names_containing_percent_can_be_wrapped_in_lambda
127
+ verbose(false) do
128
+ chdir("testdata") do
129
+ create_file("foo%x")
130
+ rule '.o' => lambda{"foo%x"} do |t|
131
+ @runs << "#{t.name} - #{t.source}"
132
+ end
133
+ Task[OBJFILE].invoke
134
+ assert_equal ["#{OBJFILE} - foo%x"], @runs
120
135
  end
121
136
  end
122
137
  end
@@ -137,12 +152,25 @@ class TestRules < Test::Unit::TestCase
137
152
  def test_pathmap_automatically_applies_to_name
138
153
  verbose(false) do
139
154
  chdir("testdata") do
140
- create_file("abc.c")
141
- rule ".o" => '%{x,a}n.c' do |t|
155
+ create_file("zzabc.c")
156
+ rule ".o" => 'zz%{x,a}n.c' do |t|
142
157
  @runs << "#{t.name} - #{t.source}"
143
158
  end
144
159
  Task["xbc.o"].invoke
145
- assert_equal ["xbc.o - abc.c"], @runs
160
+ assert_equal ["xbc.o - zzabc.c"], @runs
161
+ end
162
+ end
163
+ end
164
+
165
+ def test_plain_strings_are_just_filenames
166
+ verbose(false) do
167
+ chdir("testdata") do
168
+ create_file("plainname")
169
+ rule ".o" => 'plainname' do |t|
170
+ @runs << "#{t.name} - #{t.source}"
171
+ end
172
+ Task["xbc.o"].invoke
173
+ assert_equal ["xbc.o - plainname"], @runs
146
174
  end
147
175
  end
148
176
  end
@@ -164,8 +192,8 @@ class TestRules < Test::Unit::TestCase
164
192
  rule '.o' => ['.c'] do |t|
165
193
  @runs << t.name
166
194
  end
167
- assert_raises(RuntimeError) { Task['testdata/x.obj'].invoke }
168
- assert_raises(RuntimeError) { Task['testdata/x.xyo'].invoke }
195
+ assert_exception(RuntimeError) { Task['testdata/x.obj'].invoke }
196
+ assert_exception(RuntimeError) { Task['testdata/x.xyo'].invoke }
169
197
  end
170
198
 
171
199
  def test_rule_rebuilds_obj_when_source_is_newer
@@ -196,6 +224,22 @@ class TestRules < Test::Unit::TestCase
196
224
  assert_equal [], @runs
197
225
  end
198
226
 
227
+ def test_rule_with_two_sources_builds_both_sources
228
+ task 'x.aa'
229
+ task 'x.bb'
230
+ rule '.a' => '.aa' do
231
+ @runs << "A"
232
+ end
233
+ rule '.b' => '.bb' do
234
+ @runs << "B"
235
+ end
236
+ rule ".c" => ['.a', '.b'] do
237
+ @runs << "C"
238
+ end
239
+ Task["x.c"].invoke
240
+ assert_equal ["A", "B", "C"], @runs.sort
241
+ end
242
+
199
243
  def test_second_rule_runs_when_first_rule_doesnt
200
244
  create_timed_files(OBJFILE, SRCFILE)
201
245
  delete_file(SRCFILE2)
@@ -235,7 +279,7 @@ class TestRules < Test::Unit::TestCase
235
279
 
236
280
  def test_rule_with_proc_dependent_will_trigger
237
281
  ran = false
238
- File.makedirs("testdata/src/jw")
282
+ mkdir_p("testdata/src/jw")
239
283
  create_file("testdata/src/jw/X.java")
240
284
  rule %r(classes/.*\.class) => [
241
285
  proc { |fn| fn.pathmap("%{classes,testdata/src}d/%n.java") }
@@ -252,7 +296,7 @@ class TestRules < Test::Unit::TestCase
252
296
 
253
297
  def test_proc_returning_lists_are_flattened_into_prereqs
254
298
  ran = false
255
- File.makedirs("testdata/flatten")
299
+ mkdir_p("testdata/flatten")
256
300
  create_file("testdata/flatten/a.txt")
257
301
  task 'testdata/flatten/b.data' do |t|
258
302
  ran = true
@@ -290,7 +334,7 @@ class TestRules < Test::Unit::TestCase
290
334
  rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end
291
335
  prev = letter
292
336
  end
293
- ex = assert_raises(Rake::RuleRecursionOverflowError) {
337
+ ex = assert_exception(Rake::RuleRecursionOverflowError) {
294
338
  Task["testdata/a.z"].invoke
295
339
  }
296
340
  assert_match(/a\.z => testdata\/a.y/, ex.message)
@@ -298,7 +342,7 @@ class TestRules < Test::Unit::TestCase
298
342
 
299
343
  def test_rules_with_bad_dependents_will_fail
300
344
  rule "a" => [ 1 ] do |t| puts t.name end
301
- assert_raise(RuntimeError) do Task['a'].invoke end
345
+ assert_exception(RuntimeError) do Task['a'].invoke end
302
346
  end
303
347
 
304
348
  end
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake'
5
+
6
+ ######################################################################
7
+ class TestTaskArguments < Test::Unit::TestCase
8
+ def teardown
9
+ ENV.delete('rev')
10
+ ENV.delete('VER')
11
+ end
12
+
13
+ def test_empty_arg_list_is_empty
14
+ ta = Rake::TaskArguments.new([], [])
15
+ assert_equal({}, ta.to_hash)
16
+ end
17
+
18
+ def test_multiple_values_in_args
19
+ ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three])
20
+ assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash)
21
+ end
22
+
23
+ def test_to_s
24
+ ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3])
25
+ assert_equal ta.to_hash.inspect, ta.to_s
26
+ assert_equal ta.to_hash.inspect, ta.inspect
27
+ end
28
+
29
+ def test_enumerable_behavior
30
+ ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2 ,3])
31
+ assert_equal [10, 20, 30], ta.collect { |k,v| v * 10 }.sort
32
+ end
33
+
34
+ def test_named_args
35
+ ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2])
36
+ assert_equal 1, ta.aa
37
+ assert_equal 1, ta[:aa]
38
+ assert_equal 1, ta["aa"]
39
+ assert_equal 2, ta.bb
40
+ assert_nil ta.cc
41
+ end
42
+
43
+ def test_args_knows_its_names
44
+ ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2])
45
+ assert_equal ["aa", "bb"], ta.names
46
+ end
47
+
48
+ def test_extra_names_are_nil
49
+ ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2])
50
+ assert_nil ta.cc
51
+ end
52
+
53
+ def test_args_can_reference_env_values
54
+ ta = Rake::TaskArguments.new(["aa"], [1])
55
+ ENV['rev'] = "1.2"
56
+ ENV['VER'] = "2.3"
57
+ assert_equal "1.2", ta.rev
58
+ assert_equal "2.3", ta.ver
59
+ end
60
+
61
+ def test_creating_new_argument_scopes
62
+ parent = Rake::TaskArguments.new(['p'], [1])
63
+ child = parent.new_scope(['c', 'p'])
64
+ assert_equal({:p=>1}, child.to_hash)
65
+ assert_equal 1, child.p
66
+ assert_equal 1, child["p"]
67
+ assert_equal 1, child[:p]
68
+ assert_nil child.c
69
+ end
70
+
71
+ def test_child_hides_parent_arg_names
72
+ parent = Rake::TaskArguments.new(['aa'], [1])
73
+ child = Rake::TaskArguments.new(['aa'], [2], parent)
74
+ assert_equal 2, child.aa
75
+ end
76
+
77
+ def test_default_arguments_values_can_be_merged
78
+ ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"])
79
+ ta.with_defaults({ :aa => 'default_val' })
80
+ assert_equal 'default_val', ta[:aa]
81
+ assert_equal 'original_val', ta[:bb]
82
+ end
83
+
84
+ def test_default_arguements_that_dont_match_names_are_ignored
85
+ ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"])
86
+ ta.with_defaults({ "cc" => "default_val" })
87
+ assert_nil ta[:cc]
88
+ end
89
+ end
@@ -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
  end
@@ -53,7 +56,7 @@ class TestTaskManager < Test::Unit::TestCase
53
56
  assert_equal ["fn"], @tm.tasks.collect { |t| t.name }
54
57
  end
55
58
 
56
- def testS_namespace_yields_same_namespace_as_returned
59
+ def test_namespace_yields_same_namespace_as_returned
57
60
  yielded_namespace = nil
58
61
  returned_namespace = @tm.in_namespace("x") do |ns|
59
62
  yielded_namespace = ns
@@ -68,7 +71,7 @@ class TestTaskManager < Test::Unit::TestCase
68
71
  end
69
72
 
70
73
  def test_name_lookup_with_nonexistent_task
71
- assert_raise(RuntimeError) {
74
+ assert_exception(RuntimeError) {
72
75
  t = @tm["DOES NOT EXIST"]
73
76
  }
74
77
  end
@@ -146,3 +149,25 @@ class TestTaskManager < Test::Unit::TestCase
146
149
  end
147
150
 
148
151
  end
152
+
153
+ class TestTaskManagerArgumentResolution < Test::Unit::TestCase
154
+ def test_good_arg_patterns
155
+ assert_equal [:t, [], []], task(:t)
156
+ assert_equal [:t, [], [:x]], task(:t => :x)
157
+ assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y])
158
+
159
+ assert_equal [:t, [:a, :b], []], task(:t, :a, :b)
160
+ assert_equal [:t, [], [:x]], task(:t, :needs => :x)
161
+ assert_equal [:t, [:a, :b], [:x]], task(:t, :a, :b, :needs => :x)
162
+ assert_equal [:t, [:a, :b], [:x, :y]], task(:t, :a, :b, :needs => [:x, :y])
163
+
164
+ assert_equal [:t, [:a, :b], []], task(:t, [:a, :b])
165
+ assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x)
166
+ assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y])
167
+ end
168
+
169
+ def task(*args)
170
+ tm = TaskManager.new
171
+ tm.resolve_args(args)
172
+ end
173
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake/tasklib'
5
+
6
+
7
+ class TestTaskLib < Test::Unit::TestCase
8
+ def test_paste
9
+ tl = Rake::TaskLib.new
10
+ assert_equal :ab, tl.paste(:a, :b)
11
+ end
12
+ end