vergissberlin 0.0.9 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vergissberlin/version.rb +1 -1
  3. data/test/cases/version_case.rb +26 -0
  4. data/test/rest_spec.rb +12 -0
  5. data/test/suites/suite_test.rb +12 -0
  6. data/test/utils.rb +13 -0
  7. metadata +83 -134
  8. data/.gitignore +0 -17
  9. data/.travis.yml +0 -7
  10. data/Gemfile +0 -4
  11. data/LICENSE.txt +0 -22
  12. data/Rakefile +0 -10
  13. data/test/test_test.rb +0 -5
  14. data/test/version_test.rb +0 -12
  15. data/vendor/bundle/bin/rake +0 -23
  16. data/vendor/bundle/bin/vergissberlin +0 -23
  17. data/vendor/bundle/build_info/capistrano_colors-0.5.5.info +0 -1
  18. data/vendor/bundle/build_info/rake-10.0.4.info +0 -1
  19. data/vendor/bundle/gems/capistrano_colors-0.5.5/Manifest +0 -7
  20. data/vendor/bundle/gems/capistrano_colors-0.5.5/README.rdoc +0 -130
  21. data/vendor/bundle/gems/capistrano_colors-0.5.5/Rakefile +0 -1
  22. data/vendor/bundle/gems/capistrano_colors-0.5.5/capistrano_colors.gemspec +0 -33
  23. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors/configuration.rb +0 -70
  24. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors/logger.rb +0 -72
  25. data/vendor/bundle/gems/capistrano_colors-0.5.5/lib/capistrano_colors.rb +0 -18
  26. data/vendor/bundle/gems/rake-10.0.4/CHANGES +0 -530
  27. data/vendor/bundle/gems/rake-10.0.4/MIT-LICENSE +0 -21
  28. data/vendor/bundle/gems/rake-10.0.4/README.rdoc +0 -187
  29. data/vendor/bundle/gems/rake-10.0.4/Rakefile +0 -375
  30. data/vendor/bundle/gems/rake-10.0.4/TODO +0 -21
  31. data/vendor/bundle/gems/rake-10.0.4/bin/rake +0 -33
  32. data/vendor/bundle/gems/rake-10.0.4/install.rb +0 -90
  33. data/vendor/bundle/gems/rake-10.0.4/lib/rake/alt_system.rb +0 -109
  34. data/vendor/bundle/gems/rake-10.0.4/lib/rake/application.rb +0 -681
  35. data/vendor/bundle/gems/rake-10.0.4/lib/rake/backtrace.rb +0 -19
  36. data/vendor/bundle/gems/rake-10.0.4/lib/rake/clean.rb +0 -32
  37. data/vendor/bundle/gems/rake-10.0.4/lib/rake/cloneable.rb +0 -16
  38. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/compositepublisher.rb +0 -21
  39. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/ftptools.rb +0 -151
  40. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/publisher.rb +0 -73
  41. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/rubyforgepublisher.rb +0 -16
  42. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/sshpublisher.rb +0 -50
  43. data/vendor/bundle/gems/rake-10.0.4/lib/rake/contrib/sys.rb +0 -1
  44. data/vendor/bundle/gems/rake-10.0.4/lib/rake/default_loader.rb +0 -10
  45. data/vendor/bundle/gems/rake-10.0.4/lib/rake/dsl_definition.rb +0 -156
  46. data/vendor/bundle/gems/rake-10.0.4/lib/rake/early_time.rb +0 -18
  47. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/core.rb +0 -27
  48. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/module.rb +0 -0
  49. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/string.rb +0 -168
  50. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ext/time.rb +0 -15
  51. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_creation_task.rb +0 -24
  52. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_list.rb +0 -410
  53. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_task.rb +0 -47
  54. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_utils.rb +0 -114
  55. data/vendor/bundle/gems/rake-10.0.4/lib/rake/file_utils_ext.rb +0 -143
  56. data/vendor/bundle/gems/rake-10.0.4/lib/rake/gempackagetask.rb +0 -1
  57. data/vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_chain.rb +0 -51
  58. data/vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_exception_mixin.rb +0 -16
  59. data/vendor/bundle/gems/rake-10.0.4/lib/rake/loaders/makefile.rb +0 -40
  60. data/vendor/bundle/gems/rake-10.0.4/lib/rake/multi_task.rb +0 -13
  61. data/vendor/bundle/gems/rake-10.0.4/lib/rake/name_space.rb +0 -25
  62. data/vendor/bundle/gems/rake-10.0.4/lib/rake/packagetask.rb +0 -185
  63. data/vendor/bundle/gems/rake-10.0.4/lib/rake/pathmap.rb +0 -1
  64. data/vendor/bundle/gems/rake-10.0.4/lib/rake/phony.rb +0 -15
  65. data/vendor/bundle/gems/rake-10.0.4/lib/rake/private_reader.rb +0 -20
  66. data/vendor/bundle/gems/rake-10.0.4/lib/rake/promise.rb +0 -99
  67. data/vendor/bundle/gems/rake-10.0.4/lib/rake/pseudo_status.rb +0 -24
  68. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rake_module.rb +0 -37
  69. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rake_test_loader.rb +0 -22
  70. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rdoctask.rb +0 -1
  71. data/vendor/bundle/gems/rake-10.0.4/lib/rake/ruby182_test_unit_fix.rb +0 -25
  72. data/vendor/bundle/gems/rake-10.0.4/lib/rake/rule_recursion_overflow_error.rb +0 -20
  73. data/vendor/bundle/gems/rake-10.0.4/lib/rake/runtest.rb +0 -22
  74. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task.rb +0 -368
  75. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_argument_error.rb +0 -7
  76. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_arguments.rb +0 -78
  77. data/vendor/bundle/gems/rake-10.0.4/lib/rake/task_manager.rb +0 -296
  78. data/vendor/bundle/gems/rake-10.0.4/lib/rake/tasklib.rb +0 -22
  79. data/vendor/bundle/gems/rake-10.0.4/lib/rake/testtask.rb +0 -198
  80. data/vendor/bundle/gems/rake-10.0.4/lib/rake/thread_history_display.rb +0 -48
  81. data/vendor/bundle/gems/rake-10.0.4/lib/rake/thread_pool.rb +0 -155
  82. data/vendor/bundle/gems/rake-10.0.4/lib/rake/trace_output.rb +0 -22
  83. data/vendor/bundle/gems/rake-10.0.4/lib/rake/version.rb +0 -13
  84. data/vendor/bundle/gems/rake-10.0.4/lib/rake/win32.rb +0 -55
  85. data/vendor/bundle/gems/rake-10.0.4/lib/rake.rb +0 -71
  86. data/vendor/bundle/gems/rake-10.0.4/test/file_creation.rb +0 -34
  87. data/vendor/bundle/gems/rake-10.0.4/test/helper.rb +0 -562
  88. data/vendor/bundle/gems/rake-10.0.4/test/test_private_reader.rb +0 -42
  89. data/vendor/bundle/gems/rake-10.0.4/test/test_rake.rb +0 -40
  90. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_application.rb +0 -515
  91. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_application_options.rb +0 -455
  92. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_backtrace.rb +0 -89
  93. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_clean.rb +0 -14
  94. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_definitions.rb +0 -80
  95. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_directory_task.rb +0 -57
  96. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_dsl.rb +0 -40
  97. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_early_time.rb +0 -31
  98. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_extension.rb +0 -59
  99. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_creation_task.rb +0 -56
  100. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_list.rb +0 -628
  101. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_list_path_map.rb +0 -8
  102. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_task.rb +0 -122
  103. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_file_utils.rb +0 -305
  104. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_ftp_file.rb +0 -59
  105. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_functional.rb +0 -496
  106. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_invocation_chain.rb +0 -52
  107. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_makefile_loader.rb +0 -44
  108. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_multi_task.rb +0 -59
  109. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_name_space.rb +0 -43
  110. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_package_task.rb +0 -79
  111. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map.rb +0 -157
  112. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map_explode.rb +0 -34
  113. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_path_map_partial.rb +0 -18
  114. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_pseudo_status.rb +0 -21
  115. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_rake_test_loader.rb +0 -21
  116. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_reduce_compat.rb +0 -30
  117. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_require.rb +0 -40
  118. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_rules.rb +0 -327
  119. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task.rb +0 -340
  120. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_argument_parsing.rb +0 -103
  121. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_arguments.rb +0 -88
  122. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_lib.rb +0 -9
  123. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_manager.rb +0 -157
  124. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_manager_argument_resolution.rb +0 -19
  125. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_task_with_arguments.rb +0 -171
  126. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_test_task.rb +0 -120
  127. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_thread_pool.rb +0 -122
  128. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_top_level_functions.rb +0 -71
  129. data/vendor/bundle/gems/rake-10.0.4/test/test_rake_win32.rb +0 -72
  130. data/vendor/bundle/gems/rake-10.0.4/test/test_thread_history_display.rb +0 -91
  131. data/vendor/bundle/gems/rake-10.0.4/test/test_trace_output.rb +0 -50
  132. data/vendor/bundle/specifications/capistrano_colors-0.5.5.gemspec +0 -32
  133. data/vendor/bundle/specifications/rake-10.0.4.gemspec +0 -35
  134. data/vergissberlin.gemspec +0 -26
@@ -1,327 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'fileutils'
3
-
4
- class TestRakeRules < Rake::TestCase
5
- include Rake
6
-
7
- SRCFILE = "abc.c"
8
- SRCFILE2 = "xyz.c"
9
- FTNFILE = "abc.f"
10
- OBJFILE = "abc.o"
11
- FOOFILE = "foo"
12
- DOTFOOFILE = ".foo"
13
-
14
- def setup
15
- super
16
-
17
- Task.clear
18
- @runs = []
19
- end
20
-
21
- def test_multiple_rules1
22
- create_file(FTNFILE)
23
- delete_file(SRCFILE)
24
- delete_file(OBJFILE)
25
- rule(/\.o$/ => ['.c']) do @runs << :C end
26
- rule(/\.o$/ => ['.f']) do @runs << :F end
27
- t = Task[OBJFILE]
28
- t.invoke
29
- Task[OBJFILE].invoke
30
- assert_equal [:F], @runs
31
- end
32
-
33
- def test_multiple_rules2
34
- create_file(FTNFILE)
35
- delete_file(SRCFILE)
36
- delete_file(OBJFILE)
37
- rule(/\.o$/ => ['.f']) do @runs << :F end
38
- rule(/\.o$/ => ['.c']) do @runs << :C end
39
- Task[OBJFILE].invoke
40
- assert_equal [:F], @runs
41
- end
42
-
43
- def test_create_with_source
44
- create_file(SRCFILE)
45
- rule(/\.o$/ => ['.c']) do |t|
46
- @runs << t.name
47
- assert_equal OBJFILE, t.name
48
- assert_equal SRCFILE, t.source
49
- end
50
- Task[OBJFILE].invoke
51
- assert_equal [OBJFILE], @runs
52
- end
53
-
54
- def test_single_dependent
55
- create_file(SRCFILE)
56
- rule(/\.o$/ => '.c') do |t|
57
- @runs << t.name
58
- end
59
- Task[OBJFILE].invoke
60
- assert_equal [OBJFILE], @runs
61
- end
62
-
63
- def test_rule_can_be_created_by_string
64
- create_file(SRCFILE)
65
- rule '.o' => ['.c'] do |t|
66
- @runs << t.name
67
- end
68
- Task[OBJFILE].invoke
69
- assert_equal [OBJFILE], @runs
70
- end
71
-
72
- def test_rule_prereqs_can_be_created_by_string
73
- create_file(SRCFILE)
74
- rule '.o' => '.c' do |t|
75
- @runs << t.name
76
- end
77
- Task[OBJFILE].invoke
78
- assert_equal [OBJFILE], @runs
79
- end
80
-
81
- def test_plain_strings_as_dependents_refer_to_files
82
- create_file(SRCFILE)
83
- rule '.o' => SRCFILE do |t|
84
- @runs << t.name
85
- end
86
- Task[OBJFILE].invoke
87
- assert_equal [OBJFILE], @runs
88
- end
89
-
90
- def test_file_names_beginning_with_dot_can_be_tricked_into_referring_to_file
91
- verbose(false) do
92
- create_file('.foo')
93
- rule '.o' => "./.foo" do |t|
94
- @runs << t.name
95
- end
96
- Task[OBJFILE].invoke
97
- assert_equal [OBJFILE], @runs
98
- end
99
- end
100
-
101
- def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda
102
- verbose(false) do
103
-
104
- create_file(".foo")
105
- rule '.o' => lambda{".foo"} do |t|
106
- @runs << "#{t.name} - #{t.source}"
107
- end
108
- Task[OBJFILE].invoke
109
- assert_equal ["#{OBJFILE} - .foo"], @runs
110
- end
111
- end
112
-
113
- def test_file_names_containing_percent_can_be_wrapped_in_lambda
114
- verbose(false) do
115
- create_file("foo%x")
116
- rule '.o' => lambda{"foo%x"} do |t|
117
- @runs << "#{t.name} - #{t.source}"
118
- end
119
- Task[OBJFILE].invoke
120
- assert_equal ["#{OBJFILE} - foo%x"], @runs
121
- end
122
- end
123
-
124
- def test_non_extension_rule_name_refers_to_file
125
- verbose(false) do
126
- create_file("abc.c")
127
- rule "abc" => '.c' do |t|
128
- @runs << t.name
129
- end
130
- Task["abc"].invoke
131
- assert_equal ["abc"], @runs
132
- end
133
- end
134
-
135
- def test_pathmap_automatically_applies_to_name
136
- verbose(false) do
137
- create_file("zzabc.c")
138
- rule ".o" => 'zz%{x,a}n.c' do |t|
139
- @runs << "#{t.name} - #{t.source}"
140
- end
141
- Task["xbc.o"].invoke
142
- assert_equal ["xbc.o - zzabc.c"], @runs
143
- end
144
- end
145
-
146
- def test_plain_strings_are_just_filenames
147
- verbose(false) do
148
- create_file("plainname")
149
- rule ".o" => 'plainname' do |t|
150
- @runs << "#{t.name} - #{t.source}"
151
- end
152
- Task["xbc.o"].invoke
153
- assert_equal ["xbc.o - plainname"], @runs
154
- end
155
- end
156
-
157
- def test_rule_runs_when_explicit_task_has_no_actions
158
- create_file(SRCFILE)
159
- create_file(SRCFILE2)
160
- delete_file(OBJFILE)
161
- rule '.o' => '.c' do |t|
162
- @runs << t.source
163
- end
164
- file OBJFILE => [SRCFILE2]
165
- Task[OBJFILE].invoke
166
- assert_equal [SRCFILE], @runs
167
- end
168
-
169
- def test_close_matches_on_name_do_not_trigger_rule
170
- create_file("x.c")
171
- rule '.o' => ['.c'] do |t|
172
- @runs << t.name
173
- end
174
- assert_raises(RuntimeError) { Task['x.obj'].invoke }
175
- assert_raises(RuntimeError) { Task['x.xyo'].invoke }
176
- end
177
-
178
- def test_rule_rebuilds_obj_when_source_is_newer
179
- create_timed_files(OBJFILE, SRCFILE)
180
- rule(/\.o$/ => ['.c']) do
181
- @runs << :RULE
182
- end
183
- Task[OBJFILE].invoke
184
- assert_equal [:RULE], @runs
185
- end
186
-
187
- def test_rule_with_two_sources_runs_if_both_sources_are_present
188
- create_timed_files(OBJFILE, SRCFILE, SRCFILE2)
189
- rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do
190
- @runs << :RULE
191
- end
192
- Task[OBJFILE].invoke
193
- assert_equal [:RULE], @runs
194
- end
195
-
196
- def test_rule_with_two_sources_but_one_missing_does_not_run
197
- create_timed_files(OBJFILE, SRCFILE)
198
- delete_file(SRCFILE2)
199
- rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do
200
- @runs << :RULE
201
- end
202
- Task[OBJFILE].invoke
203
- assert_equal [], @runs
204
- end
205
-
206
- def test_rule_with_two_sources_builds_both_sources
207
- task 'x.aa'
208
- task 'x.bb'
209
- rule '.a' => '.aa' do
210
- @runs << "A"
211
- end
212
- rule '.b' => '.bb' do
213
- @runs << "B"
214
- end
215
- rule ".c" => ['.a', '.b'] do
216
- @runs << "C"
217
- end
218
- Task["x.c"].invoke
219
- assert_equal ["A", "B", "C"], @runs.sort
220
- end
221
-
222
- def test_second_rule_runs_when_first_rule_doesnt
223
- create_timed_files(OBJFILE, SRCFILE)
224
- delete_file(SRCFILE2)
225
- rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do
226
- @runs << :RULE1
227
- end
228
- rule OBJFILE => [lambda{SRCFILE}] do
229
- @runs << :RULE2
230
- end
231
- Task[OBJFILE].invoke
232
- assert_equal [:RULE2], @runs
233
- end
234
-
235
- def test_second_rule_doest_run_if_first_triggers
236
- create_timed_files(OBJFILE, SRCFILE, SRCFILE2)
237
- rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do
238
- @runs << :RULE1
239
- end
240
- rule OBJFILE => [lambda{SRCFILE}] do
241
- @runs << :RULE2
242
- end
243
- Task[OBJFILE].invoke
244
- assert_equal [:RULE1], @runs
245
- end
246
-
247
- def test_second_rule_doest_run_if_first_triggers_with_reversed_rules
248
- create_timed_files(OBJFILE, SRCFILE, SRCFILE2)
249
- rule OBJFILE => [lambda{SRCFILE}] do
250
- @runs << :RULE1
251
- end
252
- rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do
253
- @runs << :RULE2
254
- end
255
- Task[OBJFILE].invoke
256
- assert_equal [:RULE1], @runs
257
- end
258
-
259
- def test_rule_with_proc_dependent_will_trigger
260
- mkdir_p("src/jw")
261
- create_file("src/jw/X.java")
262
- rule %r(classes/.*\.class) => [
263
- proc { |fn| fn.pathmap("%{classes,src}d/%n.java") }
264
- ] do |task|
265
- assert_equal task.name, 'classes/jw/X.class'
266
- assert_equal task.source, 'src/jw/X.java'
267
- @runs << :RULE
268
- end
269
- Task['classes/jw/X.class'].invoke
270
- assert_equal [:RULE], @runs
271
- ensure
272
- rm_r("src", :verbose=>false) rescue nil
273
- end
274
-
275
- def test_proc_returning_lists_are_flattened_into_prereqs
276
- ran = false
277
- mkdir_p("flatten")
278
- create_file("flatten/a.txt")
279
- task 'flatten/b.data' do |t|
280
- ran = true
281
- touch t.name, :verbose => false
282
- end
283
- rule '.html' =>
284
- proc { |fn|
285
- [
286
- fn.ext("txt"),
287
- "flatten/b.data"
288
- ]
289
- } do |task|
290
- end
291
- Task['flatten/a.html'].invoke
292
- assert ran, "Should have triggered flattened dependency"
293
- ensure
294
- rm_r("flatten", :verbose=>false) rescue nil
295
- end
296
-
297
- def test_recursive_rules_will_work_as_long_as_they_terminate
298
- actions = []
299
- create_file("abc.xml")
300
- rule '.y' => '.xml' do actions << 'y' end
301
- rule '.c' => '.y' do actions << 'c'end
302
- rule '.o' => '.c' do actions << 'o'end
303
- rule '.exe' => '.o' do actions << 'exe'end
304
- Task["abc.exe"].invoke
305
- assert_equal ['y', 'c', 'o', 'exe'], actions
306
- end
307
-
308
- def test_recursive_rules_that_dont_terminate_will_overflow
309
- create_file("a.a")
310
- prev = 'a'
311
- ('b'..'z').each do |letter|
312
- rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end
313
- prev = letter
314
- end
315
- ex = assert_raises(Rake::RuleRecursionOverflowError) {
316
- Task["a.z"].invoke
317
- }
318
- assert_match(/a\.z => a.y/, ex.message)
319
- end
320
-
321
- def test_rules_with_bad_dependents_will_fail
322
- rule "a" => [ 1 ] do |t| puts t.name end
323
- assert_raises(RuntimeError) do Task['a'].invoke end
324
- end
325
-
326
- end
327
-
@@ -1,340 +0,0 @@
1
- require File.expand_path('../helper', __FILE__)
2
- require 'fileutils'
3
-
4
- class TestRakeTask < Rake::TestCase
5
- include Rake
6
-
7
- def setup
8
- super
9
-
10
- Task.clear
11
- Rake::TaskManager.record_task_metadata = true
12
- end
13
-
14
- def teardown
15
- Rake::TaskManager.record_task_metadata = false
16
-
17
- super
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 => [: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
- task(:t2) { |t| runlist << t.name }
43
- 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_raises 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
- _, err = capture_io { t1.invoke }
67
- assert_match(/execute .*t1/i, err)
68
- assert_match(/dry run/i, err)
69
- refute_match(/invoke/i, err)
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
- _, err = capture_io {
79
- t1.invoke
80
- }
81
- assert_match(/invoke t1/i, err)
82
- assert_match(/execute t1/i, err)
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
- task(:t2 => [:t3]) { |t| runlist << t.name }
91
- 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
- desc "a task"
107
- t = task("t" => "a") { }
108
- t.clear
109
- assert t.prerequisites.empty?, "prerequisites should be empty"
110
- assert t.actions.empty?, "actions should be empty"
111
- assert_nil t.comment, "comments should be empty"
112
- end
113
-
114
- def test_clear_prerequisites
115
- t = task("t" => ["a", "b"])
116
- assert_equal ['a', 'b'], t.prerequisites
117
- t.clear_prerequisites
118
- assert_equal [], t.prerequisites
119
- end
120
-
121
- def test_clear_actions
122
- t = task("t") { }
123
- t.clear_actions
124
- assert t.actions.empty?, "actions should be empty"
125
- end
126
-
127
- def test_clear_comments
128
- desc "the original foo"
129
- task :foo => [:x] do
130
- # Dummy action
131
- end
132
-
133
- task(:foo).clear_comments
134
-
135
- desc "a slightly different foo"
136
- task :foo
137
-
138
- assert_equal "a slightly different foo", task(:foo).comment
139
- assert_equal ["x"], task(:foo).prerequisites
140
- assert_equal 1, task(:foo).actions.size
141
- end
142
-
143
- def test_find
144
- task :tfind
145
- assert_equal "tfind", Task[:tfind].name
146
- ex = assert_raises(RuntimeError) { Task[:leaves] }
147
- assert_equal "Don't know how to build task 'leaves'", ex.message
148
- end
149
-
150
- def test_defined
151
- assert ! Task.task_defined?(:a)
152
- task :a
153
- assert Task.task_defined?(:a)
154
- end
155
-
156
- def test_multi_invocations
157
- runs = []
158
- p = proc do |t| runs << t.name end
159
- task({:t1=>[:t2,:t3]}, &p)
160
- task({:t2=>[:t3]}, &p)
161
- task(:t3, &p)
162
- Task[:t1].invoke
163
- assert_equal ["t1", "t2", "t3"], runs.sort
164
- end
165
-
166
- def test_task_list
167
- task :t2
168
- task :t1 => [:t2]
169
- assert_equal ["t1", "t2"], Task.tasks.collect {|t| t.name}
170
- end
171
-
172
- def test_task_gives_name_on_to_s
173
- task :abc
174
- assert_equal "abc", Task[:abc].to_s
175
- end
176
-
177
- def test_symbols_can_be_prerequisites
178
- task :a => :b
179
- assert_equal ["b"], Task[:a].prerequisites
180
- end
181
-
182
- def test_strings_can_be_prerequisites
183
- task :a => "b"
184
- assert_equal ["b"], Task[:a].prerequisites
185
- end
186
-
187
- def test_arrays_can_be_prerequisites
188
- task :a => ["b", "c"]
189
- assert_equal ["b", "c"], Task[:a].prerequisites
190
- end
191
-
192
- def test_filelists_can_be_prerequisites
193
- task :a => FileList.new.include("b", "c")
194
- assert_equal ["b", "c"], Task[:a].prerequisites
195
- end
196
-
197
- def test_prerequiste_tasks_returns_tasks_not_strings
198
- a = task :a => ["b", "c"]
199
- b = task :b
200
- c = task :c
201
- assert_equal [b, c], a.prerequisite_tasks
202
- end
203
-
204
- def test_prerequiste_tasks_fails_if_prerequisites_are_undefined
205
- a = task :a => ["b", "c"]
206
- task :b
207
- assert_raises(RuntimeError) do
208
- a.prerequisite_tasks
209
- end
210
- end
211
-
212
- def test_prerequiste_tasks_honors_namespaces
213
- a = b = nil
214
- namespace "X" do
215
- a = task :a => ["b", "c"]
216
- b = task :b
217
- end
218
- c = task :c
219
-
220
- assert_equal [b, c], a.prerequisite_tasks
221
- end
222
-
223
- def test_all_prerequisite_tasks_includes_all_prerequisites
224
- a = task :a => "b"
225
- b = task :b => ["c", "d"]
226
- c = task :c => "e"
227
- d = task :d
228
- e = task :e
229
-
230
- assert_equal [b, c, d, e], a.all_prerequisite_tasks.sort_by { |t| t.name }
231
- end
232
-
233
- def test_all_prerequisite_tasks_does_not_include_duplicates
234
- a = task :a => ["b", "c"]
235
- b = task :b => "c"
236
- c = task :c
237
-
238
- assert_equal [b, c], a.all_prerequisite_tasks.sort_by { |t| t.name }
239
- end
240
-
241
- def test_all_prerequisite_tasks_includes_self_on_cyclic_dependencies
242
- a = task :a => "b"
243
- b = task :b => "a"
244
-
245
- assert_equal [a, b], a.all_prerequisite_tasks.sort_by { |t| t.name }
246
- end
247
-
248
- def test_timestamp_returns_now_if_all_prereqs_have_no_times
249
- a = task :a => ["b", "c"]
250
- task :b
251
- task :c
252
-
253
- assert_in_delta Time.now, a.timestamp, 0.1, 'computer too slow?'
254
- end
255
-
256
- def test_timestamp_returns_latest_prereq_timestamp
257
- a = task :a => ["b", "c"]
258
- b = task :b
259
- c = task :c
260
-
261
- now = Time.now
262
- def b.timestamp() Time.now + 10 end
263
- def c.timestamp() Time.now + 5 end
264
-
265
- assert_in_delta now, a.timestamp, 0.1, 'computer too slow?'
266
- end
267
-
268
- def test_always_multitask
269
- mx = Mutex.new
270
- result = []
271
-
272
- t_a = task(:a) do |t|
273
- sleep 0.02
274
- mx.synchronize{ result << t.name }
275
- end
276
-
277
- t_b = task(:b) do |t|
278
- mx.synchronize{ result << t.name }
279
- end
280
-
281
- t_c = task(:c => [:a,:b]) do |t|
282
- mx.synchronize{ result << t.name }
283
- end
284
-
285
- t_c.invoke
286
-
287
- # task should always run in order
288
- assert_equal ['a', 'b', 'c'], result
289
-
290
- [t_a, t_b, t_c].each { |t| t.reenable }
291
- result.clear
292
-
293
- Rake.application.options.always_multitask = true
294
- t_c.invoke
295
-
296
- # with multitask, task 'b' should grab the mutex first
297
- assert_equal ['b', 'a', 'c'], result
298
- end
299
-
300
- def test_investigation_output
301
- t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 }
302
- task(:t2)
303
- task(:t3)
304
- out = t1.investigation
305
- assert_match(/class:\s*Rake::Task/, out)
306
- assert_match(/needed:\s*true/, out)
307
- assert_match(/pre-requisites:\s*--t[23]/, out)
308
- end
309
-
310
-
311
- def test_extended_comments
312
- desc %{
313
- This is a comment.
314
-
315
- And this is the extended comment.
316
- name -- Name of task to execute.
317
- rev -- Software revision to use.
318
- }
319
- t = task(:t, :name, :rev)
320
- assert_equal "[name,rev]", t.arg_description
321
- assert_equal "This is a comment.", t.comment
322
- assert_match(/^\s*name -- Name/, t.full_comment)
323
- assert_match(/^\s*rev -- Software/, t.full_comment)
324
- assert_match(/\A\s*This is a comment\.$/, t.full_comment)
325
- end
326
-
327
- def test_multiple_comments
328
- desc "line one"
329
- t = task(:t)
330
- desc "line two"
331
- task(:t)
332
- assert_equal "line one / line two", t.comment
333
- end
334
-
335
- def test_settable_comments
336
- t = task(:t)
337
- t.comment = "HI"
338
- assert_equal "HI", t.comment
339
- end
340
- end