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.
- checksums.yaml +4 -4
- data/bin/spline +11 -9
- data/lib/spline/version.rb +1 -1
- data/lib/spline.rb +1 -8
- data/vendor/bundle/ruby/2.1.0/bin/rake +23 -0
- data/vendor/bundle/ruby/2.1.0/bin/spline +23 -0
- data/vendor/bundle/ruby/2.1.0/build_info/rake-10.3.2.info +1 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.autotest +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.gemtest +0 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.rubocop.yml +27 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/.togglerc +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/CONTRIBUTING.rdoc +34 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/History.rdoc +609 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/MIT-LICENSE +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/Manifest.txt +162 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/README.rdoc +137 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/Rakefile +81 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/bin/rake +33 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/alt_system.rb +110 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/application.rb +783 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/backtrace.rb +23 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/clean.rb +76 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cloneable.rb +16 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/.document +0 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/compositepublisher.rb +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/ftptools.rb +137 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/publisher.rb +81 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/rubyforgepublisher.rb +18 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sshpublisher.rb +61 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/contrib/sys.rb +4 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/cpu_counter.rb +109 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/default_loader.rb +14 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/dsl_definition.rb +198 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/early_time.rb +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/core.rb +25 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/module.rb +1 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/string.rb +173 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ext/time.rb +15 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_creation_task.rb +24 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_list.rb +414 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_task.rb +46 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils.rb +116 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/file_utils_ext.rb +144 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/gempackagetask.rb +4 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_chain.rb +56 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/invocation_exception_mixin.rb +16 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/linked_list.rb +103 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/loaders/makefile.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/multi_task.rb +13 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/name_space.rb +38 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/packagetask.rb +202 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pathmap.rb +3 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/phony.rb +15 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/private_reader.rb +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/promise.rb +99 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/pseudo_status.rb +29 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_module.rb +38 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rake_test_loader.rb +22 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rdoctask.rb +4 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/ruby182_test_unit_fix.rb +29 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/runtest.rb +27 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/scope.rb +42 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task.rb +383 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_argument_error.rb +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_arguments.rb +98 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/task_manager.rb +310 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/tasklib.rb +24 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/testtask.rb +212 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_history_display.rb +48 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/thread_pool.rb +164 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/trace_output.rb +22 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/version.rb +7 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake/win32.rb +56 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/lib/rake.rb +78 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/rakelib/publish.rake +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/rakelib/test_times.rake +25 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/file_creation.rb +34 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/helper.rb +127 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/support/rakefile_definitions.rb +478 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/support/ruby_runner.rb +33 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_private_reader.rb +42 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application.rb +641 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_application_options.rb +466 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_backtrace.rb +119 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_clean.rb +55 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_cpu_counter.rb +50 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_definitions.rb +79 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_directory_task.rb +63 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_dsl.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_early_time.rb +31 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_extension.rb +59 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_creation_task.rb +56 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list.rb +627 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_list_path_map.rb +8 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_task.rb +186 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_file_utils.rb +309 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_ftp_file.rb +74 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_functional.rb +482 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_invocation_chain.rb +64 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_linked_list.rb +84 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_makefile_loader.rb +46 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_multi_task.rb +58 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_name_space.rb +57 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_package_task.rb +79 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map.rb +168 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_explode.rb +34 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_path_map_partial.rb +18 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_pseudo_status.rb +21 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rake_test_loader.rb +20 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_reduce_compat.rb +26 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_require.rb +40 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_rules.rb +388 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_scope.rb +44 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task.rb +392 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_argument_parsing.rb +109 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_arguments.rb +127 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_lib.rb +9 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager.rb +178 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_manager_argument_resolution.rb +19 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_task_with_arguments.rb +171 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_test_task.rb +141 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_thread_pool.rb +142 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_top_level_functions.rb +71 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_rake_win32.rb +72 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_thread_history_display.rb +101 -0
- data/vendor/bundle/ruby/2.1.0/gems/rake-10.3.2/test/test_trace_output.rb +52 -0
- data/vendor/bundle/ruby/2.1.0/specifications/rake-10.3.2.gemspec +45 -0
- 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
|