necktie 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. data/README.rdoc +174 -0
  2. data/bin/necktie +2 -1
  3. data/lib/necktie/files.rb +29 -0
  4. data/lib/necktie/rake.rb +127 -0
  5. data/lib/necktie/services.rb +11 -7
  6. data/lib/necktie.rb +4 -54
  7. data/necktie.gemspec +3 -3
  8. data/vendor/rake/CHANGES +477 -0
  9. data/vendor/rake/MIT-LICENSE +21 -0
  10. data/vendor/rake/README.rdoc +194 -0
  11. data/vendor/rake/Rakefile +421 -0
  12. data/vendor/rake/TODO +20 -0
  13. data/vendor/rake/bin/rake +31 -0
  14. data/vendor/rake/doc/command_line_usage.rdoc +102 -0
  15. data/vendor/rake/doc/example/Rakefile1 +38 -0
  16. data/vendor/rake/doc/example/Rakefile2 +35 -0
  17. data/vendor/rake/doc/example/a.c +6 -0
  18. data/vendor/rake/doc/example/b.c +6 -0
  19. data/vendor/rake/doc/example/main.c +11 -0
  20. data/vendor/rake/doc/glossary.rdoc +51 -0
  21. data/vendor/rake/doc/jamis.rb +591 -0
  22. data/vendor/rake/doc/proto_rake.rdoc +127 -0
  23. data/vendor/rake/doc/rake.1.gz +0 -0
  24. data/vendor/rake/doc/rakefile.rdoc +566 -0
  25. data/vendor/rake/doc/rational.rdoc +151 -0
  26. data/vendor/rake/doc/release_notes/rake-0.4.14.rdoc +23 -0
  27. data/vendor/rake/doc/release_notes/rake-0.4.15.rdoc +35 -0
  28. data/vendor/rake/doc/release_notes/rake-0.5.0.rdoc +53 -0
  29. data/vendor/rake/doc/release_notes/rake-0.5.3.rdoc +78 -0
  30. data/vendor/rake/doc/release_notes/rake-0.5.4.rdoc +46 -0
  31. data/vendor/rake/doc/release_notes/rake-0.6.0.rdoc +141 -0
  32. data/vendor/rake/doc/release_notes/rake-0.7.0.rdoc +119 -0
  33. data/vendor/rake/doc/release_notes/rake-0.7.1.rdoc +59 -0
  34. data/vendor/rake/doc/release_notes/rake-0.7.2.rdoc +121 -0
  35. data/vendor/rake/doc/release_notes/rake-0.7.3.rdoc +47 -0
  36. data/vendor/rake/doc/release_notes/rake-0.8.0.rdoc +114 -0
  37. data/vendor/rake/doc/release_notes/rake-0.8.2.rdoc +165 -0
  38. data/vendor/rake/doc/release_notes/rake-0.8.3.rdoc +112 -0
  39. data/vendor/rake/doc/release_notes/rake-0.8.4.rdoc +147 -0
  40. data/vendor/rake/doc/release_notes/rake-0.8.5.rdoc +53 -0
  41. data/vendor/rake/doc/release_notes/rake-0.8.6.rdoc +55 -0
  42. data/vendor/rake/doc/release_notes/rake-0.8.7.rdoc +55 -0
  43. data/vendor/rake/install.rb +88 -0
  44. data/vendor/rake/lib/rake/alt_system.rb +108 -0
  45. data/vendor/rake/lib/rake/application.rb +579 -0
  46. data/vendor/rake/lib/rake/classic_namespace.rb +9 -0
  47. data/vendor/rake/lib/rake/clean.rb +35 -0
  48. data/vendor/rake/lib/rake/cloneable.rb +25 -0
  49. data/vendor/rake/lib/rake/contrib/compositepublisher.rb +24 -0
  50. data/vendor/rake/lib/rake/contrib/ftptools.rb +153 -0
  51. data/vendor/rake/lib/rake/contrib/publisher.rb +75 -0
  52. data/vendor/rake/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  53. data/vendor/rake/lib/rake/contrib/sshpublisher.rb +47 -0
  54. data/vendor/rake/lib/rake/contrib/sys.rb +209 -0
  55. data/vendor/rake/lib/rake/default_loader.rb +10 -0
  56. data/vendor/rake/lib/rake/dsl.rb +136 -0
  57. data/vendor/rake/lib/rake/early_time.rb +18 -0
  58. data/vendor/rake/lib/rake/environment.rb +40 -0
  59. data/vendor/rake/lib/rake/ext/module.rb +60 -0
  60. data/vendor/rake/lib/rake/ext/string.rb +165 -0
  61. data/vendor/rake/lib/rake/ext/time.rb +14 -0
  62. data/vendor/rake/lib/rake/file_creation_task.rb +24 -0
  63. data/vendor/rake/lib/rake/file_list.rb +395 -0
  64. data/vendor/rake/lib/rake/file_task.rb +47 -0
  65. data/vendor/rake/lib/rake/file_utils.rb +108 -0
  66. data/vendor/rake/lib/rake/gempackagetask.rb +97 -0
  67. data/vendor/rake/lib/rake/invocation_chain.rb +51 -0
  68. data/vendor/rake/lib/rake/invocation_exception_mixin.rb +16 -0
  69. data/vendor/rake/lib/rake/lib/project.rake +24 -0
  70. data/vendor/rake/lib/rake/loaders/makefile.rb +44 -0
  71. data/vendor/rake/lib/rake/multi_task.rb +16 -0
  72. data/vendor/rake/lib/rake/name_space.rb +25 -0
  73. data/vendor/rake/lib/rake/packagetask.rb +184 -0
  74. data/vendor/rake/lib/rake/psuedo_status.rb +24 -0
  75. data/vendor/rake/lib/rake/rake_file_utils.rb +133 -0
  76. data/vendor/rake/lib/rake/rake_module.rb +25 -0
  77. data/vendor/rake/lib/rake/rake_test_loader.rb +15 -0
  78. data/vendor/rake/lib/rake/rdoctask.rb +209 -0
  79. data/vendor/rake/lib/rake/ruby182_test_unit_fix.rb +25 -0
  80. data/vendor/rake/lib/rake/rule_recursion_overflow_error.rb +20 -0
  81. data/vendor/rake/lib/rake/runtest.rb +23 -0
  82. data/vendor/rake/lib/rake/task.rb +318 -0
  83. data/vendor/rake/lib/rake/task_argument_error.rb +7 -0
  84. data/vendor/rake/lib/rake/task_arguments.rb +78 -0
  85. data/vendor/rake/lib/rake/task_manager.rb +328 -0
  86. data/vendor/rake/lib/rake/tasklib.rb +24 -0
  87. data/vendor/rake/lib/rake/testtask.rb +175 -0
  88. data/vendor/rake/lib/rake/win32.rb +55 -0
  89. data/vendor/rake/lib/rake.rb +72 -0
  90. data/vendor/rake/rake.blurb +19 -0
  91. data/vendor/rake/rake.gemspec +214 -0
  92. data/vendor/rake/rakelib/extra.rake +8 -0
  93. data/vendor/rake/rakelib/publish.rake +22 -0
  94. data/vendor/rake/rakelib/rbx.rake +82 -0
  95. data/vendor/rake/rakelib/ruby19.rake +88 -0
  96. data/vendor/rake/rakelib/tags.rake +18 -0
  97. data/vendor/rake/test/capture_stdout.rb +26 -0
  98. data/vendor/rake/test/check_expansion.rb +5 -0
  99. data/vendor/rake/test/check_no_expansion.rb +5 -0
  100. data/vendor/rake/test/contrib/test_sys.rb +47 -0
  101. data/vendor/rake/test/data/chains/Rakefile +15 -0
  102. data/vendor/rake/test/data/comments/Rakefile +18 -0
  103. data/vendor/rake/test/data/default/Rakefile +19 -0
  104. data/vendor/rake/test/data/dryrun/Rakefile +22 -0
  105. data/vendor/rake/test/data/file_creation_task/Rakefile +33 -0
  106. data/vendor/rake/test/data/imports/Rakefile +19 -0
  107. data/vendor/rake/test/data/imports/deps.mf +1 -0
  108. data/vendor/rake/test/data/multidesc/Rakefile +17 -0
  109. data/vendor/rake/test/data/namespace/Rakefile +66 -0
  110. data/vendor/rake/test/data/nosearch/dummy +1 -0
  111. data/vendor/rake/test/data/rakelib/test1.rb +5 -0
  112. data/vendor/rake/test/data/rakelib/test2.rake +3 -0
  113. data/vendor/rake/test/data/rbext/rakefile.rb +3 -0
  114. data/vendor/rake/test/data/sample.mf +14 -0
  115. data/vendor/rake/test/data/statusreturn/Rakefile +8 -0
  116. data/vendor/rake/test/data/sys/sys1.rake +3 -0
  117. data/vendor/rake/test/data/unittest/Rakefile +1 -0
  118. data/vendor/rake/test/data/unittest/subdir/README +0 -0
  119. data/vendor/rake/test/data/verbose/Rakefile +34 -0
  120. data/vendor/rake/test/filecreation.rb +32 -0
  121. data/vendor/rake/test/functional/functional_test.rb +15 -0
  122. data/vendor/rake/test/functional/session_based_tests.rb +442 -0
  123. data/vendor/rake/test/in_environment.rb +32 -0
  124. data/vendor/rake/test/lib/application_test.rb +769 -0
  125. data/vendor/rake/test/lib/clean_test.rb +15 -0
  126. data/vendor/rake/test/lib/definitions_test.rb +85 -0
  127. data/vendor/rake/test/lib/dsl_test.rb +41 -0
  128. data/vendor/rake/test/lib/earlytime_test.rb +35 -0
  129. data/vendor/rake/test/lib/environment_test.rb +18 -0
  130. data/vendor/rake/test/lib/extension_test.rb +63 -0
  131. data/vendor/rake/test/lib/file_creation_task_test.rb +62 -0
  132. data/vendor/rake/test/lib/file_task_test.rb +143 -0
  133. data/vendor/rake/test/lib/filelist_test.rb +623 -0
  134. data/vendor/rake/test/lib/fileutils_test.rb +251 -0
  135. data/vendor/rake/test/lib/ftp_test.rb +59 -0
  136. data/vendor/rake/test/lib/invocation_chain_test.rb +81 -0
  137. data/vendor/rake/test/lib/makefile_loader_test.rb +26 -0
  138. data/vendor/rake/test/lib/multitask_test.rb +53 -0
  139. data/vendor/rake/test/lib/namespace_test.rb +55 -0
  140. data/vendor/rake/test/lib/package_task_test.rb +118 -0
  141. data/vendor/rake/test/lib/pathmap_test.rb +210 -0
  142. data/vendor/rake/test/lib/pseudo_status_test.rb +26 -0
  143. data/vendor/rake/test/lib/rake_test.rb +41 -0
  144. data/vendor/rake/test/lib/rdoc_task_test.rb +88 -0
  145. data/vendor/rake/test/lib/require_test.rb +35 -0
  146. data/vendor/rake/test/lib/rules_test.rb +349 -0
  147. data/vendor/rake/test/lib/task_arguments_test.rb +89 -0
  148. data/vendor/rake/test/lib/task_manager_test.rb +173 -0
  149. data/vendor/rake/test/lib/task_test.rb +376 -0
  150. data/vendor/rake/test/lib/tasklib_test.rb +12 -0
  151. data/vendor/rake/test/lib/test_task_test.rb +77 -0
  152. data/vendor/rake/test/lib/testtask_test.rb +49 -0
  153. data/vendor/rake/test/lib/top_level_functions_test.rb +86 -0
  154. data/vendor/rake/test/lib/win32_test.rb +72 -0
  155. data/vendor/rake/test/rake_test_setup.rb +24 -0
  156. data/vendor/rake/test/reqfile.rb +3 -0
  157. data/vendor/rake/test/reqfile2.rb +3 -0
  158. data/vendor/rake/test/reqfile3.rake +3 -0
  159. data/vendor/rake/test/shellcommand.rb +3 -0
  160. data/vendor/rake/test/test_helper.rb +13 -0
  161. metadata +212 -56
  162. /data/{rush → vendor/rush}/README.rdoc +0 -0
  163. /data/{rush → vendor/rush}/Rakefile +0 -0
  164. /data/{rush → vendor/rush}/VERSION +0 -0
  165. /data/{rush → vendor/rush}/bin/rush +0 -0
  166. /data/{rush → vendor/rush}/bin/rushd +0 -0
  167. /data/{rush → vendor/rush}/lib/rush/access.rb +0 -0
  168. /data/{rush → vendor/rush}/lib/rush/array_ext.rb +0 -0
  169. /data/{rush → vendor/rush}/lib/rush/box.rb +0 -0
  170. /data/{rush → vendor/rush}/lib/rush/commands.rb +0 -0
  171. /data/{rush → vendor/rush}/lib/rush/config.rb +0 -0
  172. /data/{rush → vendor/rush}/lib/rush/dir.rb +0 -0
  173. /data/{rush → vendor/rush}/lib/rush/embeddable_shell.rb +0 -0
  174. /data/{rush → vendor/rush}/lib/rush/entry.rb +0 -0
  175. /data/{rush → vendor/rush}/lib/rush/exceptions.rb +0 -0
  176. /data/{rush → vendor/rush}/lib/rush/file.rb +0 -0
  177. /data/{rush → vendor/rush}/lib/rush/find_by.rb +0 -0
  178. /data/{rush → vendor/rush}/lib/rush/fixnum_ext.rb +0 -0
  179. /data/{rush → vendor/rush}/lib/rush/head_tail.rb +0 -0
  180. /data/{rush → vendor/rush}/lib/rush/local.rb +0 -0
  181. /data/{rush → vendor/rush}/lib/rush/process.rb +0 -0
  182. /data/{rush → vendor/rush}/lib/rush/process_set.rb +0 -0
  183. /data/{rush → vendor/rush}/lib/rush/remote.rb +0 -0
  184. /data/{rush → vendor/rush}/lib/rush/search_results.rb +0 -0
  185. /data/{rush → vendor/rush}/lib/rush/server.rb +0 -0
  186. /data/{rush → vendor/rush}/lib/rush/shell.rb +0 -0
  187. /data/{rush → vendor/rush}/lib/rush/ssh_tunnel.rb +0 -0
  188. /data/{rush → vendor/rush}/lib/rush/string_ext.rb +0 -0
  189. /data/{rush → vendor/rush}/lib/rush.rb +0 -0
  190. /data/{rush → vendor/rush}/rush.gemspec +0 -0
  191. /data/{rush → vendor/rush}/spec/access_spec.rb +0 -0
  192. /data/{rush → vendor/rush}/spec/array_ext_spec.rb +0 -0
  193. /data/{rush → vendor/rush}/spec/base.rb +0 -0
  194. /data/{rush → vendor/rush}/spec/box_spec.rb +0 -0
  195. /data/{rush → vendor/rush}/spec/commands_spec.rb +0 -0
  196. /data/{rush → vendor/rush}/spec/config_spec.rb +0 -0
  197. /data/{rush → vendor/rush}/spec/dir_spec.rb +0 -0
  198. /data/{rush → vendor/rush}/spec/embeddable_shell_spec.rb +0 -0
  199. /data/{rush → vendor/rush}/spec/entry_spec.rb +0 -0
  200. /data/{rush → vendor/rush}/spec/file_spec.rb +0 -0
  201. /data/{rush → vendor/rush}/spec/find_by_spec.rb +0 -0
  202. /data/{rush → vendor/rush}/spec/fixnum_ext_spec.rb +0 -0
  203. /data/{rush → vendor/rush}/spec/local_spec.rb +0 -0
  204. /data/{rush → vendor/rush}/spec/process_set_spec.rb +0 -0
  205. /data/{rush → vendor/rush}/spec/process_spec.rb +0 -0
  206. /data/{rush → vendor/rush}/spec/remote_spec.rb +0 -0
  207. /data/{rush → vendor/rush}/spec/rush_spec.rb +0 -0
  208. /data/{rush → vendor/rush}/spec/search_results_spec.rb +0 -0
  209. /data/{rush → vendor/rush}/spec/shell_spec.rb +0 -0
  210. /data/{rush → vendor/rush}/spec/ssh_tunnel_spec.rb +0 -0
  211. /data/{rush → vendor/rush}/spec/string_ext_spec.rb +0 -0
  212. /data/{session → vendor/session}/lib/session-2.4.0.rb +0 -0
  213. /data/{session → vendor/session}/lib/session.rb +0 -0
  214. /data/{session → vendor/session}/test/session.rb +0 -0
@@ -0,0 +1,376 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'fileutils'
5
+ require 'rake'
6
+ require 'test/filecreation'
7
+ require 'test/capture_stdout'
8
+ require 'test/rake_test_setup'
9
+
10
+ ######################################################################
11
+ class TestTask < Test::Unit::TestCase
12
+ include CaptureStdout
13
+ include Rake
14
+ include TestMethods
15
+
16
+ def setup
17
+ Task.clear
18
+ end
19
+
20
+ def test_create
21
+ arg = nil
22
+ t = task(:name) { |task| arg = task; 1234 }
23
+ assert_equal "name", t.name
24
+ assert_equal [], t.prerequisites
25
+ assert t.needed?
26
+ t.execute(0)
27
+ assert_equal t, arg
28
+ assert_nil t.source
29
+ assert_equal [], t.sources
30
+ assert_equal 1, t.locations.size
31
+ assert_match(/#{Regexp.quote(__FILE__)}/, t.locations.first)
32
+ end
33
+
34
+ def test_inspect
35
+ t = task(:foo, :needs => [:bar, :baz])
36
+ assert_equal "<Rake::Task foo => [bar, baz]>", t.inspect
37
+ end
38
+
39
+ def test_invoke
40
+ runlist = []
41
+ t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
42
+ t2 = task(:t2) { |t| runlist << t.name }
43
+ t3 = task(:t3) { |t| runlist << t.name }
44
+ assert_equal ["t2", "t3"], t1.prerequisites
45
+ t1.invoke
46
+ assert_equal ["t2", "t3", "t1"], runlist
47
+ end
48
+
49
+ def test_invoke_with_circular_dependencies
50
+ runlist = []
51
+ t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 }
52
+ t2 = task(:t2 => [:t1]) { |t| runlist << t.name }
53
+ assert_equal ["t2"], t1.prerequisites
54
+ assert_equal ["t1"], t2.prerequisites
55
+ ex = assert_exception RuntimeError do
56
+ t1.invoke
57
+ end
58
+ assert_match(/circular dependency/i, ex.message)
59
+ assert_match(/t1 => t2 => t1/, ex.message)
60
+ end
61
+
62
+ def test_dry_run_prevents_actions
63
+ Rake.application.options.dryrun = true
64
+ runlist = []
65
+ t1 = task(:t1) { |t| runlist << t.name; 3321 }
66
+ out = capture_stdout { t1.invoke }
67
+ assert_match(/execute .*t1/i, out)
68
+ assert_match(/dry run/i, out)
69
+ assert_no_match(/invoke/i, out)
70
+ assert_equal [], runlist
71
+ ensure
72
+ Rake.application.options.dryrun = false
73
+ end
74
+
75
+ def test_tasks_can_be_traced
76
+ Rake.application.options.trace = true
77
+ t1 = task(:t1)
78
+ out = capture_stdout {
79
+ t1.invoke
80
+ }
81
+ assert_match(/invoke t1/i, out)
82
+ assert_match(/execute t1/i, out)
83
+ ensure
84
+ Rake.application.options.trace = false
85
+ end
86
+
87
+ def test_no_double_invoke
88
+ runlist = []
89
+ t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
90
+ t2 = task(:t2 => [:t3]) { |t| runlist << t.name }
91
+ t3 = task(:t3) { |t| runlist << t.name }
92
+ t1.invoke
93
+ assert_equal ["t3", "t2", "t1"], runlist
94
+ end
95
+
96
+ def test_can_double_invoke_with_reenable
97
+ runlist = []
98
+ t1 = task(:t1) { |t| runlist << t.name }
99
+ t1.invoke
100
+ t1.reenable
101
+ t1.invoke
102
+ assert_equal ["t1", "t1"], runlist
103
+ end
104
+
105
+ def test_clear
106
+ t = task("t" => "a") { }
107
+ t.clear
108
+ assert t.prerequisites.empty?, "prerequisites should be empty"
109
+ assert t.actions.empty?, "actions should be empty"
110
+ end
111
+
112
+ def test_clear_prerequisites
113
+ t = task("t" => ["a", "b"])
114
+ assert_equal ['a', 'b'], t.prerequisites
115
+ t.clear_prerequisites
116
+ assert_equal [], t.prerequisites
117
+ end
118
+
119
+ def test_clear_actions
120
+ t = task("t") { }
121
+ t.clear_actions
122
+ assert t.actions.empty?, "actions should be empty"
123
+ end
124
+
125
+ def test_find
126
+ task :tfind
127
+ assert_equal "tfind", Task[:tfind].name
128
+ ex = assert_exception(RuntimeError) { Task[:leaves] }
129
+ assert_equal "Don't know how to build task 'leaves'", ex.message
130
+ end
131
+
132
+ def test_defined
133
+ assert ! Task.task_defined?(:a)
134
+ task :a
135
+ assert Task.task_defined?(:a)
136
+ end
137
+
138
+ def test_multi_invocations
139
+ runs = []
140
+ p = proc do |t| runs << t.name end
141
+ task({:t1=>[:t2,:t3]}, &p)
142
+ task({:t2=>[:t3]}, &p)
143
+ task(:t3, &p)
144
+ Task[:t1].invoke
145
+ assert_equal ["t1", "t2", "t3"], runs.sort
146
+ end
147
+
148
+ def test_task_list
149
+ task :t2
150
+ task :t1 => [:t2]
151
+ assert_equal ["t1", "t2"], Task.tasks.collect {|t| t.name}
152
+ end
153
+
154
+ def test_task_gives_name_on_to_s
155
+ task :abc
156
+ assert_equal "abc", Task[:abc].to_s
157
+ end
158
+
159
+ def test_symbols_can_be_prerequisites
160
+ task :a => :b
161
+ assert_equal ["b"], Task[:a].prerequisites
162
+ end
163
+
164
+ def test_strings_can_be_prerequisites
165
+ task :a => "b"
166
+ assert_equal ["b"], Task[:a].prerequisites
167
+ end
168
+
169
+ def test_arrays_can_be_prerequisites
170
+ task :a => ["b", "c"]
171
+ assert_equal ["b", "c"], Task[:a].prerequisites
172
+ end
173
+
174
+ def test_filelists_can_be_prerequisites
175
+ task :a => FileList.new.include("b", "c")
176
+ assert_equal ["b", "c"], Task[:a].prerequisites
177
+ end
178
+
179
+ def test_investigation_output
180
+ t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
181
+ task(:t2)
182
+ task(:t3)
183
+ out = t1.investigation
184
+ assert_match(/class:\s*Rake::Task/, out)
185
+ assert_match(/needed:\s*true/, out)
186
+ assert_match(/pre-requisites:\s*--t[23]/, out)
187
+ end
188
+
189
+
190
+ def test_extended_comments
191
+ desc %{
192
+ This is a comment.
193
+
194
+ And this is the extended comment.
195
+ name -- Name of task to execute.
196
+ rev -- Software revision to use.
197
+ }
198
+ t = task(:t, :name, :rev)
199
+ assert_equal "[name,rev]", t.arg_description
200
+ assert_equal "This is a comment.", t.comment
201
+ assert_match(/^\s*name -- Name/, t.full_comment)
202
+ assert_match(/^\s*rev -- Software/, t.full_comment)
203
+ assert_match(/\A\s*This is a comment\.$/, t.full_comment)
204
+ end
205
+
206
+ def test_multiple_comments
207
+ desc "line one"
208
+ t = task(:t)
209
+ desc "line two"
210
+ task(:t)
211
+ assert_equal "line one / line two", t.comment
212
+ end
213
+
214
+ def test_settable_comments
215
+ t = task(:t)
216
+ t.comment = "HI"
217
+ assert_equal "HI", t.comment
218
+ end
219
+ end
220
+
221
+ ######################################################################
222
+ class TestTaskWithArguments < Test::Unit::TestCase
223
+ include CaptureStdout
224
+ include Rake
225
+ include TestMethods
226
+
227
+ def setup
228
+ Task.clear
229
+ end
230
+
231
+ def test_no_args_given
232
+ t = task :t
233
+ assert_equal [], t.arg_names
234
+ end
235
+
236
+ def test_args_given
237
+ t = task :t, :a, :b
238
+ assert_equal [:a, :b], t.arg_names
239
+ end
240
+
241
+ def test_name_and_needs
242
+ t = task(:t => [:pre])
243
+ assert_equal "t", t.name
244
+ assert_equal [], t.arg_names
245
+ assert_equal ["pre"], t.prerequisites
246
+ end
247
+
248
+ def test_name_and_explicit_needs
249
+ t = task(:t, :needs => [:pre])
250
+ assert_equal "t", t.name
251
+ assert_equal [], t.arg_names
252
+ assert_equal ["pre"], t.prerequisites
253
+ end
254
+
255
+ def test_name_args_and_explicit_needs
256
+ t = task(:t, :x, :y, :needs => [:pre])
257
+ assert_equal "t", t.name
258
+ assert_equal [:x, :y], t.arg_names
259
+ assert_equal ["pre"], t.prerequisites
260
+ end
261
+
262
+ def test_illegal_keys_in_task_name_hash
263
+ assert_exception RuntimeError do
264
+ t = task(:t, :x, :y => 1, :needs => [:pre])
265
+ end
266
+ end
267
+
268
+ def test_arg_list_is_empty_if_no_args_given
269
+ t = task(:t) { |tt, args| assert_equal({}, args.to_hash) }
270
+ t.invoke(1, 2, 3)
271
+ end
272
+
273
+ def test_tasks_can_access_arguments_as_hash
274
+ t = task :t, :a, :b, :c do |tt, args|
275
+ assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash)
276
+ assert_equal 1, args[:a]
277
+ assert_equal 2, args[:b]
278
+ assert_equal 3, args[:c]
279
+ assert_equal 1, args.a
280
+ assert_equal 2, args.b
281
+ assert_equal 3, args.c
282
+ end
283
+ t.invoke(1, 2, 3)
284
+ end
285
+
286
+ def test_actions_of_various_arity_are_ok_with_args
287
+ notes = []
288
+ t = task(:t, :x) do
289
+ notes << :a
290
+ end
291
+ t.enhance do | |
292
+ notes << :b
293
+ end
294
+ t.enhance do |task|
295
+ notes << :c
296
+ assert_kind_of Task, task
297
+ end
298
+ t.enhance do |t2, args|
299
+ notes << :d
300
+ assert_equal t, t2
301
+ assert_equal({:x => 1}, args.to_hash)
302
+ end
303
+ assert_nothing_raised do t.invoke(1) end
304
+ assert_equal [:a, :b, :c, :d], notes
305
+ end
306
+
307
+ def test_arguments_are_passed_to_block
308
+ t = task(:t, :a, :b) { |tt, args|
309
+ assert_equal( { :a => 1, :b => 2 }, args.to_hash )
310
+ }
311
+ t.invoke(1, 2)
312
+ end
313
+
314
+ def test_extra_parameters_are_ignored
315
+ t = task(:t, :a) { |tt, args|
316
+ assert_equal 1, args.a
317
+ assert_nil args.b
318
+ }
319
+ t.invoke(1, 2)
320
+ end
321
+
322
+ def test_arguments_are_passed_to_all_blocks
323
+ counter = 0
324
+ t = task :t, :a
325
+ task :t do |tt, args|
326
+ assert_equal 1, args.a
327
+ counter += 1
328
+ end
329
+ task :t do |tt, args|
330
+ assert_equal 1, args.a
331
+ counter += 1
332
+ end
333
+ t.invoke(1)
334
+ assert_equal 2, counter
335
+ end
336
+
337
+ def test_block_with_no_parameters_is_ok
338
+ t = task(:t) { }
339
+ t.invoke(1, 2)
340
+ end
341
+
342
+ def test_name_with_args
343
+ desc "T"
344
+ t = task(:tt, :a, :b)
345
+ assert_equal "tt", t.name
346
+ assert_equal "T", t.comment
347
+ assert_equal "[a,b]", t.arg_description
348
+ assert_equal "tt[a,b]", t.name_with_args
349
+ assert_equal [:a, :b],t.arg_names
350
+ end
351
+
352
+ def test_named_args_are_passed_to_prereqs
353
+ value = nil
354
+ pre = task(:pre, :rev) { |t, args| value = args.rev }
355
+ t = task(:t, :name, :rev, :needs => [:pre])
356
+ t.invoke("bill", "1.2")
357
+ assert_equal "1.2", value
358
+ end
359
+
360
+ def test_args_not_passed_if_no_prereq_names
361
+ pre = task(:pre) { |t, args|
362
+ assert_equal({}, args.to_hash)
363
+ assert_equal "bill", args.name
364
+ }
365
+ t = task(:t, :name, :rev, :needs => [:pre])
366
+ t.invoke("bill", "1.2")
367
+ end
368
+
369
+ def test_args_not_passed_if_no_arg_names
370
+ pre = task(:pre, :rev) { |t, args|
371
+ assert_equal({}, args.to_hash)
372
+ }
373
+ t = task(:t, :needs => [:pre])
374
+ t.invoke("bill", "1.2")
375
+ end
376
+ 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
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'rake/testtask'
5
+
6
+ class TestTestTask < Test::Unit::TestCase
7
+ include Rake
8
+ include TestMethods
9
+
10
+ def setup
11
+ Task.clear
12
+ ENV.delete('TEST')
13
+ end
14
+
15
+ def teardown
16
+ FileUtils.rm_rf("testdata")
17
+ end
18
+
19
+ def test_no_task
20
+ assert ! Task.task_defined?(:test)
21
+ end
22
+
23
+ def test_defaults
24
+ tt = Rake::TestTask.new do |t| end
25
+ assert_not_nil tt
26
+ assert_equal :test, tt.name
27
+ assert_equal ['lib'], tt.libs
28
+ assert_equal 'test/test*.rb', tt.pattern
29
+ assert_equal false, tt.verbose
30
+ assert Task.task_defined?(:test)
31
+ end
32
+
33
+ def test_non_defaults
34
+ tt = Rake::TestTask.new(:example) do |t|
35
+ t.libs = ['src', 'ext']
36
+ t.pattern = 'test/tc_*.rb'
37
+ t.verbose = true
38
+ end
39
+ assert_not_nil tt
40
+ assert_equal :example, tt.name
41
+ assert_equal ['src', 'ext'], tt.libs
42
+ assert_equal 'test/tc_*.rb', tt.pattern
43
+ assert_equal true, tt.verbose
44
+ assert Task.task_defined?(:example)
45
+ end
46
+
47
+ def test_pattern
48
+ tt = Rake::TestTask.new do |t|
49
+ t.pattern = '*.rb'
50
+ end
51
+ assert_equal ['*.rb'], tt.file_list.to_a
52
+ end
53
+
54
+ def test_env_test
55
+ ENV['TEST'] = 'testfile.rb'
56
+ tt = Rake::TestTask.new do |t|
57
+ t.pattern = '*'
58
+ end
59
+ assert_equal ["testfile.rb"], tt.file_list.to_a
60
+ end
61
+
62
+ def test_test_files
63
+ tt = Rake::TestTask.new do |t|
64
+ t.test_files = FileList['a.rb', 'b.rb']
65
+ end
66
+ assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a
67
+ end
68
+
69
+ def test_both_pattern_and_test_files
70
+ tt = Rake::TestTask.new do |t|
71
+ t.test_files = FileList['a.rb', 'b.rb']
72
+ t.pattern = '*.rb'
73
+ end
74
+ assert_equal ['a.rb', 'b.rb', '*.rb'], tt.file_list.to_a
75
+ end
76
+
77
+ end
@@ -0,0 +1,49 @@
1
+ require 'test/test_helper'
2
+ require 'rake/testtask'
3
+
4
+ class TestTaskTest < Test::Unit::TestCase
5
+ def test_direct_run_has_quoted_paths
6
+ test_task = Rake::TestTask.new(:tx) do |t|
7
+ t.loader = :direct
8
+ end
9
+ assert_match(/-e ".*"/, test_task.run_code)
10
+ end
11
+
12
+ def test_testrb_run_has_quoted_paths_on_ruby_182
13
+ test_task = Rake::TestTask.new(:tx) do |t|
14
+ t.loader = :testrb
15
+ end
16
+ flexmock(test_task).should_receive(:ruby_version).and_return('1.8.2')
17
+ assert_match(/^-S testrb +".*"$/, test_task.run_code)
18
+ end
19
+
20
+ def test_testrb_run_has_quoted_paths_on_ruby_186
21
+ test_task = Rake::TestTask.new(:tx) do |t|
22
+ t.loader = :testrb
23
+ end
24
+ flexmock(test_task).should_receive(:ruby_version).and_return('1.8.6')
25
+ assert_match(/^-S testrb +$/, test_task.run_code)
26
+ end
27
+
28
+ def test_rake_run_has_quoted_paths
29
+ test_task = Rake::TestTask.new(:tx) do |t|
30
+ t.loader = :rake
31
+ end
32
+ assert_match(/".*"/, test_task.run_code)
33
+ end
34
+
35
+ def test_nested_libs_will_be_flattened
36
+ test_task = Rake::TestTask.new(:tx) do |t|
37
+ t.libs << ["A", "B"]
38
+ end
39
+ sep = File::PATH_SEPARATOR
40
+ assert_match(/lib#{sep}A#{sep}B/, test_task.ruby_opts_string)
41
+ end
42
+
43
+ def test_empty_lib_path_implies_no_dash_I_option
44
+ test_task = Rake::TestTask.new(:tx) do |t|
45
+ t.libs = []
46
+ end
47
+ assert_no_match(/-I/, test_task.ruby_opts_string)
48
+ end
49
+ end
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'rubygems'
5
+ rescue LoadError
6
+ # got no gems
7
+ end
8
+
9
+ require 'test/unit'
10
+ require 'flexmock/test_unit'
11
+ require 'test/capture_stdout'
12
+ require 'test/rake_test_setup'
13
+ require 'rake'
14
+
15
+ class TestTopLevelFunctions < Test::Unit::TestCase
16
+ include CaptureStdout
17
+ include TestMethods
18
+
19
+ def setup
20
+ super
21
+ @app = Rake.application
22
+ Rake.application = flexmock("app")
23
+ end
24
+
25
+ def teardown
26
+ Rake.application = @app
27
+ super
28
+ end
29
+
30
+ def test_namespace
31
+ Rake.application.should_receive(:in_namespace).with("xyz", any).once
32
+ namespace "xyz" do end
33
+ end
34
+
35
+ def test_import
36
+ Rake.application.should_receive(:add_import).with("x").once.ordered
37
+ Rake.application.should_receive(:add_import).with("y").once.ordered
38
+ Rake.application.should_receive(:add_import).with("z").once.ordered
39
+ import('x', 'y', 'z')
40
+ end
41
+
42
+ def test_when_writing
43
+ out = capture_stdout do
44
+ when_writing("NOTWRITING") do
45
+ puts "WRITING"
46
+ end
47
+ end
48
+ assert_equal "WRITING\n", out
49
+ end
50
+
51
+ def test_when_not_writing
52
+ RakeFileUtils.nowrite_flag = true
53
+ out = capture_stdout do
54
+ when_writing("NOTWRITING") do
55
+ puts "WRITING"
56
+ end
57
+ end
58
+ assert_equal "DRYRUN: NOTWRITING\n", out
59
+ ensure
60
+ RakeFileUtils.nowrite_flag = false
61
+ end
62
+
63
+ def test_missing_constants_task
64
+ Rake.application.should_receive(:const_warning).with(:Task).once
65
+ Object.const_missing(:Task)
66
+ end
67
+
68
+ def test_missing_constants_file_task
69
+ Rake.application.should_receive(:const_warning).with(:FileTask).once
70
+ Object.const_missing(:FileTask)
71
+ end
72
+
73
+ def test_missing_constants_file_creation_task
74
+ Rake.application.should_receive(:const_warning).with(:FileCreationTask).once
75
+ Object.const_missing(:FileCreationTask)
76
+ end
77
+
78
+ def test_missing_constants_rake_app
79
+ Rake.application.should_receive(:const_warning).with(:RakeApp).once
80
+ Object.const_missing(:RakeApp)
81
+ end
82
+
83
+ def test_missing_other_constant
84
+ assert_exception(NameError) do Object.const_missing(:Xyz) end
85
+ end
86
+ end
@@ -0,0 +1,72 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/unit'
4
+ require 'test/rake_test_setup'
5
+ require 'test/in_environment'
6
+
7
+ require 'rake'
8
+
9
+ class TestWin32 < Test::Unit::TestCase
10
+ include InEnvironment
11
+ include TestMethods
12
+
13
+ Win32 = Rake::Win32
14
+
15
+ def test_win32_system_dir_uses_home_if_defined
16
+ in_environment('RAKE_SYSTEM' => nil, 'HOME' => 'C:\\HP') do
17
+ assert_equal "C:/HP/Rake", Win32.win32_system_dir
18
+ end
19
+ end
20
+
21
+ def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined
22
+ in_environment(
23
+ 'RAKE_SYSTEM' => nil,
24
+ 'HOME' => nil,
25
+ 'HOMEDRIVE' => "C:",
26
+ 'HOMEPATH' => "\\HP"
27
+ ) do
28
+ assert_equal "C:/HP/Rake", Win32.win32_system_dir
29
+ end
30
+ end
31
+
32
+ def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo
33
+ in_environment(
34
+ 'RAKE_SYSTEM' => nil,
35
+ 'HOME' => nil,
36
+ 'HOMEDRIVE' => nil,
37
+ 'HOMEPATH' => nil,
38
+ 'APPDATA' => "C:\\Documents and Settings\\HP\\Application Data"
39
+ ) do
40
+ assert_equal "C:/Documents and Settings/HP/Application Data/Rake", Win32.win32_system_dir
41
+ end
42
+ end
43
+
44
+ def test_win32_system_dir_fallback_to_userprofile_otherwise
45
+ in_environment(
46
+ 'RAKE_SYSTEM' => nil,
47
+ 'HOME' => nil,
48
+ 'HOMEDRIVE' => nil,
49
+ 'HOMEPATH' => nil,
50
+ 'APPDATA' => nil,
51
+ 'USERPROFILE' => "C:\\Documents and Settings\\HP"
52
+ ) do
53
+ assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir
54
+ end
55
+ end
56
+
57
+ def test_win32_system_dir_nil_of_no_env_vars
58
+ in_environment(
59
+ 'RAKE_SYSTEM' => nil,
60
+ 'HOME' => nil,
61
+ 'HOMEDRIVE' => nil,
62
+ "HOMEPATH" => nil,
63
+ 'APPDATA' => nil,
64
+ "USERPROFILE" => nil
65
+ ) do
66
+ assert_exception(Rake::Win32::Win32HomeError) do
67
+ Win32.win32_system_dir
68
+ end
69
+ end
70
+ end
71
+
72
+ end
@@ -0,0 +1,24 @@
1
+ # Common setup for all test files.
2
+
3
+ begin
4
+ require 'rubygems'
5
+ gem 'flexmock'
6
+ rescue LoadError
7
+ # got no gems
8
+ end
9
+
10
+ require 'flexmock/test_unit'
11
+
12
+ if RUBY_VERSION >= "1.9.0"
13
+ class Test::Unit::TestCase
14
+ # def passed?
15
+ # true
16
+ # end
17
+ end
18
+ end
19
+
20
+ module TestMethods
21
+ def assert_exception(ex, msg=nil, &block)
22
+ assert_raise(ex, msg, &block)
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 1
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 2
@@ -0,0 +1,3 @@
1
+ # For --require testing
2
+
3
+ TESTING_REQUIRE << 3