rake 10.5.0 → 13.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +13 -8
  3. data/Gemfile +10 -0
  4. data/History.rdoc +2015 -288
  5. data/README.rdoc +40 -24
  6. data/Rakefile +25 -65
  7. data/bin/bundle +105 -0
  8. data/bin/console +7 -0
  9. data/bin/rake +20 -24
  10. data/bin/rdoc +29 -0
  11. data/bin/rubocop +29 -0
  12. data/bin/setup +6 -0
  13. data/doc/jamis.rb +1 -0
  14. data/doc/rake.1 +139 -124
  15. data/doc/rakefile.rdoc +2 -4
  16. data/exe/rake +27 -0
  17. data/lib/rake.rb +35 -43
  18. data/lib/rake/application.rb +124 -90
  19. data/lib/rake/backtrace.rb +3 -2
  20. data/lib/rake/clean.rb +7 -5
  21. data/lib/rake/cloneable.rb +1 -0
  22. data/lib/rake/cpu_counter.rb +10 -28
  23. data/lib/rake/default_loader.rb +1 -0
  24. data/lib/rake/dsl_definition.rb +5 -11
  25. data/lib/rake/early_time.rb +1 -0
  26. data/lib/rake/ext/core.rb +1 -0
  27. data/lib/rake/ext/string.rb +22 -21
  28. data/lib/rake/file_creation_task.rb +4 -3
  29. data/lib/rake/file_list.rb +34 -27
  30. data/lib/rake/file_task.rb +12 -4
  31. data/lib/rake/file_utils.rb +38 -32
  32. data/lib/rake/file_utils_ext.rb +8 -18
  33. data/lib/rake/invocation_chain.rb +1 -0
  34. data/lib/rake/invocation_exception_mixin.rb +1 -0
  35. data/lib/rake/late_time.rb +2 -1
  36. data/lib/rake/linked_list.rb +24 -15
  37. data/lib/rake/loaders/makefile.rb +5 -4
  38. data/lib/rake/multi_task.rb +2 -1
  39. data/lib/rake/name_space.rb +1 -1
  40. data/lib/rake/packagetask.rb +40 -17
  41. data/lib/rake/phony.rb +2 -1
  42. data/lib/rake/private_reader.rb +1 -0
  43. data/lib/rake/promise.rb +13 -12
  44. data/lib/rake/pseudo_status.rb +1 -0
  45. data/lib/rake/rake_module.rb +30 -1
  46. data/lib/rake/rake_test_loader.rb +18 -13
  47. data/lib/rake/rule_recursion_overflow_error.rb +2 -2
  48. data/lib/rake/scope.rb +3 -2
  49. data/lib/rake/task.rb +82 -31
  50. data/lib/rake/task_argument_error.rb +1 -0
  51. data/lib/rake/task_arguments.rb +15 -4
  52. data/lib/rake/task_manager.rb +54 -30
  53. data/lib/rake/tasklib.rb +2 -14
  54. data/lib/rake/testtask.rb +37 -61
  55. data/lib/rake/thread_history_display.rb +4 -3
  56. data/lib/rake/thread_pool.rb +16 -17
  57. data/lib/rake/trace_output.rb +2 -1
  58. data/lib/rake/version.rb +4 -1
  59. data/lib/rake/win32.rb +10 -15
  60. data/rake.gemspec +43 -0
  61. metadata +32 -219
  62. data/.autotest +0 -7
  63. data/.rubocop.yml +0 -27
  64. data/.togglerc +0 -7
  65. data/Manifest.txt +0 -166
  66. data/doc/release_notes/rake-0.4.14.rdoc +0 -23
  67. data/doc/release_notes/rake-0.4.15.rdoc +0 -35
  68. data/doc/release_notes/rake-0.5.0.rdoc +0 -53
  69. data/doc/release_notes/rake-0.5.3.rdoc +0 -78
  70. data/doc/release_notes/rake-0.5.4.rdoc +0 -46
  71. data/doc/release_notes/rake-0.6.0.rdoc +0 -141
  72. data/doc/release_notes/rake-0.7.0.rdoc +0 -119
  73. data/doc/release_notes/rake-0.7.1.rdoc +0 -59
  74. data/doc/release_notes/rake-0.7.2.rdoc +0 -121
  75. data/doc/release_notes/rake-0.7.3.rdoc +0 -47
  76. data/doc/release_notes/rake-0.8.0.rdoc +0 -114
  77. data/doc/release_notes/rake-0.8.2.rdoc +0 -165
  78. data/doc/release_notes/rake-0.8.3.rdoc +0 -112
  79. data/doc/release_notes/rake-0.8.4.rdoc +0 -147
  80. data/doc/release_notes/rake-0.8.5.rdoc +0 -53
  81. data/doc/release_notes/rake-0.8.6.rdoc +0 -37
  82. data/doc/release_notes/rake-0.8.7.rdoc +0 -55
  83. data/doc/release_notes/rake-0.9.0.rdoc +0 -112
  84. data/doc/release_notes/rake-0.9.1.rdoc +0 -52
  85. data/doc/release_notes/rake-0.9.2.2.rdoc +0 -55
  86. data/doc/release_notes/rake-0.9.2.rdoc +0 -49
  87. data/doc/release_notes/rake-0.9.3.rdoc +0 -102
  88. data/doc/release_notes/rake-0.9.4.rdoc +0 -60
  89. data/doc/release_notes/rake-0.9.5.rdoc +0 -55
  90. data/doc/release_notes/rake-0.9.6.rdoc +0 -64
  91. data/doc/release_notes/rake-10.0.0.rdoc +0 -178
  92. data/doc/release_notes/rake-10.0.1.rdoc +0 -58
  93. data/doc/release_notes/rake-10.0.2.rdoc +0 -53
  94. data/doc/release_notes/rake-10.0.3.rdoc +0 -191
  95. data/doc/release_notes/rake-10.1.0.rdoc +0 -61
  96. data/lib/rake/alt_system.rb +0 -110
  97. data/lib/rake/contrib/.document +0 -1
  98. data/lib/rake/contrib/compositepublisher.rb +0 -21
  99. data/lib/rake/contrib/ftptools.rb +0 -137
  100. data/lib/rake/contrib/publisher.rb +0 -81
  101. data/lib/rake/contrib/rubyforgepublisher.rb +0 -18
  102. data/lib/rake/contrib/sshpublisher.rb +0 -61
  103. data/lib/rake/contrib/sys.rb +0 -4
  104. data/lib/rake/ext/module.rb +0 -2
  105. data/lib/rake/ext/pathname.rb +0 -25
  106. data/lib/rake/ext/time.rb +0 -18
  107. data/lib/rake/gempackagetask.rb +0 -4
  108. data/lib/rake/pathmap.rb +0 -3
  109. data/lib/rake/rdoctask.rb +0 -4
  110. data/lib/rake/ruby182_test_unit_fix.rb +0 -29
  111. data/lib/rake/runtest.rb +0 -27
  112. data/rakelib/publish.rake +0 -20
  113. data/rakelib/test_times.rake +0 -25
  114. data/test/file_creation.rb +0 -34
  115. data/test/helper.rb +0 -129
  116. data/test/support/rakefile_definitions.rb +0 -478
  117. data/test/support/ruby_runner.rb +0 -34
  118. data/test/test_private_reader.rb +0 -42
  119. data/test/test_rake.rb +0 -40
  120. data/test/test_rake_application.rb +0 -643
  121. data/test/test_rake_application_options.rb +0 -468
  122. data/test/test_rake_backtrace.rb +0 -119
  123. data/test/test_rake_clean.rb +0 -61
  124. data/test/test_rake_cpu_counter.rb +0 -68
  125. data/test/test_rake_definitions.rb +0 -84
  126. data/test/test_rake_directory_task.rb +0 -76
  127. data/test/test_rake_dsl.rb +0 -40
  128. data/test/test_rake_early_time.rb +0 -31
  129. data/test/test_rake_extension.rb +0 -59
  130. data/test/test_rake_file_creation_task.rb +0 -56
  131. data/test/test_rake_file_list.rb +0 -670
  132. data/test/test_rake_file_list_path_map.rb +0 -8
  133. data/test/test_rake_file_task.rb +0 -197
  134. data/test/test_rake_file_utils.rb +0 -314
  135. data/test/test_rake_ftp_file.rb +0 -74
  136. data/test/test_rake_functional.rb +0 -482
  137. data/test/test_rake_invocation_chain.rb +0 -64
  138. data/test/test_rake_late_time.rb +0 -18
  139. data/test/test_rake_linked_list.rb +0 -84
  140. data/test/test_rake_makefile_loader.rb +0 -46
  141. data/test/test_rake_multi_task.rb +0 -64
  142. data/test/test_rake_name_space.rb +0 -57
  143. data/test/test_rake_package_task.rb +0 -79
  144. data/test/test_rake_path_map.rb +0 -168
  145. data/test/test_rake_path_map_explode.rb +0 -34
  146. data/test/test_rake_path_map_partial.rb +0 -18
  147. data/test/test_rake_pathname_extensions.rb +0 -15
  148. data/test/test_rake_pseudo_status.rb +0 -21
  149. data/test/test_rake_rake_test_loader.rb +0 -20
  150. data/test/test_rake_reduce_compat.rb +0 -26
  151. data/test/test_rake_require.rb +0 -40
  152. data/test/test_rake_rules.rb +0 -388
  153. data/test/test_rake_scope.rb +0 -44
  154. data/test/test_rake_task.rb +0 -393
  155. data/test/test_rake_task_argument_parsing.rb +0 -119
  156. data/test/test_rake_task_arguments.rb +0 -127
  157. data/test/test_rake_task_lib.rb +0 -9
  158. data/test/test_rake_task_manager.rb +0 -178
  159. data/test/test_rake_task_manager_argument_resolution.rb +0 -19
  160. data/test/test_rake_task_with_arguments.rb +0 -172
  161. data/test/test_rake_test_task.rb +0 -146
  162. data/test/test_rake_thread_pool.rb +0 -145
  163. data/test/test_rake_top_level_functions.rb +0 -71
  164. data/test/test_rake_win32.rb +0 -72
  165. data/test/test_thread_history_display.rb +0 -101
  166. data/test/test_trace_output.rb +0 -52
@@ -1,127 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- ######################################################################
4
- class TestRakeTaskArguments < Rake::TestCase
5
- def teardown
6
- ENV.delete('rev')
7
- ENV.delete('VER')
8
-
9
- super
10
- end
11
-
12
- def test_empty_arg_list_is_empty
13
- ta = Rake::TaskArguments.new([], [])
14
- assert_equal({}, ta.to_hash)
15
- end
16
-
17
- def test_multiple_values_in_args
18
- ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three])
19
- assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash)
20
- end
21
-
22
- def test_has_key
23
- ta = Rake::TaskArguments.new([:a], [:one])
24
- assert(ta.has_key?(:a))
25
- refute(ta.has_key?(:b))
26
- end
27
-
28
- def test_to_s
29
- ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3])
30
- assert_equal ta.to_hash.inspect, ta.to_s
31
- assert_equal ta.to_hash.inspect, ta.inspect
32
- end
33
-
34
- def test_enumerable_behavior
35
- ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3])
36
- assert_equal [10, 20, 30], ta.map { |k, v| v * 10 }.sort
37
- end
38
-
39
- def test_named_args
40
- ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2])
41
- assert_equal 1, ta.aa
42
- assert_equal 1, ta[:aa]
43
- assert_equal 1, ta["aa"]
44
- assert_equal 2, ta.bb
45
- assert_nil ta.cc
46
- end
47
-
48
- def test_args_knows_its_names
49
- ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2])
50
- assert_equal ["aa", "bb"], ta.names
51
- end
52
-
53
- def test_extra_names_are_nil
54
- ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2])
55
- assert_nil ta.cc
56
- end
57
-
58
- def test_args_do_not_reference_env_values
59
- ta = Rake::TaskArguments.new(["aa"], [1])
60
- ENV['rev'] = "1.2"
61
- ENV['VER'] = "2.3"
62
- assert_nil ta.rev
63
- assert_nil ta.ver
64
- end
65
-
66
- def test_creating_new_argument_scopes
67
- parent = Rake::TaskArguments.new(['p'], [1])
68
- child = parent.new_scope(['c', 'p'])
69
- assert_equal({:p=>1}, child.to_hash)
70
- assert_equal 1, child.p
71
- assert_equal 1, child["p"]
72
- assert_equal 1, child[:p]
73
- assert_nil child.c
74
- end
75
-
76
- def test_child_hides_parent_arg_names
77
- parent = Rake::TaskArguments.new(['aa'], [1])
78
- child = Rake::TaskArguments.new(['aa'], [2], parent)
79
- assert_equal 2, child.aa
80
- end
81
-
82
- def test_default_arguments_values_can_be_merged
83
- ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"])
84
- ta.with_defaults({ :aa => 'default_val' })
85
- assert_equal 'default_val', ta[:aa]
86
- assert_equal 'original_val', ta[:bb]
87
- end
88
-
89
- def test_default_arguments_that_dont_match_names_are_ignored
90
- ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"])
91
- ta.with_defaults({ "cc" => "default_val" })
92
- assert_nil ta[:cc]
93
- end
94
-
95
- def test_all_and_extra_arguments_without_named_arguments
96
- app = Rake::Application.new
97
- _, args = app.parse_task_string("task[1,two,more]")
98
- ta = Rake::TaskArguments.new([], args)
99
- assert_equal [], ta.names
100
- assert_equal ['1', 'two', 'more'], ta.to_a
101
- assert_equal ['1', 'two', 'more'], ta.extras
102
- end
103
-
104
- def test_all_and_extra_arguments_with_named_arguments
105
- app = Rake::Application.new
106
- _, args = app.parse_task_string("task[1,two,more,still more]")
107
- ta = Rake::TaskArguments.new([:first, :second], args)
108
- assert_equal [:first, :second], ta.names
109
- assert_equal "1", ta[:first]
110
- assert_equal "two", ta[:second]
111
- assert_equal ['1', 'two', 'more', 'still more'], ta.to_a
112
- assert_equal ['more', 'still more'], ta.extras
113
- end
114
-
115
- def test_extra_args_with_less_than_named_arguments
116
- app = Rake::Application.new
117
- _, args = app.parse_task_string("task[1,two]")
118
- ta = Rake::TaskArguments.new([:first, :second, :third], args)
119
- assert_equal [:first, :second, :third], ta.names
120
- assert_equal "1", ta[:first]
121
- assert_equal "two", ta[:second]
122
- assert_equal nil, ta[:third]
123
- assert_equal ['1', 'two'], ta.to_a
124
- assert_equal [], ta.extras
125
- end
126
-
127
- end
@@ -1,9 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'rake/tasklib'
3
-
4
- class TestRakeTaskLib < Rake::TestCase
5
- def test_paste
6
- tl = Rake::TaskLib.new
7
- assert_equal :ab, tl.paste(:a, :b)
8
- end
9
- end
@@ -1,178 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeTaskManager < Rake::TestCase
4
-
5
- def setup
6
- super
7
-
8
- @tm = Rake::TestCase::TaskManager.new
9
- end
10
-
11
- def test_create_task_manager
12
- refute_nil @tm
13
- assert_equal [], @tm.tasks
14
- end
15
-
16
- def test_define_task
17
- t = @tm.define_task(Rake::Task, :t)
18
- assert_equal "t", t.name
19
- assert_equal @tm, t.application
20
- end
21
-
22
- def test_index
23
- e = assert_raises RuntimeError do
24
- @tm['bad']
25
- end
26
-
27
- assert_equal "Don't know how to build task 'bad' (see --tasks)", e.message
28
- end
29
-
30
- def test_name_lookup
31
- t = @tm.define_task(Rake::Task, :t)
32
- assert_equal t, @tm[:t]
33
- end
34
-
35
- def test_namespace_task_create
36
- @tm.in_namespace("x") do
37
- t = @tm.define_task(Rake::Task, :t)
38
- assert_equal "x:t", t.name
39
- end
40
- assert_equal ["x:t"], @tm.tasks.map { |t| t.name }
41
- end
42
-
43
- def test_define_namespaced_task
44
- t = @tm.define_task(Rake::Task, 'n:a:m:e:t')
45
- assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope
46
- assert_equal "n:a:m:e:t", t.name
47
- assert_equal @tm, t.application
48
- end
49
-
50
- def test_define_namespace_in_namespace
51
- t = nil
52
- @tm.in_namespace("n") do
53
- t = @tm.define_task(Rake::Task, 'a:m:e:t')
54
- end
55
- assert_equal Rake::Scope.make("e", "m", "a", "n"), t.scope
56
- assert_equal "n:a:m:e:t", t.name
57
- assert_equal @tm, t.application
58
- end
59
-
60
- def test_anonymous_namespace
61
- anon_ns = @tm.in_namespace(nil) do
62
- t = @tm.define_task(Rake::Task, :t)
63
- assert_equal "_anon_1:t", t.name
64
- end
65
- task = anon_ns[:t]
66
- assert_equal "_anon_1:t", task.name
67
- end
68
-
69
- def test_create_filetask_in_namespace
70
- @tm.in_namespace("x") do
71
- t = @tm.define_task(Rake::FileTask, "fn")
72
- assert_equal "fn", t.name
73
- end
74
-
75
- assert_equal ["fn"], @tm.tasks.map { |t| t.name }
76
- end
77
-
78
- def test_namespace_yields_same_namespace_as_returned
79
- yielded_namespace = nil
80
- returned_namespace = @tm.in_namespace("x") do |ns|
81
- yielded_namespace = ns
82
- end
83
- assert_equal returned_namespace, yielded_namespace
84
- end
85
-
86
- def test_name_lookup_with_implicit_file_tasks
87
- FileUtils.touch 'README.rdoc'
88
-
89
- t = @tm["README.rdoc"]
90
-
91
- assert_equal "README.rdoc", t.name
92
- assert Rake::FileTask === t
93
- end
94
-
95
- def test_name_lookup_with_nonexistent_task
96
- assert_raises(RuntimeError) {
97
- @tm["DOES NOT EXIST"]
98
- }
99
- end
100
-
101
- def test_name_lookup_in_multiple_scopes
102
- aa = nil
103
- bb = nil
104
- xx = @tm.define_task(Rake::Task, :xx)
105
- top_z = @tm.define_task(Rake::Task, :z)
106
- @tm.in_namespace("a") do
107
- aa = @tm.define_task(Rake::Task, :aa)
108
- mid_z = @tm.define_task(Rake::Task, :z)
109
- ns_d = @tm.define_task(Rake::Task, "n:t")
110
- @tm.in_namespace("b") do
111
- bb = @tm.define_task(Rake::Task, :bb)
112
- bot_z = @tm.define_task(Rake::Task, :z)
113
-
114
- assert_equal Rake::Scope.make("b", "a"), @tm.current_scope
115
-
116
- assert_equal bb, @tm["a:b:bb"]
117
- assert_equal aa, @tm["a:aa"]
118
- assert_equal xx, @tm["xx"]
119
- assert_equal bot_z, @tm["z"]
120
- assert_equal mid_z, @tm["^z"]
121
- assert_equal top_z, @tm["^^z"]
122
- assert_equal top_z, @tm["^^^z"] # Over the top
123
- assert_equal top_z, @tm["rake:z"]
124
- end
125
-
126
- assert_equal Rake::Scope.make("a"), @tm.current_scope
127
-
128
- assert_equal bb, @tm["a:b:bb"]
129
- assert_equal aa, @tm["a:aa"]
130
- assert_equal xx, @tm["xx"]
131
- assert_equal bb, @tm["b:bb"]
132
- assert_equal aa, @tm["aa"]
133
- assert_equal mid_z, @tm["z"]
134
- assert_equal top_z, @tm["^z"]
135
- assert_equal top_z, @tm["^^z"] # Over the top
136
- assert_equal top_z, @tm["rake:z"]
137
- assert_equal ns_d, @tm["n:t"]
138
- assert_equal ns_d, @tm["a:n:t"]
139
- end
140
-
141
- assert_equal Rake::Scope.make, @tm.current_scope
142
-
143
- assert_equal Rake::Scope.make, xx.scope
144
- assert_equal Rake::Scope.make('a'), aa.scope
145
- assert_equal Rake::Scope.make('b', 'a'), bb.scope
146
- end
147
-
148
- def test_lookup_with_explicit_scopes
149
- t1, t2, t3, s = (0...4).map { nil }
150
- t1 = @tm.define_task(Rake::Task, :t)
151
- @tm.in_namespace("a") do
152
- t2 = @tm.define_task(Rake::Task, :t)
153
- s = @tm.define_task(Rake::Task, :s)
154
- @tm.in_namespace("b") do
155
- t3 = @tm.define_task(Rake::Task, :t)
156
- end
157
- end
158
- assert_equal t1, @tm[:t, Rake::Scope.make]
159
- assert_equal t2, @tm[:t, Rake::Scope.make("a")]
160
- assert_equal t3, @tm[:t, Rake::Scope.make("b", "a")]
161
- assert_equal s, @tm[:s, Rake::Scope.make("b", "a")]
162
- assert_equal s, @tm[:s, Rake::Scope.make("a")]
163
- end
164
-
165
- def test_correctly_scoped_prerequisites_are_invoked
166
- values = []
167
- @tm = Rake::Application.new
168
- @tm.define_task(Rake::Task, :z) do values << "top z" end
169
- @tm.in_namespace("a") do
170
- @tm.define_task(Rake::Task, :z) do values << "next z" end
171
- @tm.define_task(Rake::Task, :x => :z)
172
- end
173
-
174
- @tm["a:x"].invoke
175
- assert_equal ["next z"], values
176
- end
177
-
178
- end
@@ -1,19 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeTaskManagerArgumentResolution < Rake::TestCase
4
-
5
- def test_good_arg_patterns
6
- assert_equal [:t, [], []], task(:t)
7
- assert_equal [:t, [], [:x]], task(:t => :x)
8
- assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y])
9
-
10
- assert_equal [:t, [:a, :b], []], task(:t, [:a, :b])
11
- assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x)
12
- assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y])
13
- end
14
-
15
- def task(*args)
16
- tm = Rake::TestCase::TaskManager.new
17
- tm.resolve_args(args)
18
- end
19
- end
@@ -1,172 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
-
3
- class TestRakeTaskWithArguments < Rake::TestCase
4
- include Rake
5
-
6
- def setup
7
- super
8
-
9
- Task.clear
10
- Rake::TaskManager.record_task_metadata = true
11
- end
12
-
13
- def teardown
14
- Rake::TaskManager.record_task_metadata = false
15
- Rake.application.thread_pool.join
16
-
17
- super
18
- end
19
-
20
- def test_no_args_given
21
- t = task :t
22
- assert_equal [], t.arg_names
23
- end
24
-
25
- def test_args_given
26
- t = task :t, :a, :b
27
- assert_equal [:a, :b], t.arg_names
28
- end
29
-
30
- def test_name_and_needs
31
- t = task(:t => [:pre])
32
- assert_equal "t", t.name
33
- assert_equal [], t.arg_names
34
- assert_equal ["pre"], t.prerequisites
35
- end
36
-
37
- def test_name_args_and_prereqs
38
- t = task(:t, [:x, :y] => [:pre])
39
- assert_equal "t", t.name
40
- assert_equal [:x, :y], t.arg_names
41
- assert_equal ["pre"], t.prerequisites
42
- end
43
-
44
- def test_arg_list_is_empty_if_no_args_given
45
- t = task(:t) { |tt, args| assert_equal({}, args.to_hash) }
46
- t.invoke(1, 2, 3)
47
- end
48
-
49
- def test_tasks_can_access_arguments_as_hash
50
- t = task :t, :a, :b, :c do |tt, args|
51
- assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash)
52
- assert_equal 1, args[:a]
53
- assert_equal 2, args[:b]
54
- assert_equal 3, args[:c]
55
- assert_equal 1, args.a
56
- assert_equal 2, args.b
57
- assert_equal 3, args.c
58
- end
59
- t.invoke(1, 2, 3)
60
- end
61
-
62
- def test_actions_of_various_arity_are_ok_with_args
63
- notes = []
64
- t = task(:t, :x) do
65
- notes << :a
66
- end
67
- t.enhance do | |
68
- notes << :b
69
- end
70
- t.enhance do |task|
71
- notes << :c
72
- assert_kind_of Task, task
73
- end
74
- t.enhance do |t2, args|
75
- notes << :d
76
- assert_equal t, t2
77
- assert_equal({:x => 1}, args.to_hash)
78
- end
79
- t.invoke(1)
80
- assert_equal [:a, :b, :c, :d], notes
81
- end
82
-
83
- def test_arguments_are_passed_to_block
84
- t = task(:t, :a, :b) { |tt, args|
85
- assert_equal({ :a => 1, :b => 2 }, args.to_hash)
86
- }
87
- t.invoke(1, 2)
88
- end
89
-
90
- def test_extra_parameters_are_ignored
91
- t = task(:t, :a) { |tt, args|
92
- assert_equal 1, args.a
93
- assert_nil args.b
94
- }
95
- t.invoke(1, 2)
96
- end
97
-
98
- def test_arguments_are_passed_to_all_blocks
99
- counter = 0
100
- t = task :t, :a
101
- task :t do |tt, args|
102
- assert_equal 1, args.a
103
- counter += 1
104
- end
105
- task :t do |tt, args|
106
- assert_equal 1, args.a
107
- counter += 1
108
- end
109
- t.invoke(1)
110
- assert_equal 2, counter
111
- end
112
-
113
- def test_block_with_no_parameters_is_ok
114
- t = task(:t) { }
115
- t.invoke(1, 2)
116
- end
117
-
118
- def test_name_with_args
119
- desc "T"
120
- t = task(:tt, :a, :b)
121
- assert_equal "tt", t.name
122
- assert_equal "T", t.comment
123
- assert_equal "[a,b]", t.arg_description
124
- assert_equal "tt[a,b]", t.name_with_args
125
- assert_equal [:a, :b], t.arg_names
126
- end
127
-
128
- def test_named_args_are_passed_to_prereqs
129
- value = nil
130
- task(:pre, :rev) { |t, args| value = args.rev }
131
- t = task(:t, [:name, :rev] => [:pre])
132
- t.invoke("bill", "1.2")
133
- assert_equal "1.2", value
134
- end
135
-
136
- def test_args_not_passed_if_no_prereq_names_on_task
137
- task(:pre) { |t, args|
138
- assert_equal({}, args.to_hash)
139
- assert_equal "bill", args.name
140
- }
141
- t = task(:t, [:name, :rev] => [:pre])
142
- t.invoke("bill", "1.2")
143
- end
144
-
145
- def test_args_not_passed_if_no_prereq_names_on_multitask
146
- task(:pre) { |t, args|
147
- assert_equal({}, args.to_hash)
148
- assert_equal "bill", args.name
149
- }
150
- t = multitask(:t, [:name, :rev] => [:pre])
151
- t.invoke("bill", "1.2")
152
- end
153
-
154
- def test_args_not_passed_if_no_arg_names
155
- task(:pre, :rev) { |t, args|
156
- assert_equal({}, args.to_hash)
157
- }
158
- t = task(:t => [:pre])
159
- t.invoke("bill", "1.2")
160
- end
161
-
162
- def test_values_at
163
- t = task(:pre, [:a, :b, :c]) { |task, args|
164
- a, b, c = args.values_at(:a, :b, :c)
165
- assert_equal %w[1 2 3], [a, b, c]
166
- }
167
-
168
- t.invoke(*%w[1 2 3])
169
-
170
- # HACK no assertions
171
- end
172
- end