spline 0.0.5 → 0.0.6

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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/bin/spline +11 -9
  3. data/lib/spline/version.rb +1 -1
  4. data/lib/spline.rb +1 -8
  5. data/vendor/bundle/ruby/2.1.0/bin/rake +23 -0
  6. data/vendor/bundle/ruby/2.1.0/bin/spline +23 -0
  7. data/vendor/bundle/ruby/2.1.0/build_info/rake-10.3.2.info +1 -0
  8. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.autotest +7 -0
  9. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.gemtest +0 -0
  10. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.rubocop.yml +27 -0
  11. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.togglerc +7 -0
  12. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/CONTRIBUTING.rdoc +34 -0
  13. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/History.rdoc +609 -0
  14. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/MIT-LICENSE +21 -0
  15. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/Manifest.txt +162 -0
  16. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/README.rdoc +137 -0
  17. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/Rakefile +81 -0
  18. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/bin/rake +33 -0
  19. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/alt_system.rb +110 -0
  20. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/application.rb +783 -0
  21. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/backtrace.rb +23 -0
  22. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/clean.rb +76 -0
  23. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cloneable.rb +16 -0
  24. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/.document +0 -0
  25. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/compositepublisher.rb +21 -0
  26. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/ftptools.rb +137 -0
  27. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/publisher.rb +81 -0
  28. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  29. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sshpublisher.rb +61 -0
  30. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sys.rb +4 -0
  31. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cpu_counter.rb +109 -0
  32. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/default_loader.rb +14 -0
  33. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/dsl_definition.rb +198 -0
  34. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/early_time.rb +21 -0
  35. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/core.rb +25 -0
  36. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/module.rb +1 -0
  37. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/string.rb +173 -0
  38. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/time.rb +15 -0
  39. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_creation_task.rb +24 -0
  40. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_list.rb +414 -0
  41. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_task.rb +46 -0
  42. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils.rb +116 -0
  43. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils_ext.rb +144 -0
  44. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/gempackagetask.rb +4 -0
  45. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_chain.rb +56 -0
  46. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_exception_mixin.rb +16 -0
  47. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/linked_list.rb +103 -0
  48. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/loaders/makefile.rb +40 -0
  49. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/multi_task.rb +13 -0
  50. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/name_space.rb +38 -0
  51. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/packagetask.rb +202 -0
  52. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pathmap.rb +3 -0
  53. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/phony.rb +15 -0
  54. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/private_reader.rb +20 -0
  55. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/promise.rb +99 -0
  56. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pseudo_status.rb +29 -0
  57. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_module.rb +38 -0
  58. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_test_loader.rb +22 -0
  59. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rdoctask.rb +4 -0
  60. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ruby182_test_unit_fix.rb +29 -0
  61. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  62. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/runtest.rb +27 -0
  63. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/scope.rb +42 -0
  64. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task.rb +383 -0
  65. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_argument_error.rb +7 -0
  66. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_arguments.rb +98 -0
  67. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_manager.rb +310 -0
  68. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/tasklib.rb +24 -0
  69. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/testtask.rb +212 -0
  70. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_history_display.rb +48 -0
  71. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_pool.rb +164 -0
  72. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/trace_output.rb +22 -0
  73. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/version.rb +7 -0
  74. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/win32.rb +56 -0
  75. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake.rb +78 -0
  76. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/rakelib/publish.rake +20 -0
  77. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/rakelib/test_times.rake +25 -0
  78. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/file_creation.rb +34 -0
  79. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/helper.rb +127 -0
  80. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/support/rakefile_definitions.rb +478 -0
  81. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/support/ruby_runner.rb +33 -0
  82. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_private_reader.rb +42 -0
  83. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake.rb +40 -0
  84. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application.rb +641 -0
  85. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application_options.rb +466 -0
  86. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_backtrace.rb +119 -0
  87. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_clean.rb +55 -0
  88. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_cpu_counter.rb +50 -0
  89. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_definitions.rb +79 -0
  90. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_directory_task.rb +63 -0
  91. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_dsl.rb +40 -0
  92. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_early_time.rb +31 -0
  93. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_extension.rb +59 -0
  94. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_creation_task.rb +56 -0
  95. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list.rb +627 -0
  96. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list_path_map.rb +8 -0
  97. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_task.rb +186 -0
  98. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_utils.rb +309 -0
  99. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_ftp_file.rb +74 -0
  100. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_functional.rb +482 -0
  101. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_invocation_chain.rb +64 -0
  102. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_linked_list.rb +84 -0
  103. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_makefile_loader.rb +46 -0
  104. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_multi_task.rb +58 -0
  105. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_name_space.rb +57 -0
  106. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_package_task.rb +79 -0
  107. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map.rb +168 -0
  108. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_explode.rb +34 -0
  109. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_partial.rb +18 -0
  110. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_pseudo_status.rb +21 -0
  111. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rake_test_loader.rb +20 -0
  112. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_reduce_compat.rb +26 -0
  113. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_require.rb +40 -0
  114. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rules.rb +388 -0
  115. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_scope.rb +44 -0
  116. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task.rb +392 -0
  117. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_argument_parsing.rb +109 -0
  118. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_arguments.rb +127 -0
  119. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_lib.rb +9 -0
  120. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager.rb +178 -0
  121. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager_argument_resolution.rb +19 -0
  122. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_with_arguments.rb +171 -0
  123. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_test_task.rb +141 -0
  124. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_thread_pool.rb +142 -0
  125. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_top_level_functions.rb +71 -0
  126. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_win32.rb +72 -0
  127. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_thread_history_display.rb +101 -0
  128. data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_trace_output.rb +52 -0
  129. data/vendor/bundle/ruby/2.1.0/specifications/rake-10.3.2.gemspec +45 -0
  130. metadata +127 -2
@@ -0,0 +1,392 @@
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.map { |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
+ # NOTE: Rail-ties uses comment=.
311
+ def test_comment_setting
312
+ t = task(:t, :name, :rev)
313
+ t.comment = "A Comment"
314
+ assert_equal "A Comment", t.comment
315
+ end
316
+
317
+ def test_comments_with_sentences
318
+ desc "Comment 1. Comment 2."
319
+ t = task(:t, :name, :rev)
320
+ assert_equal "Comment 1", t.comment
321
+ end
322
+
323
+ def test_comments_with_tabbed_sentences
324
+ desc "Comment 1.\tComment 2."
325
+ t = task(:t, :name, :rev)
326
+ assert_equal "Comment 1", t.comment
327
+ end
328
+
329
+ def test_comments_with_decimal_points
330
+ desc "Revision 1.2.3."
331
+ t = task(:t, :name, :rev)
332
+ assert_equal "Revision 1.2.3", t.comment
333
+ end
334
+
335
+ def test_comments_do_not_set
336
+ t = task(:t, :name, :rev)
337
+ assert_equal nil, t.comment
338
+ end
339
+
340
+ def test_comments_is_nil
341
+ t = task(:t, :name, :rev)
342
+ t.comment = nil
343
+ assert_equal nil, t.comment
344
+ end
345
+
346
+ def test_extended_comments
347
+ desc %{
348
+ This is a comment.
349
+
350
+ And this is the extended comment.
351
+ name -- Name of task to execute.
352
+ rev -- Software revision to use.
353
+ }
354
+ t = task(:t, :name, :rev)
355
+ assert_equal "[name,rev]", t.arg_description
356
+ assert_equal "This is a comment", t.comment
357
+ assert_match(/^\s*name -- Name/, t.full_comment)
358
+ assert_match(/^\s*rev -- Software/, t.full_comment)
359
+ assert_match(/\A\s*This is a comment\.$/, t.full_comment)
360
+ end
361
+
362
+ def test_multiple_comments
363
+ desc "line one"
364
+ t = task(:t)
365
+ desc "line two"
366
+ task(:t)
367
+ assert_equal "line one / line two", t.comment
368
+ end
369
+
370
+ def test_duplicate_comments
371
+ desc "line one"
372
+ t = task(:t)
373
+ desc "line one"
374
+ task(:t)
375
+ assert_equal "line one", t.comment
376
+ end
377
+
378
+ def test_interspersed_duplicate_comments
379
+ desc "line one"
380
+ t = task(:t)
381
+ desc "line two"
382
+ task(:t)
383
+ desc "line one"
384
+ task(:t)
385
+ assert_equal "line one / line two", t.comment
386
+ end
387
+
388
+ def test_source_is_first_prerequisite
389
+ t = task :t => ["preqA", "preqB"]
390
+ assert_equal "preqA", t.source
391
+ end
392
+ end
@@ -0,0 +1,109 @@
1
+ require File.expand_path('../helper', __FILE__)
2
+
3
+ class TestRakeTaskArgumentParsing < Rake::TestCase
4
+ def setup
5
+ super
6
+
7
+ @app = Rake::Application.new
8
+ end
9
+
10
+ def test_name_only
11
+ name, args = @app.parse_task_string("name")
12
+ assert_equal "name", name
13
+ assert_equal [], args
14
+ end
15
+
16
+ def test_empty_args
17
+ name, args = @app.parse_task_string("name[]")
18
+ assert_equal "name", name
19
+ assert_equal [], args
20
+ end
21
+
22
+ def test_one_argument
23
+ name, args = @app.parse_task_string("name[one]")
24
+ assert_equal "name", name
25
+ assert_equal ["one"], args
26
+ end
27
+
28
+ def test_two_arguments
29
+ name, args = @app.parse_task_string("name[one,two]")
30
+ assert_equal "name", name
31
+ assert_equal ["one", "two"], args
32
+ end
33
+
34
+ def test_can_handle_spaces_between_args
35
+ name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]")
36
+ assert_equal "name", name
37
+ assert_equal ["one", "two", "three", "four"], args
38
+ end
39
+
40
+ def test_keeps_embedded_spaces
41
+ name, args = @app.parse_task_string("name[a one ana, two]")
42
+ assert_equal "name", name
43
+ assert_equal ["a one ana", "two"], args
44
+ end
45
+
46
+ def test_can_handle_commas_in_args
47
+ name, args = @app.parse_task_string("name[one, two, three_a\\, three_b, four]")
48
+ assert_equal "name", name
49
+ assert_equal ["one", "two", "three_a, three_b", "four"], args
50
+ end
51
+
52
+ def test_terminal_width_using_env
53
+ app = Rake::Application.new
54
+ app.terminal_columns = 1234
55
+
56
+ assert_equal 1234, app.terminal_width
57
+ end
58
+
59
+ def test_terminal_width_using_stty
60
+ def @app.unix?() true end
61
+ def @app.dynamic_width_stty() 1235 end
62
+ def @app.dynamic_width_tput() 0 end
63
+
64
+ assert_equal 1235, @app.terminal_width
65
+ end
66
+
67
+ def test_terminal_width_using_tput
68
+ def @app.unix?() true end
69
+ def @app.dynamic_width_stty() 0 end
70
+ def @app.dynamic_width_tput() 1236 end
71
+
72
+ assert_equal 1236, @app.terminal_width
73
+ end
74
+
75
+ def test_terminal_width_using_hardcoded_80
76
+ def @app.unix?() false end
77
+
78
+ assert_equal 80, @app.terminal_width
79
+ end
80
+
81
+ def test_terminal_width_with_failure
82
+ def @app.unix?() raise end
83
+
84
+ assert_equal 80, @app.terminal_width
85
+ end
86
+
87
+ def test_no_rakeopt
88
+ ARGV << '--trace'
89
+ app = Rake::Application.new
90
+ app.init
91
+ assert !app.options.silent
92
+ end
93
+
94
+ def test_rakeopt_with_blank_options
95
+ ARGV << '--trace'
96
+ app = Rake::Application.new
97
+ app.init
98
+ assert !app.options.silent
99
+ end
100
+
101
+ def test_rakeopt_with_silent_options
102
+ ENV['RAKEOPT'] = '-s'
103
+ app = Rake::Application.new
104
+
105
+ app.init
106
+
107
+ assert app.options.silent
108
+ end
109
+ end
@@ -0,0 +1,127 @@
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
@@ -0,0 +1,9 @@
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